Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Continuous integration 如何在任何要开发/掌握的分支请求合并时触发gitlab ci中的作业?_Continuous Integration_Gitlab Ci_Gitlab Ci Runner - Fatal编程技术网

Continuous integration 如何在任何要开发/掌握的分支请求合并时触发gitlab ci中的作业?

Continuous integration 如何在任何要开发/掌握的分支请求合并时触发gitlab ci中的作业?,continuous-integration,gitlab-ci,gitlab-ci-runner,Continuous Integration,Gitlab Ci,Gitlab Ci Runner,我是gitlab ci新手,我想根据在gitlab上执行的操作在远程服务器上启动一些脚本(我使用ssh)。有两个脚本: 比如说,当从任何分支接受到develope分支的合并请求时,脚本A 然后,当从master分支的任何分支接受合并请求时,我想执行脚本B 我已经尝试过的是在我的.gitlab ci.yml文件中使用文档中建议的only:[merge\u requests]关键字,但它不起作用,因为作业没有触发 这是我的档案: before_script: - 'which ssh-agent

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

  • 比如说,当从任何分支接受到
    develope
    分支的合并请求时,脚本A
  • 然后,当从
    master
    分支的任何分支接受合并请求时,我想执行脚本B
  • 我已经尝试过的是在我的
    .gitlab ci.yml
    文件中使用文档中建议的
    only:[merge\u 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
    作业中的脚本在当前分支上的每次提交/推送时都能正常工作,但是当我合并到另一个分支或开发/掌握
    时,不会触发
    构建
    作业


    你知道如何使它发挥作用吗?欢迎任何帮助,谢谢。

    我终于找到了解决问题的方法。我正在使用的Gitlab实例的版本是11.4,但作业的
    merge\u requests
    属性是在11.6版本中引入的。
    请参见和与该功能关联的


    请注意,此属性仅在创建合并请求时触发作业,而不是在接受合并请求时触发作业。您可以使用来获取有关合并请求的所有信息。

    @mholle I打开并接受合并请求。一旦被接受,我想执行脚本IIRC,脚本应该在打开MR时执行。一旦被接受,在您合并到的分支的推送启动时执行的作业。@Leonald,您找到解决方案了吗?问是因为我正在观察同一个问题。@iokananiokan@iokanan-Iokan是的,它终于对我起作用了!作业上的
    merge\u requests
    属性是在gitlab服务器11.6版中引入的,但我正在使用gitlab 11.4版。看见