GitLab,具有依赖关系的手动作业

时间:2020-09-29 10:15:41

标签: gitlab gitlab-ci

我的管道有3个阶段:测试准备 Publish

  • Test ,针对任何分支上的任何提交执行
  • 准备,在 develop master
  • 上执行
  • Publish ,重用 Prepare 中的工件,并在 develop *和 master
  • 上执行

我在手动阶段“手动发布” 中添加了手动发布功能,用于通过 develop master 以外的任何方式成功发布任何提交。但是,该阶段需要 Prepare 中的工件。我曾经使用needs运行 Prepare ,但是如果我们不触发“手动发布” Test 之后执行一次>,这是浪费时间和资源。

我们可以将现有工作附加/导入/合并吗?

我试图在手动发布中导入 Prepare 作业,但没有成功:

build-and-publish-manually:     
  <<: *prepare-docker
  <<: *build-and-publish
  except:
    variables:
      - $CI_COMMIT_REF_NAME == $DEVELOP_BRANCH 
      - $CI_COMMIT_REF_NAME == $MASTER_BRANCH
  when: manual

每个作业应在不同的运行程序上执行; prepare-artifact在Docker运行程序内部执行,而build-and-publish需要Shell运行程序。

1 个答案:

答案 0 :(得分:0)

解决方案是制作第一本作业手册,而下一个“需要”。

我添加了手动触发的手动准备作业,并且 Publish 作业已配置为needs 手动准备。这样,只有在完成手动准备后,他才能被处决。

# ...

prepare-docker-manually:
  <<: *prepare-docker
  when: manual

build-and-publish-manually:     
  <<: *build-and-publish
  except:
    variables:
      - $CI_COMMIT_REF_NAME == $DEVELOP_BRANCH 
      - $CI_COMMIT_REF_NAME == $MASTER_BRANCH

enter image description here