【发布时间】:2018-12-28 16:17:56
【问题描述】:
我是 gitlab-ci 的新手,我想根据 gitlab 上的操作在远程服务器上启动一些脚本(我使用 ssh)。有2个脚本:
- 假设从任何分支到
develop分支的合并请求被接受时的脚本A; - 然后我想在从任何分支到
master分支的合并请求被接受时执行脚本B。
我已经尝试过在我的.gitlab-ci.yml 文件中使用only: [merge_requests] 关键字,正如文档中建议的here 那样,但它不起作用,因为作业没有被触发。
这是我的文件:
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"
testjob 中的脚本在当前分支上的每次提交/推送时都能完美运行,但是当我合并到另一个分支或开发/master 时,build 作业不会被触发。
你知道如何使这个功能发挥作用吗?欢迎任何帮助,谢谢。
【问题讨论】:
-
@mholle 我打开并接受合并请求。一旦被接受,我想执行脚本
-
iirc 打开 MR 时应该执行脚本。一旦接受了在推送上执行的作业,就会为您要合并的分支开始。
-
@Leonald,您找到解决方案了吗?问是因为我观察到同样的问题。
-
@IokanaanIokan @Iokanaan Iokan 是的,它终于对我有用了!为 gitlab 服务器版本 11.6 引入了作业的
merge_requests属性,但我正在使用 gitlab 版本 11.4。见Pipeline for merge request
标签: continuous-integration gitlab-ci gitlab-ci-runner