From 7561ad6cb5f793a8f841861890571d0328b0bb80 Mon Sep 17 00:00:00 2001 From: thePeras Date: Wed, 9 Oct 2024 23:45:18 +0100 Subject: [PATCH 1/3] ci: sentry release and source map uploads --- .github/workflows/release_version.yaml | 50 +++++++++++++++++++ .github/workflows/sentry.yaml | 66 ++++++++++++++++++++++++++ 2 files changed, 116 insertions(+) create mode 100644 .github/workflows/release_version.yaml create mode 100644 .github/workflows/sentry.yaml diff --git a/.github/workflows/release_version.yaml b/.github/workflows/release_version.yaml new file mode 100644 index 00000000..28713564 --- /dev/null +++ b/.github/workflows/release_version.yaml @@ -0,0 +1,50 @@ +name: Check Package Version + +on: + pull_request: + branches: + - main + +jobs: + check_version: + runs-on: ubuntu-latest + + steps: + - name: Checkout PR branch code + uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Set up Node.js + uses: actions/setup-node@v3 + with: + node-version: '20' + + - name: Get PR package version + id: pr_version + run: | + PR_VERSION=$(jq -r .version < package.json) + echo "::set-output name=pr_version::$PR_VERSION" + + - name: Fetch and checkout the main branch + run: | + git fetch origin main + git checkout origin/main + + - name: Compare PR versions + run: | + PR_VERSION=${{ steps.pr_version.outputs.pr_version }} + MAIN_VERSION=$(jq -r .version < package.json) + echo "Main branch version: $MAIN_VERSION" + echo "PR version: $PR_VERSION" + + version_greater() { + printf '%s\n%s' "$1" "$2" | sort -V | head -n1 | grep -q "$2" + } + + if version_greater "$PR_VERSION" "$MAIN_VERSION"; then + echo "Version is correct!" + else + echo "Error: PR version ($PR_VERSION) is not greater than main version ($MAIN_VERSION)." + exit 1 + fi diff --git a/.github/workflows/sentry.yaml b/.github/workflows/sentry.yaml new file mode 100644 index 00000000..b26e9765 --- /dev/null +++ b/.github/workflows/sentry.yaml @@ -0,0 +1,66 @@ +name: Sentry Release + +on: + push: + branches: + - main + - develop + +jobs: + release: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Set up Node.js + uses: actions/setup-node@v3 + with: + node-version: '20' + + - name: Install dependencies + run: yarn install + + - name: Build project + run: yarn build + + - name: Determine release version + id: get_version + run: | + VERSION=$(jq -r .version < package.json) + + # If the branch is develop, use the commit hash as the version + if [ "${{ github.ref }}" == "refs/heads/develop" ]; then + VERSION=$(git rev-parse --short HEAD) + fi + + echo "Version to be released: $VERSION" + echo "::set-output name=release_version::$VERSION" + + - name: Install Sentry CLI + run: npm install -g @sentry/cli + + - name: Create Sentry release + env: + SENTRY_ORG: ${{ secrets.SENTRY_ORG }} + SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }} + SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} + run: | + sentry-cli releases new ${{ steps.get_version.outputs.release_version }} + sentry-cli releases set-commits --auto ${{ steps.get_version.outputs.release_version }} + + - name: Upload source maps to Sentry + env: + SENTRY_ORG: ${{ secrets.SENTRY_ORG }} + SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }} + SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} + run: | + sentry-cli releases files ${{ steps.get_version.outputs.release_version }} upload-sourcemaps ./build + + - name: Finalize Sentry release + env: + SENTRY_ORG: ${{ secrets.SENTRY_ORG }} + SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }} + SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} + run: sentry-cli releases finalize ${{ steps.get_version.outputs.release_version }} From b7328dbe36040d12ca0e0410055893c7d6b58fba Mon Sep 17 00:00:00 2001 From: thePeras Date: Fri, 1 Nov 2024 11:06:49 +0000 Subject: [PATCH 2/3] Update sentry workflow to use the marketplace action --- .github/workflows/sentry.yaml | 39 +++++++++++------------------------ 1 file changed, 12 insertions(+), 27 deletions(-) diff --git a/.github/workflows/sentry.yaml b/.github/workflows/sentry.yaml index b26e9765..f5b40e76 100644 --- a/.github/workflows/sentry.yaml +++ b/.github/workflows/sentry.yaml @@ -25,42 +25,27 @@ jobs: - name: Build project run: yarn build - - name: Determine release version + - name: Determine release version (default to commit hash) id: get_version run: | - VERSION=$(jq -r .version < package.json) + VERSION=$(git rev-parse --short HEAD) - # If the branch is develop, use the commit hash as the version - if [ "${{ github.ref }}" == "refs/heads/develop" ]; then - VERSION=$(git rev-parse --short HEAD) + # Override version if on main branch to use package.json version + if [ "${{ github.ref }}" == "refs/heads/main" ]; then + VERSION=$(jq -r .version < package.json) fi echo "Version to be released: $VERSION" echo "::set-output name=release_version::$VERSION" - - name: Install Sentry CLI - run: npm install -g @sentry/cli - - - name: Create Sentry release - env: - SENTRY_ORG: ${{ secrets.SENTRY_ORG }} - SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }} - SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} - run: | - sentry-cli releases new ${{ steps.get_version.outputs.release_version }} - sentry-cli releases set-commits --auto ${{ steps.get_version.outputs.release_version }} - - - name: Upload source maps to Sentry + - name: Create and Finalize Sentry Release + uses: getsentry/action-release@v1 + with: + environment: ${{ github.ref == 'refs/heads/main' && 'production' || 'staging' }} + version: ${{ steps.get_version.outputs.release_version }} + sourcemaps: ./build + finalize: true env: - SENTRY_ORG: ${{ secrets.SENTRY_ORG }} - SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }} SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} - run: | - sentry-cli releases files ${{ steps.get_version.outputs.release_version }} upload-sourcemaps ./build - - - name: Finalize Sentry release - env: SENTRY_ORG: ${{ secrets.SENTRY_ORG }} SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }} - SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} - run: sentry-cli releases finalize ${{ steps.get_version.outputs.release_version }} From 019a7a80ccd7ccd917598048ce16c8c35b850294 Mon Sep 17 00:00:00 2001 From: thePeras Date: Sat, 2 Nov 2024 15:25:10 +0000 Subject: [PATCH 3/3] Create sentry environment --- .github/workflows/sentry.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/sentry.yaml b/.github/workflows/sentry.yaml index f5b40e76..e4d4f409 100644 --- a/.github/workflows/sentry.yaml +++ b/.github/workflows/sentry.yaml @@ -9,6 +9,8 @@ on: jobs: release: runs-on: ubuntu-latest + environment: + name: sentry steps: - name: Checkout code