83 lines
2.6 KiB
YAML
83 lines
2.6 KiB
YAML
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 }}"
|