MR工作流自动化

# 介绍

在日常编码工作中,一般都会有这样一个过程:

在 MR 相关环节有一些需要手动操作的痛点:

  • 提交了 MR,评审人未注意到,长时间无人评审,找人评审
  • 评审通过、流水线执行完,MR 可合并,需要手动在页面操作

我们可以利用 CI 和相应插件实现自动通知到群、自动合并MR,提升研发效能

# 示例

.coding-ci.yml

master:
  merge_request:
    - imports: https://xxx/env.yml
      stages:
        - name: some check
          script: echo some check
        - name: notify
          image: tencentcom/wecom-message:latest
          settings:
            robot: $WECOM_ROBOT # 走查通知机器人
            msgType: markdown
            content: |
              走查代码啦
               
              ${CODING_MERGE_REQUEST_TITLE}
              [${CODING_EVENT_URL}](${CODING_EVENT_URL})

              [${CODING_BUILD_WEB_URL}](${CODING_BUILD_WEB_URL})

              from ${CODING_MERGE_REQUEST_PROPOSER}
  mergeable:
    - imports: https://xxx/env.yml
      stages:
        - name: auto merge
          image: codingci/merge-mr:latest
          settings:
            # 从引用文件中引用敏感数据
            token: $PRIVATE_TOKEN
            mergeType: auto
            removeSourceBranch: true
        - name: notify
          image: tencentcom/wecom-message:latest
          settings:
            robot: $WECOM_ROBOT # 走查通知机器人
            msgType: markdown
            content: |
              MR 已自动合并
               
              ${CODING_MERGE_REQUEST_TITLE}
              [${CODING_EVENT_URL}](${CODING_EVENT_URL})

              from ${CODING_MERGE_REQUEST_PROPOSER}

https://xxx/env.yml (opens new window)

# 访问令牌
PRIVATE_TOKEN: xxx
# 企业微信机器人
WECOM_ROBOT: xxx

环境变量说明:

  • CODING_MERGE_REQUEST_TITLE: MR 标题
  • CODING_EVENT_URL:触发流水线的事件链接,此示例中为 MR 链接
  • CODING_BUILD_WEB_URL:流水线日志链接
  • CODING_MERGE_REQUEST_PROPOSER:MR 创建者
  • PRIVATE_TOKEN:访问令牌,用于镜像中调用 Coding Open API 合并 MR
  • WECOM_ROBOT:企业微信机器人 Webhook 地址

# 效果

效果

创建 MR 触发 merge_request 事件,插件 tencentcom/wecom-message 通知到 企业微信机器人所在群。

若设置了保护分支规则,需要评审通过且 MR 流水线执行成功才能合并。满足这两个条件时,会触发 mergeable 事件,插件 codingci/merge-mr 调用 Coding Open API 合并 MR。