sentry 工作流和集成之发布自动化(jenkins篇)(翻译)

1,343 阅读3分钟

发布自动化

岗哨释放管理可以使用任何持续集成和交付(CI/CD)平台或自动化服务器实现自动化。

发布管理自动化指南

  • Bitbucket Pipelines
  • CircleCI
  • Jenkins
  • Netlify
  • Travis CI
  • CLI

Jenkins

本指南将引导您完成在Jenkins中自动化岗哨释放管理和部署通知的过程。在Jenkins部署之后,您将能够识别可能是新错误的罪魁祸首的可疑提交。您还可以应用源代码映射来查看Sentry中的原始代码。

在开始之前,请通过安装存储库集成来确认您的Sentry项目已正确设置为跟踪提交元数据。一旦安装了它,并且添加了存储库,请返回本指南。如果您已经安装了存储库集成,就可以开始了。

创建哨兵内部集成

为了让Jenkins与Sentry安全地通信,您需要创建一个新的内部集成。在Sentry中,导航到“设置>开发人员设置>新建内部集成(Settings > Developer Settings > New Internal Integration.)”。

为新集成命名(例如,“Jenkins Deploy integration”)并指定必要的权限。在这种情况下,您需要“Release”的管理员访问权限和“Organization”的读访问权限。

有关作用域和API终结点的详细信息,请参阅有关API权限的完整文档。

单击“保存”,然后记录您的令牌,您将需要在下一节用到。

向Jenkins凭据添加令牌

要安全地访问Jenkins中的内部集成令牌,请将其存储为凭据:

  • 在Jenkins主页(经典Jenkins UI的仪表板)中,单击Credentials>System。

  • 在“系统”下,单击“全局凭据(无限制)”链接以访问此默认域。

  • 单击添加凭据。

  • 从“种类”字段中选择“机密文本”。

  • 给凭证一个ID(例如,“sentry auth token”),然后在Secret字段中粘贴内部集成令牌。

  • 单击“确定”保存凭据。

通知sentry部署

根据您用于构建和部署的Jenkins项目的类型,您需要遵循不同的步骤:

  • Pipeline (Jenkinsfile)
  • Freestyle project

有关下面的版本管理概念的更多详细信息,请参阅有关版本管理的完整文档。

Pipeline

如果您使用的是Jenkins管道,则需要在部署阶段之后添加一个包含以下代码片段的新阶段: pipeline { // ... stages {

        /// ...

        stage('Notify Sentry of deployment') {
            environment {
                SENTRY_AUTH_TOKEN = credentials('sentry-auth-token')
                SENTRY_ORG = 'sample-organization-slug'
                SENTRY_PROJECT = 'sample-project-slug'
                SENTRY_ENVIRONMENT = 'production'
            } 
            steps {
                // Install Sentry CLI
                sh 'curl -sL https://sentry.io/get-cli/ | bash'

                sh '''
                    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
                '''
            }
        }
    }
}

笔记:

  • 如果您没有部署JavaScript项目或使用其他方法将源映射发送到Sentry,请省略upload source maps行。

  • 如果无法安装存储库集成,请通过create release端点发送提交元数据或省略set commits行。

  • 凭据(“sentry-auth-token”)是指刚添加到Jenkins的凭据的ID。

  • sentry cli releases propose version默认为正在部署的提交的提交SHA。若要将此设置为其他版本,请将SENTRY_RELEASE修改为首选版本。

Freestyle Project

如果您使用的是自由式项目,则需要在部署后添加另一个生成步骤。

请确保添加绑定以将环境变量SENTRY_AUTH_TOKEN映射到在上一步中添加的内部集成令牌凭据。

  • 请确保添加绑定以将环境变量SENTRY_AUTH_TOKEN映射到在上一步中添加的内部集成令牌凭据。
  • 在部署步骤之后添加以下生成步骤:

curl -sL sentry.io/get-cli/ | bash || true

 export SENTRY_ORG=sample-organization-slug
 export SENTRY_PROJECT=sample-project-slug
 export SENTRY_ENVIRONMENT=production
 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

笔记:

  • 如果您没有部署JavaScript项目或使用其他方法将源映射发送到Sentry,请省略upload source maps行。

  • 如果无法安装存储库集成,请通过create release端点发送提交元数据或省略set commits行。

  • sentry cli releases propose version默认为正在部署的提交的提交SHA。若要将此设置为其他版本,请将SENTRY_RELEASE修改为首选版本。