name: Sentry Release # Reusable workflow that tags a release in our self-hosted Sentry, # optionally uploads source-maps, correlates commits and marks a deploy. # Consumed via `uses: ./.github/workflows/_sentry-release.yml`. on: workflow_call: inputs: project: description: "Sentry project slug (boilerplate-api|boilerplate-worker|boilerplate-web)" required: true type: string environment: description: "Deployment environment label (production|staging|preview)" required: true type: string sourcemaps-path: description: "Directory containing source-maps to upload, or 'none'" required: false type: string default: "none" sourcemaps-artifact: description: "Optional workflow artifact to download before source-map upload, or 'none'" required: false type: string default: "none" secrets: SENTRY_AUTH_TOKEN: description: "Sentry auth token (project:releases scope)" required: true SENTRY_ORG: description: "Sentry organisation slug" required: true SENTRY_URL: description: "Sentry self-hosted base URL" required: true jobs: release: name: Sentry release (${{ inputs.project }}) runs-on: ubuntu-latest timeout-minutes: 15 steps: - name: Checkout code uses: actions/checkout@v4 with: fetch-depth: 0 - name: Enable Corepack run: corepack enable - name: Prepare pnpm 10.33.0 run: corepack prepare pnpm@10.33.0 --activate - name: Download source-map artifact if: ${{ inputs.sourcemaps-artifact != 'none' }} uses: actions/download-artifact@v4 with: name: ${{ inputs.sourcemaps-artifact }} path: ${{ inputs.sourcemaps-path }} - name: Verify sentry-cli is reachable env: SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} SENTRY_ORG: ${{ secrets.SENTRY_ORG }} SENTRY_URL: ${{ secrets.SENTRY_URL }} run: | node -v npx --yes @sentry/cli@2.41.1 --version - name: Tag Sentry release env: SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} SENTRY_ORG: ${{ secrets.SENTRY_ORG }} SENTRY_URL: ${{ secrets.SENTRY_URL }} run: | bash scripts/ci/sentry-release.sh \ --project "${{ inputs.project }}" \ --environment "${{ inputs.environment }}" \ --release "${{ github.sha }}" \ --sourcemaps "${{ inputs.sourcemaps-path }}"