我是gitlab-ci的新手,我想根据对gitlab进行的操作在远程服务器(我使用ssh)上启动一些脚本。有2个脚本:
develop
分支的合并请求被接受时; master
分支接受合并请求时,我想执行脚本B。我已经尝试过的是按照文档中的建议here在only: [merge_requests]
文件中使用.gitlab-ci.yml
关键字,但是它没有用,因为没有触发作业。
这是我的文件:
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
作业不会触发。
您知道如何使此功能起作用吗?欢迎任何帮助,谢谢。
答案 0 :(得分:0)
我终于找到了解决问题的办法。我正在使用的Gitlab实例的版本为 11.4 ,但是在版本 11.6中引入了merge_requests
作业属性。
请参阅Pipeline for merge request和与该功能关联的issue。
请注意,此属性仅在合并请求为created
时触发作业,而不在合并请求为accepted/merged
时触发作业。您可以使用gitlab api获取有关合并请求的所有信息。