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

如何在Gitlab CI中建立手动阶段?,gitlab,gitlab-ci,Gitlab,Gitlab Ci,在8.9版的Gitlab CI中,我似乎找不到任何手动登台的文档。如何执行手动阶段,例如“部署到测试” 我希望Gitlab CI将一个成功的RPM部署到dev中,然后在我检查了它之后,推送测试,并从那里生成一个版本。Gitlab CI当前是否可以实现这一点?更新:在Gitlab 8.10中引入了手动操作。“手动操作是一种特殊类型的作业,不会自动执行;它们需要由用户显式启动。手动操作可以从管道、生成、环境和部署视图启动。您可以多次执行相同的手动操作。”手动操作的一个示例用法是部署到生产环境。此答案

在8.9版的Gitlab CI中,我似乎找不到任何手动登台的文档。如何执行手动阶段,例如“部署到测试”


我希望Gitlab CI将一个成功的RPM部署到dev中,然后在我检查了它之后,推送测试,并从那里生成一个版本。Gitlab CI当前是否可以实现这一点?

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

历史答案:

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

一种可能性是有一个触发释放的受保护分支。请参见此处有关受保护分支的信息:

本质上,受保护的分支将允许您创建一个分支(testdeploybranch),只有您可以将代码合并到该分支中。每当对开发人员的提交通过Gitlab CI测试和部署作业,以及手动检查时,您都可以将该提交合并到受保护的分支中以触发发布。对于这个分支,您可以使用.Gitlab-CI.yml作业定义中的唯一选项在Gitlab CI中设置一个特殊的发布作业。请在此处阅读更多信息:

比如说:

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

这可能不是您想要的,但它确实允许您从Gitlab手动发布。对于不同的服务器,手动执行相同的发布过程并不容易。也许其他人可以扩展此策略。

最后,我们在Gitlab 8.10中引入了Gitlab CI。

您可以在作业()中使用
时:manual
将任务设置为手动

因此,例如,如果您希望在每次推送时都进行部署,但可以选择手动拆除基础结构,您可以这样做:

stages:
  - deploy
  - destroy

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

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

在上面的配置中,如果您转到GitLab project>Pipelines,您应该会在最后一次提交旁边看到一个play按钮。当你点击播放按钮时,你可以看到
destroy
选项。

我会让味道在这个上面炖48小时,但它很可能成为公认的答案。这可不像在竹子上点击按钮那么好。。但推进到一个特定的分支并不是那么困难。Gitlab CI应该在构建作业中添加一个手动触发选项。至于在多台服务器上部署同一版本,我可能只会将该版本存放在共享/artifactory/archiva服务器上,然后从那里触发puppet/saltstack部署。另一个选项可能是快照分支和发布分支。push to snapshot生成一个部署到测试的快照,如果该快照通过了,则会执行push to release,这将计划部署到prod。GitLab 8.10中引入了[Manual actions][1]。[1] :谢谢沃伦更新答案。这是答案!其他的是错误的或无用的sCorrect URL是错误的