GitLab ChatOps

GitLab ChatOps

版本历史

GitLab ChatOps 提供了一种通过 Slack 等聊天服务与 CI / CD 作业进行交互的方法. 许多组织的讨论,协作和故障排除都是在聊天服务中进行的. 拥有一种方法来运行 CI / CD 作业并将输出回传到渠道,可以极大地增强团队的工作流程.

GitLab ChatOps 是基于GitLab CI / CD和构建的. ChatOps 使用以下参数为斜杠命令提供操作:

  • 要执行的<job name> .
  • The <job arguments>.
  • CHAT_INPUT包含任何其他参数.
  • CHAT_CHANNEL设置为触发该动作的通道的名称.

当执行时,ChatOps 查找指定的作业名称,并尝试将其与的相应作业匹配. 如果在master上找到匹配的作业,则计划仅包含该作业的管道. 作业完成后:

  • 如果作业在30 分钟内完成 ,则该作业必须使用Slack API将数据发送到通道.

要使用命令,您必须具有 . 如果不能从聊天中触发某项工作,则可以将其设置为下列except: [chat] .

由于 ChatOps 是基于 GitLab CI / CD 构建的,因此该作业具有可用的所有相同功能. 创建 ChatOps 作业时,请考虑以下最佳做法:

  • GitLab 强烈建议您only: [chat]设置only: [chat]以便该作业不会作为标准 CI 管道的一部分运行.
  • 如果作业设置为以下when: manual ,则 ChatOps 将创建管道,但是作业等待启动.
  • ChatOps 为访问控制提供了有限的支持. 如果触发斜杠命令的用户在项目中具有” 开发人员”访问权限或更高权限 ,则作业将运行. 作业本身可以使用现有的例如GITLAB_USER_ID来执行其他权限验证,但是可以覆盖这些变量.

包含多个命令(或 )的作业将在聊天回复中返回其他内容. 在这些情况下,命令和它们的输出都包括在内,并且命令以 ANSI 颜色代码包装.

To selectively reply with the output of one command, its output must be bounded by the chat_reply section. For example, the following job lists the files in the current directory:

  1. ls:
  2. stage: chatops
  3. only: [chat]
  4. script:

GitLab.com 团队创建了一个的存储库,它们用于与我们的 GitLab 生产实例进行交互. 其他 GitLab 实例的管理员可能会发现它们很有用. 它们可以作为您可以编写以与自己的应用程序进行交互的 ChatOps 脚本的灵感.