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 }}