如何在从任何分支到开发/主的合并请求时触发 gitlab-ci 中的作业



我是 gitlab-ci 的新手,我想在远程服务器上启动一些脚本(我使用了 ssh),具体取决于在 gitlab 上所做的操作。有 2 个脚本:

  1. 假设脚本 A 当接受从任何分支到develop分支的合并请求时;
  2. 然后,我想在接受从任何分支到master分支的合并请求时执行脚本 B。

我已经尝试的是在我的.gitlab-ci.yml文件中使用 only: [merge_requests] 关键字,如文档中此处的建议,但它不起作用,因为作业未触发。

这是我的文件:

before_script:
  - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
  - eval $(ssh-agent -s)
  - echo "$SSH_PRIVATE_KEY" | tr -d 'r' | ssh-add - > /dev/null
  - mkdir -p ~/.ssh
  - chmod 700 ~/.ssh
  - echo "$SSH_KNOWN_HOSTS" > ~/.ssh/known_hosts
  - chmod 644 ~/.ssh/known_hosts

build:
   stage: build
   tags:
    - alextag
  only:
    - merge_requests
  script:
    - echo "Check if merge_request working here"
test:
  stage: test
  only:
    - branches
  tags:
    - alextag
  script: 
    - sh alex2.sh
    - echo "$USER"

test 作业中的脚本在当前分支上的每次提交/推送时都能完美运行,但是当我合并到另一个分支或开发/掌握时,不会触发build作业。

你知道怎么使这个功能吗?欢迎任何帮助,谢谢。

我终于找到了解决问题的方法。我正在使用的 Gitlab 实例的版本是 11.4,但作业的 merge_requests 属性是在 11.6 版本中引入的。
有关合并请求以及与该功能关联的问题,请参阅管道。

请注意,此属性仅在created合并请求时触发作业,而不是在accepted/merged合并请求时触发作业。您可以使用 gitlab api 来获取有关合并请求的所有信息。

最新更新