Important
This action is currently only available for Linux runners. See this issue for more details.
Automatically create a Sentry release in a workflow.
A release is a version of your code that can be deployed to an environment. When you give Sentry information about your releases, you unlock a number of new features:
- Determine the issues and regressions introduced in a new release
- Predict which commit caused an issue and who is likely responsible
- Resolve issues by including the issue number in your commit message
- Receive email notifications when your code gets deployed
Additionally, releases are used for applying source maps to minified JavaScript to view original, untransformed source code. You can learn more about releases in the releases documentation.
- feat(sourcemaps): Add inject option to inject debug ids into source files and sourcemaps
A new option to inject Debug IDs into source files and sourcemaps was added to the action to ensure proper un-minifaction of your stacktraces. We strongly recommend enabling this by setting inject: true
in your action alongside providing a path to sourcemaps.
Please refer to the release page for the latest release notes.
Note
You have to be an admin in your Sentry org to create this.
For this action to communicate securely with Sentry, you'll need to create an organization auth token.
Copy the generated token and use it as your SENTRY_AUTH_TOKEN
. We recommend storing it as an encrypted secret.
Adding the following to your workflow will create a new Sentry release and tell Sentry that you are deploying to the production
environment.
Important
Make sure you are using at least v3 of actions/checkout with fetch-depth: 0
, issues commonly occur with older versions.
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Create Sentry release
uses: getsentry/action-release@v1
env:
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
SENTRY_ORG: ${{ secrets.SENTRY_ORG }}
SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }}
# SENTRY_URL: https://sentry.io/
with:
environment: production
name | description | default |
---|---|---|
SENTRY_AUTH_TOKEN |
[Required] Authentication token for Sentry. See installation. | - |
SENTRY_ORG |
[Required] The slug of the organization name in Sentry. | - |
SENTRY_PROJECT |
The slug of the project name in Sentry. One of SENTRY_PROJECT or projects is required. |
- |
SENTRY_URL |
The URL used to connect to Sentry. (Only required for Self-Hosted Sentry) | https://sentry.io/ |
name | description | default |
---|---|---|
environment |
Set the environment for this release. E.g. "production" or "staging". Omit to skip adding deploy to release. | - |
inject |
Injects Debug IDs into source files and sourcemaps. We strongly recommend enabling this to ensure proper un-minifaction of your stacktraces. | false |
sourcemaps |
Space-separated list of paths to JavaScript sourcemaps. Omit to skip uploading sourcemaps. | - |
finalize |
When false, omit marking the release as finalized and released. | true |
ignore_missing |
When the flag is set and the previous release commit was not found in the repository, will create a release with the default commits count instead of failing the command. | false |
ignore_empty |
When the flag is set, command will not fail and just exit silently if no new commits for a given release have been found. | false |
dist |
Unique identifier for the distribution, used to further segment your release. Usually your build number. | - |
started_at |
Unix timestamp of the release start date. Omit for current time. | - |
version |
Identifier that uniquely identifies the releases. Note: the refs/tags/ prefix is automatically stripped when version is github.ref . |
${{ github.sha }} |
version_prefix |
Value prepended to auto-generated version. For example "v". | - |
set_commits |
Specify whether to set commits for the release. Either "auto" or "skip". | "auto" |
projects |
Space-separated list of paths of projects. When omitted, falls back to the environment variable SENTRY_PROJECT to determine the project. |
- |
url_prefix |
Adds a prefix to source map urls after stripping them. | - |
strip_common_prefix |
Will remove a common prefix from uploaded filenames. Useful for removing a path that is build-machine-specific. | false |
working_directory |
Directory to collect sentry release information from. Useful when collecting information from a non-standard checkout directory. | - |
disable_telemetry |
The action sends telemetry data and crash reports to Sentry. This helps us improve the action. You can turn this off by setting this flag. | false |
-
Create a new Sentry release for the
production
environment, inject Debug IDs into JavaScript source files and sourcemaps and upload them from the./dist
directory.- uses: getsentry/action-release@v1 with: environment: 'production' inject: true sourcemaps: './dist'
-
Create a new Sentry release for the
production
environment of your project at versionv1.0.1
.- uses: getsentry/action-release@v1 with: environment: 'production' version: 'v1.0.1'
-
Create a new Sentry release for Self-Hosted Sentry
- uses: getsentry/action-release@v1 env: SENTRY_URL: https://sentry.example.com/
See the Contributing Guide.
See the License File
Suggestions and issues can be posted on the repository's issues page.
-
Forgetting to include the required environment variables (
SENTRY_AUTH_TOKEN
,SENTRY_ORG
, andSENTRY_PROJECT
), yields an error that looks like:Environment variable SENTRY_ORG is missing an organization slug
-
Building and running this action locally on an unsupported environment yields an error that looks like:
Syntax error: end of file unexpected (expecting ")")
-
When adding the action, make sure to first checkout your repo with
actions/checkout@v3
. Otherwise it could fail at thepropose-version
step with the message:error: Could not automatically determine release name
-
In
actions/checkout@v3
the default fetch depth is 1. If you're getting the error message:error: Could not find the SHA of the previous release in the git history. Increase your git clone depth.
you can fetch all history for all branches and tags by setting the
fetch-depth
to zero like so:- uses: actions/checkout@v3 with: fetch-depth: 0