jira与Jenkins集成

此集成提供了一种免费、简单、安全且可靠的方式,可将在防火墙后运行的 Jenkins 服务器与 Jira Software Cloud 或 Jira Service Management Cloud 连接起来。

这让您的团队对 Jira 中的每个问题都有更多的可见性和上下文,显示最新的构建状态或您的工作是否已成功部署到环境中。

您还可以使用此信息 使用 Jira 查询语言 (JQL) 搜索问题,回答诸如 “当前 sprint 中的哪些问题已部署到生产环境?”之类的问题。您甚至可以将这些作为快速过滤器添加到您的板上!

在将 Jenkins 连接到 Jira Software Cloud 之前,请检查以下事项:

  • 您是 Jira Cloud 站点的站点管理员。

  • 您是 Jenkins 的管理员,您可以安装、更新和删除插件。

  • 您可以 在源代码/存储库中编辑要使用此集成的管道的Jenkinsfile  。

  • 您的团队在他们的提交消息(用于部署信息)和分支名称(用于构建信息)中包含问题密钥(例如 FUSE-123)。如果您的团队尚未这样做,。 

为 Jenkins 安装 Jira Cloud 插件

  1. 登录到您的 Jenkins 服务器并导航到插件管理器。

  2. 选择“可用”选项卡并搜索“Atlassian Jira Software Cloud”。

  3. 安装插件。

开源插件托管在 GitHub 上。你可以在这里查看

在 Jira 中安装“Jenkins for Jira”应用

您可以通过 Jira Marketplace 安装“Jenkins for Jira”:

  1. 登录您的 Jira 站点并转到应用程序 > 探索更多应用程序

  2. 在搜索框中输入“Jenkins for Jira”。

  3. 单击“由 Atlassian 开发的 Jenkins for Jira”应用程序(如果未显示,您可能需要删除“热门趋势”过滤器)。

  4. 点击“获取应用程序”。

在 Jira 中设置 webhook

在您的 Jira 站点上安装“Jenkins for Jira”应用程序后,您需要设置一个 webhook:

  1. 在 Jira 中,转到应用 > 管理您的应用

  2. 在左侧边栏中的“应用程序”下,单击“Jenkins for Jira”应用程序的链接。

  3. 单击“连接 Jenkins 服务器”。

  4. 该应用程序会提醒您安装 Jenkins 插件。点击“下一步”。

  5. 输入 Jenkins 服务器的名称。

  6. 复制 webhook URL 以供以后使用。

  7. 复制秘密供以后使用。

将 Jenkins 连接到 webhook

使用 webhook URL 和 secret,您现在可以在 Jenkins 和 Jira 之间创建连接。

  1. 在 Jenkins 中,转到管理 Jenkins > 配置系统并滚动到 Jira Software Cloud Integration 部分。

  2. 选择添加 Jira 云站点 > Jira 云站点。将为您的站点名称、Webhook URL 和密码显示新字段。

  3. 输入以下详细信息:

    • 站点名称:您的 Jira Cloud 站点的 URL,例如yourcompany.atlassian.net

    • Webhook URL:您之前从 Jira 中的 Jenkins 应用程序复制的 Webhook URL。

    • 秘密:

      • 选择添加 > 詹金斯

        • 对于种类,选择秘密文本

        • 对于Secret,粘贴您之前从 Jira 中的 Jenkins 应用程序复制的密钥。

        • 对于Description,提供帮助您识别密钥的描述。

      • 秘密现在应该显示在下拉菜单中。选择您新创建的密钥。

  4. 选择测试连接以确保您的凭据对您的 Jira 站点有效。

  5. 单击保存

为 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 的运行将发送stgprod环境的“进行中”部署事件到所有已配置的 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 - StagingDeploy - Production阶段结束时向所有已配置的 Jira 站点发送“成功”或“失败”部署事件。

必须提供参数environmentIdenvironmentNameenvironmentTypeenvironmentType必须是以下之一:unmappeddevelopmenttestingstagingproduction

您可以提供参数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 部署。您可以按环境、受让人、问题类型等过滤或搜索以查看您的部署。如果您的团队正在使用发布和版本来组织您的工作,您还可以在发布功能中找到部署信息。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Meta.Qing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值