我是 gitlab-ci 的新手,我想在远程服务器上启动一些脚本(我使用了 ssh),具体取决于在 gitlab 上所做的操作。有 2 个脚本:
- 假设脚本 A 当接受从任何分支到
develop
分支的合并请求时; - 然后,我想在接受从任何分支到
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 来获取有关合并请求的所有信息。