如何在Gitlab CI中建立手动阶段?

时间:2015-08-09 13:22:23

标签: gitlab gitlab-ci

我似乎无法在版本8.9中的Gitlab CI中找到任何手动登台的文档。如何进行“部署测试”等手动阶段?

我希望Gitlab CI将一个成功的RPM部署到dev,然后在我审阅之后,推送到Test,然后从那里生成一个版本。目前Gitlab CI可以实现吗?

3 个答案:

答案 0 :(得分:7)

更新:GitLab 8.10中引入了手动操作。从手册“手动操作是一种特殊类型的作业,不是自动执行的;它们需要由用户显式启动。可以从管道,构建,环境和部署视图启动手动操作。您可以执行相同的手册多次行动。“手动操作的示例用法是部署到生产。本答案的其余部分仅适用于Gitlab 8.9及更早版本。

历史答案:

在8.9的Gitlab中,似乎没有手动部署/发布。

一种可能性是拥有一个触发释放的受保护分支。请在此处查看有关受保护分支的信息:http://doc.gitlab.com/ce/workflow/protected_branches.html

本质上,受保护的分支允许您创建一个分支(testdeploybranch),只允许您将代码合并到其中。每当提交dev都会通过Gitlab CI测试并部署作业以及手动审核时,您可以将该提交合并到受保护的分支中以触发发布。对于此分支,您可以使用.gitlab-ci.yml作业定义中的 only 选项在Gitlab CI中设置特殊的发布作业。在此处阅读更多内容:http://doc.gitlab.com/ci/yaml/README.html

这样的事情:

release:
  only: testdeploybranch
  type: release
  script: some command or script invocation to deploy to Test

这可能不是您所追求的,但它确实允许您从Gitlab手动发布。它不提供为不同服务器手动手动执行相同发布过程的简便方法。也许其他人可能能够扩展这一战略。

答案 1 :(得分:4)

最后,我们在GitLab 8.10中引入了Gitlab CI manual actions

答案 2 :(得分:3)

您可以通过在作业(documentation)中使用when: manual将任务设置为手动。

例如,如果您想让部署人员在每次推送时都发生,但可以选择手动拆除基础架构,这就是您的做法:

stages:
  - deploy
  - destroy

deploy:
  stage: deploy
  script:
    - [STEPS TO DEPLOY]

destroy:
  stage: destroy
  script:
    - [STEPS TO DESTROY]
  when: manual

使用上述配置,如果转到GitLab项目>管道,则应该在最后一次提交旁边看到一个播放按钮。单击播放按钮时,您会看到destroy选项。