This guide walks you through the process of automating Sentry release management and deploy notifications in CircleCI. After deploying in CircleCI, you’ll be able to associate commits with releases. You'll also be able to apply source maps to see the original code in Sentry.
Before starting, confirm that your Sentry
For CircleCI 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, “CircleCI Deploy Integration”) and specify the necessary permissions. In this case, you need Admin access for “Release” and Read access for “Organization”.
For more details about scopes and API endpoints, see the full documentation on API Permissions.
Click "Save", then record your
Next, you'll need a few environment variables to configure the Sentry CLI:
SENTRY_AUTH_TOKEN- Your internal integrationtokenIn search, a key-value pair or raw search term. Also, a value used for authorization.
SENTRY_ORG- Your Sentry organization slug
SENTRY_PROJECT- Your SentryprojectRepresents your service in Sentry and allows you to scope events to a distinct application.slug
To access your internal integration token securely, store it as an environment variable on your project:
- In the CircleCI application, go to your project’s settings by clicking the gear icon on the Pipelines page, or the three dots on other pages in the application.
- Click on Environment Variables.
- Add a new variable by clicking the "Add Variable" button and enter
SENTRY_AUTH_TOKENas the name and your internal integration token as the value.
The other variables do not contain sensitive information, so you'll use the environment key to define them as environment variables in your config.yml file.
To automate your Sentry release management process, you'll need to add the
Create release and notify Sentry of deploy step below after your deploy step, either in a new job or at the end of your existing deploy job:
notify-sentry-deploy: executor: # Specify executor for running deploy job environment: SENTRY_ORG: sample-organization-slug SENTRY_PROJECT: sample-project-slug SENTRY_ENVIRONMENT: production steps: - checkout # ... - run: name: Create release and notify Sentry of deploy command: | curl -sL https://sentry.io/get-cli/ | bash export SENTRY_RELEASE=$(sentry-cli releases propose-version) sentry-cli releases new -p $SENTRY_PROJECT $SENTRY_RELEASE sentry-cli releases set-commits $SENTRY_RELEASE --auto sentry-cli releases files $SENTRY_RELEASE upload-sourcemaps path-to-sourcemaps-if-applicable sentry-cli releases finalize $SENTRY_RELEASE sentry-cli releases deploys $SENTRY_RELEASE new -e $SENTRY_ENVIRONMENT
For more details about the release management concepts in the snippet above, see the full documentation on release management.
- If you’re not deploying a projectRepresents your service in Sentry and allows you to scope events to a distinct application.that requires source maps or you've sent source maps to Sentry using another method, omit the
- If you can’t install a repository integration, send commit metadata using the create release endpoint or omit the
sentry-cli releases propose-versiondefaults to the commit SHA of the commit being deployed. To set this to a different version, modify
SENTRY_RELEASEto the preferred version.
Our documentation is open source and available on GitHub. Your contributions are welcome, whether fixing a typo (drat!) to suggesting an update ("yeah, this would be better").