GitLab ChatOps

原文:https://docs.gitlab.com/ee/ci/chatops/README.html

GitLab ChatOps

版本历史

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

How GitLab ChatOps works

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

  • 要执行的<job name> .
  • The <job arguments>.

ChatOps 将以下CI / CD 变量传递给作业:

  • CHAT_INPUT包含任何其他参数.
  • CHAT_CHANNEL设置为触发该动作的通道的名称.

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

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

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

Best practices for ChatOps CI jobs

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

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

Controlling the ChatOps reply

单个命令的作业输出将作为答复发送到通道. 例如,以下任务的聊天回复是频道中的Hello World

hello-world:
  stage: chatops
  only: [chat]
  script:
    - echo "Hello World" 

包含多个命令(或before_script )的作业将在聊天回复中返回其他内容. 在这些情况下,命令和它们的输出都包括在内,并且命令以 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:

ls:
  stage: chatops
  only: [chat]
  script:
    - echo "This command will not be shown."
    - echo -e "section_start:$( date +%s ):chat_reply\r\033[0K\n$( ls -la )\nsection_end:$( date +%s ):chat_reply\r\033[0K" 

GitLab ChatOps examples

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

GitLab ChatOps icon

官方的 GitLab ChatOps 图标可以下载. 您可以在此处找到并下载官方的 GitLab ChatOps 图标.

GitLab ChatOps bot icon

Copyright © 温玉 2021 | 浙ICP备2020032454号 all right reserved,powered by Gitbook该文件修订时间: 2021-03-27 13:48:25

results matching ""

    No results matching ""