是否可以将 gitlab ci 作业标记为手动启动?
我需要它来部署应用程序,但我想决定是否要部署它
是否可以将 gitlab ci 作业标记为手动启动?
我需要它来部署应用程序,但我想决定是否要部署它
自从发布第一个答案以来,这种情况发生了变化。这是原始Gitlab 问题的链接。现在支持执行类似的操作
production:
stage: deploy
script: run-deployment $OMNIBUS_GITLAB_PACKAGE
environment: production
when: manual
注意when: manual
属性。UI 会自行更新,为用户提供触发作业的方法。
GitLab 13.5(2020 年 10 月)为该功能添加了更多when: manual
功能,以支持trigger
:
使用手动作业触发下游或子管道
以前,无法将触发器作业配置为等待手动操作。这使得配置下游或子管道触发器以等待用户在运行前单击它们变得具有挑战性。
在此版本中,我们添加了添加
when: manual
到触发作业的功能。使用此关键字使触发作业等到您单击播放按钮。这使您可以更好地控制下游和子管道,并且它们只会在您希望它们运行时运行。
GitLab 14.8(2022 年 2 月)添加了另一个选项/方法:
部署审批 API
我们很高兴通过 API 引入部署批准。
在此功能之前,团队能够通过要求在管道中执行手动作业作为解决方法来保护环境免受任何更改。
< 现在,部署批准是我们平台中的一流概念。
团队可以为特定环境配置多个批准者,并使用新的 API 端点执行对该环境的部署的批准或拒绝。
此功能使团队能够创建工作流,以便在将软件部署到生产或其他受保护环境之前获得适当的批准。
所以:
curl --header 'Content-Type: application/json' --request POST \
--data '{"name": "production", "deploy_access_levels": [{"group_id": 9899826}], "required_approval_count": 1}' \
--header "PRIVATE-TOKEN: <your_access_token>" \
"https://gitlab.example.com/api/v4/projects/22034114/protected_environments"
afaik 不直接支持手动批准的构建步骤。但是应该可以通过使用ci triggers来实现类似的行为。
build_package:
stage: build
script:
- make build
upload_package:
stage: package
script:
- if [ -n "${UPLOAD_TO_S3}" ]; then make upload; fi
然后,您可以通过发出 POST 请求并传递配置的变量来触发重建。
curl -X POST \
-F token=TOKEN \
-F ref=master \
-F "variables[UPLOAD_TO_S3]=true" \
https://gitlab.example.com/api/v3/projects/9/trigger/builds
如果您有自己的 gitlab 实例,则应该可以在每个合并请求上注入 javascript 按钮,这将进行 curl 调用。