20

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

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

4

3 回答 3

31

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

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

stages:
  - deploy
  - destroy

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

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

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

于 2018-12-12T10:39:40.350 回答
10

更新: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 作业定义中的唯一选项在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 进行手动发布。它没有提供一种简单的方法来手动为不同的服务器手动执行相同的发布过程。也许其他人可以扩展此策略。

于 2015-08-18T11:33:47.033 回答
5

最后,我们在 GitLab 8.10 中引入了 Gitlab CI手动操作

于 2016-08-21T11:18:32.453 回答