此集成提供了一种免费、简单、安全且可靠的方式,可将在防火墙后运行的 Jenkins 服务器与 Jira Software Cloud 或 Jira Service Management Cloud 连接起来。
这让您的团队对 Jira 中的每个问题都有更多的可见性和上下文,显示最新的构建状态或您的工作是否已成功部署到环境中。
您还可以使用此信息 使用 Jira 查询语言 (JQL) 搜索问题,回答诸如 “当前 sprint 中的哪些问题已部署到生产环境?”之类的问题。您甚至可以将这些作为快速过滤器添加到您的板上!
在将 Jenkins 连接到 Jira Software Cloud 之前,请检查以下事项:
- 您是 Jira Cloud 站点的站点管理员。
- 您是 Jenkins 的管理员,您可以安装、更新和删除插件。
- 您可以 在源代码/存储库中编辑要使用此集成的管道的Jenkinsfile 。
- 您的团队在他们的提交消息(用于部署信息)和分支名称(用于构建信息)中包含问题密钥(例如 FUSE-123)。如果您的团队尚未这样做,。
将 Jira Software Cloud 与 Jenkins 链接
为 Jenkins 安装 Jira Cloud 插件
- 登录到您的 Jenkins 服务器并导航到插件管理器。
- 选择“可用”选项卡并搜索“Atlassian Jira Software Cloud”。
- 安装插件。
开源插件托管在 GitHub 上。你可以在这里查看。
在 Jira 中安装“Jenkins for Jira”应用
您可以通过 Jira Marketplace 安装“Jenkins for Jira”:
- 登录您的 Jira 站点并转到应用程序 > 探索更多应用程序。
- 在搜索框中输入“Jenkins for Jira”。
- 单击“由 Atlassian 开发的 Jenkins for Jira”应用程序(如果未显示,您可能需要删除“热门趋势”过滤器)。
- 点击“获取应用程序”。
在 Jira 中设置 webhook
在您的 Jira 站点上安装“Jenkins for Jira”应用程序后,您需要设置一个 webhook:
- 在 Jira 中,转到应用 > 管理您的应用。
- 在左侧边栏中的“应用程序”下,单击“Jenkins for Jira”应用程序的链接。
- 单击“连接 Jenkins 服务器”。
- 该应用程序会提醒您安装 Jenkins 插件。点击“下一步”。
- 输入 Jenkins 服务器的名称。
- 复制 webhook URL 以供以后使用。
- 复制秘密供以后使用。
将 Jenkins 连接到 webhook
使用 webhook URL 和 secret,您现在可以在 Jenkins 和 Jira 之间创建连接。
- 在 Jenkins 中,转到管理 Jenkins > 配置系统并滚动到 Jira Software Cloud Integration 部分。
- 选择添加 Jira 云站点 > Jira 云站点。将为您的站点名称、Webhook URL 和密码显示新字段。
- 输入以下详细信息:
- 站点名称:您的 Jira Cloud 站点的 URL,例如yourcompany.atlassian.net。
- Webhook URL:您之前从 Jira 中的 Jenkins 应用程序复制的 Webhook URL。
- 秘密:
- 选择添加 > 詹金斯
- 对于种类,选择秘密文本。
- 对于Secret,粘贴您之前从 Jira 中的 Jenkins 应用程序复制的密钥。
- 对于Description,提供帮助您识别密钥的描述。
- 秘密现在应该显示在下拉菜单中。选择您新创建的密钥。
- 选择测试连接以确保您的凭据对您的 Jira 站点有效。
- 单击保存。
为 Jenkins 使用 Jira 云插件
此插件会将构建和部署事件发送到 Jira,以便它们在您的 Jira 问题、部署时间线和发布功能中可见。
要将信息从 Jenkins 发送到 Jira,您的团队必须在其提交消息(用于部署信息)和分支名称(用于构建信息)中包含 Jira 问题密钥(例如 FUSE-123)。每当管道在 Jenkins 中运行时,插件都会在分支名称中查找 Jira 问题密钥并提交消息。如果找到问题密钥,它将向 Jira 发送构建和部署信息。如果找不到问题密钥,Jenkins 插件将不会向 Jira 发送任何内容。
自动发送构建
要自动发送构建事件而无需向 Jenkinsfiles 添加任何内容,请转到管理Jenkins > 配置系统并启用复选框“自动发送构建”。
启用此功能后,一旦管道运行开始,插件将向 Jira 发送“进行中”构建事件,一旦管道成功完成或因错误停止,插件将向 Jira 发送“成功”或“失败”构建事件。
如果您还为构建指定了正则表达式,则插件只会在具有匹配名称的构建步骤完成后向 Jira 发送构建事件。
正则表达式^build$将匹配以下Jenkinsfile中的构建阶段,例如:
pipeline {
agent any
stages {
stage('build') {
steps {
echo 'build done'
}
}
}
}
每当此 Jenkinsfile 中的管道运行时,它都会在构建阶段的开始和结束时向所有已配置的 Jira Cloud 站点发送构建事件。
自动发送部署
要自动发送部署事件而无需向 Jenkinsfiles 添加任何内容,请转到管理 Jenkins > 配置系统并启用复选框“自动发送部署”。
启用此功能后,一旦名称与指定正则表达式匹配的构建步骤开始,插件将向 Jira 发送“进行中”部署事件,并在构建步骤完成后发送“成功”或“失败”部署事件.
为此,Jenkinsfile 中的部署步骤必须在其名称中包含环境名称。正则表达式必须包含片段(?<envName>.*)以匹配环境名称,以便插件可以从构建步骤名称中提取环境名称。
让我们看一个示例Jenkinsfile:
pipeline {
agent any
stages {
stage('deployments') {
parallel {
stage('deploy to stg') {
steps {
echo 'stg deployment done'
}
}
stage('deploy to prod') {
steps {
echo 'prod deployment done'
}
}
}
}
}
}
^deploy to (?<envName>.*)$,则上述 Jenkinsfile 的运行将发送stg和prod环境的“进行中”部署事件到所有已配置的 Jira Cloud 站点,然后在构建步骤完成后进行相应的“成功”部署事件。
显式发送构建
如果您想更好地控制何时发送构建事件,可以使用jiraSendBuildInfo构建步骤:
pipeline {
agent any
stages {
stage('Build') {
steps {
echo 'Building...'
}
post {
always {
// previous to version 2.0.0 you must provide parameters to this command (see below)!
jiraSendBuildInfo()
}
}
}
}
}
在构建阶段成功完成或出现错误后,这将向所有已配置的 Jira Cloud 站点发送“成功”或“失败”构建事件。Jenkins 插件会自动从分支名称中提取 Jira 问题密钥。
您还可以指定 Jira 站点 URL 并指示插件仅将构建事件发送到此 Jira 站点(而不是所有已配置的 Jira 站点)。
pipeline {
agent any
stages {
stage('Build') {
steps {
echo 'Building...'
}
post {
always {
jiraSendBuildInfo site: 'example.atlassian.net', branch: 'TEST-123-awesome-feature'
}
}
}
}
}
显式发送部署
如果您想更好地控制何时发送部署事件,可以使用jiraSendDeploymentInfo构建步骤:
pipeline {
agent any
stages {
stage('Deploy - Staging') {
when {
branch 'master'
}
steps {
echo 'Deploying to Staging from master...'
}
post {
always {
jiraSendDeploymentInfo environmentId: 'us-stg-1', environmentName: 'us-stg-1', environmentType: 'staging'
}
}
}
stage('Deploy - Production') {
when {
branch 'master'
}
steps {
echo 'Deploying to Production from master...'
}
post {
always {
jiraSendDeploymentInfo environmentId: 'us-prod-1', environmentName: 'us-prod-1', environmentType: 'production'
}
}
}
}
这将在Deploy - Staging和Deploy - Production阶段结束时向所有已配置的 Jira 站点发送“成功”或“失败”部署事件。
您必须提供参数environmentId、environmentName和environmentType。environmentType必须是以下之一:unmapped、development、testing、staging、production。
您可以提供参数site以指定将部署事件发送到单个 Jira 站点,而不是所有已配置的 Jira 站点。
当多个 Jira 站点连接到 Jenkins 服务器时,带有enableGating:true的jiraSendDeploymentInfo需要site参数。可以在此处找到有关部署门控的更多详细信息。
您还可以使用branch参数指定一个分支,以定义要从中提取 Jira 问题密钥以连接部署的分支。
完整的 Jenkinsfile 示例
您可以像下面的Jenkinsfile一样混合构建和部署:
pipeline {
agent any
stages {
stage('Build') {
steps {
echo 'Building...'
}
post {
always {
jiraSendBuildInfo site: 'example.atlassian.net'
}
}
}
stage('Deploy - Staging') {
when {
branch 'master'
}
steps {
echo 'Deploying to Staging from master...'
}
post {
always {
jiraSendDeploymentInfo environmentId: 'us-stg-1', environmentName: 'us-stg-1', environmentType: 'staging'
}
}
}
stage('Deploy - Production') {
when {
branch 'master'
}
steps {
echo 'Deploying to Production from master...'
}
post {
always {
jiraSendDeploymentInfo environmentId: 'us-prod-1', environmentName: 'us-prod-1', environmentType: 'production'
}
}
}
}
}
在 Jira 中查看开发信息
每当您在连接的源代码管理工具(如 Bitbucket 或 GitHub)中提交或合并拉取请求时,它应该运行您为该存储库指定的 Jenkins 管道。只要您的团队在其拉取请求、提交消息和分支名称中包含问题密钥,您的 Jira 问题的开发面板就会更新以显示任何相关的构建和部署信息。详细了解如何。
如果您在 Jira 项目中启用了部署功能,“部署”页面将在时间线上显示所有 Jenkins 部署。您可以按环境、受让人、问题类型等过滤或搜索以查看您的部署。如果您的团队正在使用发布和版本来组织您的工作,您还可以在发布功能中找到部署信息。