https://github.com/mits87/sentry-release
GitHub Action for creating a release on Sentry
https://github.com/mits87/sentry-release
Last synced: about 1 year ago
JSON representation
GitHub Action for creating a release on Sentry
- Host: GitHub
- URL: https://github.com/mits87/sentry-release
- Owner: mits87
- License: apache-2.0
- Created: 2021-07-13T18:52:56.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2021-07-13T19:13:08.000Z (almost 5 years ago)
- Last Synced: 2025-02-04T15:19:34.730Z (over 1 year ago)
- Language: TypeScript
- Size: 113 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING
- License: LICENSE
Awesome Lists containing this project
README
# Sentry Release GitHub Action
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](https://docs.sentry.io/workflow/releases).
## Prerequisites
#### Create a Sentry Internal Integration
For this action to communicate securely with Sentry, you'll need to create a new internal integration. In Sentry, navigate to: _Settings > Developer Settings > New Internal Integration_.
Give your new integration a name (for example, "GitHub Action Release Integration”) and specify the necessary permissions. In this case, we need Admin access for “Release” and Read access for “Organization”.

Click “Save” at the bottom of the page and grab your token, which you’ll use as your `SENTRY_AUTH_TOKEN`. We recommend you store this as an [encrypted secret](https://docs.github.com/en/actions/configuring-and-managing-workflows/creating-and-storing-encrypted-secrets).
## Usage
Adding the following to your workflow will create a new Sentry release and tell Sentry that you are deploying to the `production` environment.
```yaml
- uses: actions/checkout@v2
- name: Create Sentry release
uses: mits87/sentry-release@v1
env:
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
SENTRY_ORG: ${{ secrets.SENTRY_ORG }}
SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }}
with:
environment: production
```
### Inputs
#### Environment Variables
The following are all _required_.
|name|description|
|---|---|
|`SENTRY_AUTH_TOKEN`|Authentication token for Sentry. See [installation](#create-a-sentry-internal-integration).|
|`SENTRY_ORG`|The slug of the organization name in Sentry.|
|`SENTRY_PROJECT`|The slug of the project name in Sentry.|
#### Parameters
|name|description|default|
|---|---|---|
|`environment`|Set the environment for this release. E.g. "production" or "staging". Omit to skip adding deploy to release.|-|
|`finalize`|When false, omit marking the release as finalized and released.|`true`|
|`sourcemaps`|Space-separated list of paths to JavaScript sourcemaps. Omit to skip uploading sourcemaps.|-|
|`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.|-|
### Examples
- Create a new Sentry release for the `production` environment and upload JavaScript source maps from the `./lib` directory.
```yaml
- uses: mits87/sentry-release@v1
with:
environment: 'production'
sourcemaps: './lib'
```
- Create a new Sentry release for the `production` environment of your project at version `v1.0.1`.
```yaml
- uses: mits87/sentry-release@v1
with:
environment: 'production'
version: 'v1.0.1'
```
## Troubleshooting
Suggestions and issues can be posted on the repository's
[issues page](https://github.com/mits87/sentry-release/issues).
- Forgetting to include the required environment variables
(`SENTRY_AUTH_TOKEN`, `SENTRY_ORG`, and `SENTRY_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@v2`.
Otherwise it could fail at the `propose-version` step with the message:
```
error: Could not automatically determine release name
```
- In `actions/checkout@v2` 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@v2
with:
fetch-depth: 0
```
## Contributing
See the [Contributing Guide](https://github.com/mits87/sentry-release/blob/master/CONTRIBUTING).
## License
See the [License File](https://github.com/mits87/sentry-release/blob/master/LICENSE).