【问题标题】:How to trigger jobs in gitlab-ci on merge request from any branch to develop/master?如何根据来自任何分支的合并请求触发 gitlab-ci 中的作业以进行开发/主控?
【发布时间】:2018-12-28 16:17:56
【问题描述】:

我是 gitlab-ci 的新手,我想根据 gitlab 上的操作在远程服务器上启动一些脚本(我使用 ssh)。有2个脚本:

  1. 假设从任何分支到develop 分支的合并请求被接受时的脚本A;
  2. 然后我想在从任何分支到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


【解决方案1】:

我终于找到了解决问题的方法。我正在处理的 Gitlab 实例版本是 11.4,但在 11.6 版本中引入了作业的 merge_requests 属性。
请参阅与该功能关联的 Pipeline for merge requestissue

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

【讨论】:

    猜你喜欢
    • 2017-10-10
    • 1970-01-01
    • 2021-05-21
    • 1970-01-01
    • 2023-01-21
    • 1970-01-01
    • 2014-04-22
    • 1970-01-01
    • 2022-01-07
    相关资源
    最近更新 更多