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..e4d4f409 --- /dev/null +++ b/.github/workflows/sentry.yaml @@ -0,0 +1,53 @@ +name: Sentry Release + +on: + push: + branches: + - main + - develop + +jobs: + release: + runs-on: ubuntu-latest + environment: + name: sentry + + 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 (default to commit hash) + id: get_version + run: | + 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: 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_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} + SENTRY_ORG: ${{ secrets.SENTRY_ORG }} + SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }}