【问题标题】:Stage optional for other branches but mandatory for master阶段对于其他分支是可选的,但对于主分支是强制性的
【发布时间】:2020-10-27 16:18:56
【问题描述】:

目前我们在 GitLab CI 管道中有 4 个阶段。 当有人与 master 分支合并时,所有 4 个阶段确实是强制性的。

我可以将最后一个阶段设置为“only:master”,这会将其从非主分支推送的管道中取出,并将其放入管道中以合并到主分支。

有没有办法让非主分支推送的最后阶段成为可选/可选。在少数情况下,我们希望在常规分支推送上运行此阶段。我设想开始能够进入分支推送的管道,并能够单击最后一个阶段以“启用”它以进行此推送和仅此推送。

【问题讨论】:

    标签: gitlab gitlab-ci gitlab-ci-runner


    【解决方案1】:

    我们最终制作了一个模板,并从中派生了 2 个步骤,每个步骤都有不同的规则。效果很好。

    .tarball: &tarball
      stage: package
      script:
        - whoami
        - echo $PATH
        - which git-lfs
        - echo "Cloning Common/master"
        - git clone -b master https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.com/abc/common.git Common
        - echo "Cloning Ansible/${CI_COMMIT_REF_NAME}"
        - git clone -b ${CI_COMMIT_REF_NAME} https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.com/abc/ansible.git Ansible
        - echo "Excluding the following from tar- ${TAR_EXCLUDES}"
        - tar ${TAR_EXCLUDES} -czf ${TAR_ARCHIVE} Ansible Common 
        - tar -tf ${TAR_ARCHIVE} > manifest.txt
      artifacts:
        paths:
          - ${TAR_ARCHIVE}
          - manifest.txt
      tags:
        - shell
     
    tarball_master:
        <<: *tarball
        only:
          - master
    
    tarball_other:
        <<: *tarball
        except:
          - master
        when: manual
    

    【讨论】:

      猜你喜欢
      • 2021-02-14
      • 2017-08-14
      • 1970-01-01
      • 2014-09-19
      • 1970-01-01
      • 2017-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多