Jira 到 GitLab DORA 集成
- Tier: Ultimate
- Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
借助 GitLab,您可以获取 DORA 指标 的可见性,帮助您衡量 DevOps 性能。这 4 个指标是:
- 部署频率:每天平均部署到生产环境的次数
- 变更前置时间:成功将提交交付到生产环境所需的秒数(从代码提交到代码在生产环境中成功运行)
- 变更失败率:给定时间段内导致生产环境事件的部署百分比
- 服务恢复时间:事件在生产环境中保持开放状态的中位数时间
虽然前两个指标由 GitLab CI/CD 和 Merge Requests 生成,但后两个指标依赖于创建 GitLab 事件。
对于使用 Jira 进行事件跟踪的团队来说,这意味着需要实时将事件从 Jira 复制到 GitLab。本项目将指导您设置该复制功能。
注意:存在类似的集成用于问题复制以生成价值流分析(Value Stream Analytics)指标(前置时间、创建的问题和关闭的问题)。如果您对 VSA 指标的问题复制感兴趣,请参考 Jira 到 GitLab VSA 集成。
架构
我们需要创建 2 个自动化工作流:
- 在 Jira 中创建 GitLab 事件时,在 GitLab 中创建相应的事件。
- 在 Jira 中解决 GitLab 事件时,在 GitLab 中解决相应的事件。
事件创建
事件解决
设置
前置条件
本指南假设您已具备:
- GitLab Ultimate 许可证
- 一个用于复制事件的 Jira 项目
Jira 根据 Jira 许可证对自动化运行的频率设置了限制。截至目前,限制如下:
| 版本 | 限制 |
|---|---|
| 免费 | 每月 100 次运行 |
| 标准 | 每月 1700 次运行 |
| 高级 | 每用户每月 1000 次运行 |
| 企业 | 无限次运行 |
每次事件创建计为 1 次运行,每次事件解决计为 1 次运行。
GitLab 警报端点
首先,我们需要创建一个 HTTP 端点,该端点可以被触发以在 GitLab 中创建/解决警报,进而创建/解决事件。
- 转到您希望创建 Jira 事件的 GitLab 项目。从侧边栏,前往 设置 > 监控。展开 警报 部分。
- 在 警报 下,切换到 警报设置 选项卡。勾选以下复选框,然后点击 保存更改:
- 创建事件。为每个触发的警报创建事件。
- 当恢复警报通知解决警报时,自动关闭关联的事件
- 在 警报 下,切换到 当前集成 选项卡。点击 添加新集成。将 集成类型 设置为
HTTP 端点,为其命名(例如Jira 事件同步),并将 启用集成 设置为 激活。设置好 Jira 自动化工作流后,我们将回来自定义警报负载映射。 - 点击 保存集成。应该会出现一条消息显示"集成已成功保存"。点击 查看 URL 和授权密钥。
- 在设置 Jira 自动化工作流和 Lambda 函数时,我们需要端点 URL 和授权密钥,因此请保存这些信息以备后用。
Jira 事件创建工作流
为了在 Jira 事件创建时自动触发 GitLab 警报端点,我们将使用 Jira 自动化。
-
转到管理事件的 Jira 项目。从侧边栏,前往 项目设置 > 自动化(您可能需要向下滚动一点才能找到它)。
-
在这里,我们可以管理 Jira 自动化工作流。在右上角,点击 创建规则。
-
对于触发器,搜索并选择 问题已创建。点击 保存。
-
接下来,选择 IF:添加条件。在这里,您可以指定要检查的条件,以确定创建的问题是否与事件相关。在本指南中,我们将选择 问题字段条件。在 字段 下,我们将选择 摘要,条件 将设置为 包含,值将设置为
incident。点击 保存。 -
设置好触发器和条件后,选择 THEN:添加操作。搜索并选择 发送 Web 请求。
-
将 Web 请求 URL 设置为您之前部分的 GitLab Webhook URL。
-
请参阅 GitLab 文档 此处 了解端点身份验证选项。在本指南中,我们将使用 Bearer 授权头 方法。在您的 Jira 自动化配置中,添加以下标头:
名称 值 Authorization Bearer <来自上一部分的 GitLab 端点 auth 密钥> Content-Type application/json- 您可能希望将
Authorization标头设置为"隐藏"。
- 您可能希望将
-
确保 HTTP 方法 设置为 POST,并将 Web 请求体 设置为 问题数据(Jira 格式)。
-
最后,点击 保存,为您的自动化命名(例如
Jira 事件创建),然后点击 启用。在右上角,点击 返回列表。 -
您需要做的最后一件事是将 Jira 负载值映射到 GitLab 警报参数。如果您计划为 服务恢复时间 指标也设置事件解决,请暂时跳过此步骤。否则,请跳转到 将 Jira 负载值映射到 GitLab 警报参数 并按照那里的步骤操作。
一旦映射了负载值,您在 Jira 中创建的事件也会在 GitLab 中创建。这将使您能够看到 变更失败率 DORA 指标。
Jira 事件解决工作流
如上所述创建另一个 Jira 自动化工作流,但有以下更改:
- 将触发器设置为 问题已转换。“从状态"字段可以留空。“到状态"字段可以设置为表示已解决事件的任何状态(根据您的工作流程,例如
Closed、Done、Resolved、Completed)。 - 确保适当地命名自动化(例如
Jira 事件关闭)。
将 Jira 负载值映射到 GitLab 警报参数
- 创建 Jira 自动化工作流后,点击您刚刚创建的工作流,然后选择 THEN:发送 Web 请求。
- 展开 验证您的 Web 请求配置 部分,输入一个 已解决 的问题密钥进行测试(您必须有一个可以使用的问题密钥)。点击 验证。
- 展开 请求 POST 部分,然后展开 负载 部分。复制整个负载。
- 返回您的 GitLab 项目,前往 设置 > 监控 > 警报 > 当前集成。点击您之前创建的集成旁边的"设置"图标,然后切换到 配置详情 选项卡。
- 在 自定义警报负载映射 下,粘贴您在第 3 步中从 Jira 复制的负载。然后点击 解析负载字段。
- 按如下所示映射字段:
GitLab 警报键 负载警报键 标题 issue.fields.summary 描述 issue.fields.status.description 结束时间 issue.fields.resolutiondate1 监控工具 issue.fields.reporter.accountType 严重性 issue.fields.priority.name 指纹 issue.key 环境 issue.fields.project.name
1 只有在设置了事件解决自动化时才需要此字段。如果此字段未作为选项出现,请确保在第 2 步中使用 已解决 的问题密钥进行测试。
- 最后,点击 保存集成。
至此,您在 Jira 中解决的事件也会在 GitLab 中解决。这将使您能够看到 服务恢复时间 DORA 指标。