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

How do I establish manual stages in Gitlab CI?

我似乎无法在 8.9 版的 Gitlab CI 中找到任何手动暂存文档。如何进行 "Deploy to Test" 等手动阶段?

我希望 Gitlab CI 将一个成功的 RPM 部署到开发,然后在我审查它之后,推送到测试,然后从那里生成一个版本。 Gitlab CI 目前可以吗?

更新:GitLab 8.10 中引入了手动操作。来自手册 "Manual actions are a special type of job that are not executed automatically; they need to be explicitly started by a user. Manual actions can be started from pipeline, build, environment, and deployment views. You can execute the same manual action multiple times." 手动操作的一个示例用法是部署到生产环境。此答案的其余部分仅适用于 Gitlab 8.9 及更早版本。

历史答案:

在 8.9 版本的 Gitlab 中似乎没有手册 deploy/release。

一种可能性是拥有一个触发发布的受保护分支。在此处查看有关受保护分支的信息: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 进行手动发布。它没有提供一种简单的方法来手动为不同的服务器手动执行相同的发布过程。也许其他人可以扩展此策略。

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

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

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

stages:
  - deploy
  - destroy

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

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

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