Help us learn about your current experience with the documentation. Take the survey.

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 个自动化工作流:

  1. 在 Jira 中创建 GitLab 事件时,在 GitLab 中创建相应的事件。
  2. 在 Jira 中解决 GitLab 事件时,在 GitLab 中解决相应的事件。

事件创建

展示 Jira 事件如何在 GitLab 中触发警报的工作流。

事件解决

展示已解决的 Jira 事件如何在 GitLab 中触发事件解决的工作流。

设置

前置条件

本指南假设您已具备:

  • GitLab Ultimate 许可证
  • 一个用于复制事件的 Jira 项目

Jira 根据 Jira 许可证对自动化运行的频率设置了限制。截至目前,限制如下:

版本 限制
免费 每月 100 次运行
标准 每月 1700 次运行
高级 每用户每月 1000 次运行
企业 无限次运行

每次事件创建计为 1 次运行,每次事件解决计为 1 次运行。

GitLab 警报端点

首先,我们需要创建一个 HTTP 端点,该端点可以被触发以在 GitLab 中创建/解决警报,进而创建/解决事件。

  1. 转到您希望创建 Jira 事件的 GitLab 项目。从侧边栏,前往 设置 > 监控。展开 警报 部分。
  2. 警报 下,切换到 警报设置 选项卡。勾选以下复选框,然后点击 保存更改
    • 创建事件。为每个触发的警报创建事件。
    • 当恢复警报通知解决警报时,自动关闭关联的事件
  3. 警报 下,切换到 当前集成 选项卡。点击 添加新集成。将 集成类型 设置为 HTTP 端点,为其命名(例如 Jira 事件同步),并将 启用集成 设置为 激活。设置好 Jira 自动化工作流后,我们将回来自定义警报负载映射。
  4. 点击 保存集成。应该会出现一条消息显示"集成已成功保存"。点击 查看 URL 和授权密钥
  5. 在设置 Jira 自动化工作流和 Lambda 函数时,我们需要端点 URL 和授权密钥,因此请保存这些信息以备后用。

Jira 事件创建工作流

为了在 Jira 事件创建时自动触发 GitLab 警报端点,我们将使用 Jira 自动化

  1. 转到管理事件的 Jira 项目。从侧边栏,前往 项目设置 > 自动化(您可能需要向下滚动一点才能找到它)。

  2. 在这里,我们可以管理 Jira 自动化工作流。在右上角,点击 创建规则

  3. 对于触发器,搜索并选择 问题已创建。点击 保存

  4. 接下来,选择 IF:添加条件。在这里,您可以指定要检查的条件,以确定创建的问题是否与事件相关。在本指南中,我们将选择 问题字段条件。在 字段 下,我们将选择 摘要条件 将设置为 包含,值将设置为 incident。点击 保存

  5. 设置好触发器和条件后,选择 THEN:添加操作。搜索并选择 发送 Web 请求

  6. Web 请求 URL 设置为您之前部分的 GitLab Webhook URL

  7. 请参阅 GitLab 文档 此处 了解端点身份验证选项。在本指南中,我们将使用 Bearer 授权头 方法。在您的 Jira 自动化配置中,添加以下标头:

    名称
    Authorization Bearer <来自上一部分的 GitLab 端点 auth 密钥>
    Content-Type application/json
    • 您可能希望将 Authorization 标头设置为"隐藏"。
  8. 确保 HTTP 方法 设置为 POST,并将 Web 请求体 设置为 问题数据(Jira 格式)

  9. 最后,点击 保存,为您的自动化命名(例如 Jira 事件创建),然后点击 启用。在右上角,点击 返回列表

  10. 您需要做的最后一件事是将 Jira 负载值映射到 GitLab 警报参数。如果您计划为 服务恢复时间 指标也设置事件解决,请暂时跳过此步骤。否则,请跳转到 将 Jira 负载值映射到 GitLab 警报参数 并按照那里的步骤操作。

一旦映射了负载值,您在 Jira 中创建的事件也会在 GitLab 中创建。这将使您能够看到 变更失败率 DORA 指标。

Jira 事件解决工作流

如上所述创建另一个 Jira 自动化工作流,但有以下更改:

  1. 将触发器设置为 问题已转换。“从状态"字段可以留空。“到状态"字段可以设置为表示已解决事件的任何状态(根据您的工作流程,例如 ClosedDoneResolvedCompleted)。
  2. 确保适当地命名自动化(例如 Jira 事件关闭)。

将 Jira 负载值映射到 GitLab 警报参数

  1. 创建 Jira 自动化工作流后,点击您刚刚创建的工作流,然后选择 THEN:发送 Web 请求
  2. 展开 验证您的 Web 请求配置 部分,输入一个 已解决 的问题密钥进行测试(您必须有一个可以使用的问题密钥)。点击 验证
  3. 展开 请求 POST 部分,然后展开 负载 部分。复制整个负载。
  4. 返回您的 GitLab 项目,前往 设置 > 监控 > 警报 > 当前集成。点击您之前创建的集成旁边的"设置"图标,然后切换到 配置详情 选项卡。
  5. 自定义警报负载映射 下,粘贴您在第 3 步中从 Jira 复制的负载。然后点击 解析负载字段
  6. 按如下所示映射字段:
    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 步中使用 已解决 的问题密钥进行测试。

  1. 最后,点击 保存集成

至此,您在 Jira 中解决的事件也会在 GitLab 中解决。这将使您能够看到 服务恢复时间 DORA 指标。

资源