如何设置gitlab-ci作业以重用特定主控作业中的所有分支作业?

时间:2017-06-05 17:00:45

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

我正在与Gitlab-CI合作,我正在考虑所有分支机构的一项工作,基本上可以将其视为某种单元测试,另一项工作专门用于主分支机构,例如复制并执行一些实际操作。单元测试作业必须在所有分支上运行。

我想知道脚本是否可以重叠,因此基本上所有分支作业都可以在主要作业之前执行作为一种验证。

我们的想法是在合并请求中强制执行两个条件:

  • 如果管道成功,则仅允许合并合并请求
  • 如果所有讨论都已解决,则仅允许合并合并请求

我简化了.gitlab-ci.yml,如下所示:

job_all_branches:
  script:
    - unit-tests

job_master_branch:
  script:
    - copy-files
  only:
    - master

当然,我们可以提一下,我们可以将所有分支作业中的单元测试脚本复制并粘贴到job_master_branch中调用的脚本中,但我想知道是否有办法避免冗余定义。

1 个答案:

答案 0 :(得分:0)

找到解决方案,实际上非常简单,我只需要使用阶段......:
- https://docs.gitlab.com/ee/ci/yaml/#stages
- https://about.gitlab.com/2016/07/29/the-basics-of-gitlab-ci/

感觉就像一个完全白痴,我以前没想过这个 无论如何,这是我想要实现的目标:

stages:
  - test
  - deploy
test_job:
  stage: test
  script:
    - ./my-test-script.sh
  allow_failure: false
  tags:
    - my
    - lovely
    - test
    - runner


deploy_job:
  stage: deploy
  script:
    - ./my-deploy-script.sh
  allow_failure: false
  only:
    - master
  tags:
    - my
    - lovely
    - deployment
    - runner

因此它们按顺序处理:)