删除分支后是否可以通过 Gitlab CI/CD 运行管道。
事实上,我想在删除该分支后编辑文件。
例如,我有两个存储库,R1 和 R2。
在 R1 中我有 2 个分支
当 B1(R1 的分支)被删除时,我想从 R2 编辑文件。
我知道如何访问和编辑文件,但我不知道如何为已删除的分支设置触发器。
您可以使用环境。查看停止环境。
当关联分支被删除时,GitLab 将自动触发停止操作。 stop_review 作业必须与deploy_review 作业处于同一阶段,以便环境自动停止。
deploy_review:
stage: deploy
script:
- echo "Deploy a review app"
environment:
name: review/$CI_COMMIT_REF_NAME
url: https://$CI_ENVIRONMENT_SLUG.example.com
on_stop: stop_review
only:
- branches
except:
- master
stop_review:
stage: deploy
variables:
GIT_STRATEGY: none
script:
- echo "Implement editing files from R2 here"
when: manual
environment:
name: review/$CI_COMMIT_REF_NAME
action: stop
这并不完全是您想要的,但也许对您更有用。
@Novikov 的答案正是您所需要的,我一开始也以为它只能手动工作,但它会自动工作。我添加了一些他的答案中没有的精确性。
我有一个和你类似的实用程序。
Repo-1 管道触发我的 repo-2 上的管道,该管道将部署应用程序,因此我的需要是删除 repo-1 中的分支会触发 repo-2 管道删除环境。
所以我使用了
environment
功能,gitlab文档解释了如何使用它。
deploy:
stage: deploy
script:
- {...}
environment:
name: deployment-${CI_COMMIT_BRANCH}
on_stop: destroy
destroy:
stage: deploy
variables:
GIT_STRATEGY: none
script:
- {...}
environment:
name: deployment-${CI_COMMIT_BRANCH}
action: stop
when: manual
重要
when: manual
,但是当
分支被删除/合并。environment
功能不
使用 trigger
功能,因此如果您想触发另一个管道,您需要使用 API。来源: Gitlab 文档
管道不可能知道您何时通过 UI 或通过
git branch -r -D
删除了分支。管道作为 gitlab 服务器上的提交挂钩运行(当您推送时),以及当您在 UI 中手动单击“运行管道”按钮时。
话虽如此,可以从管道作业中删除分支,因此虽然我将由您决定如何执行此操作,但您可以添加一个使用 trigger
关键字的作业在 R1 管道中的作业删除分支后触发 R2 中的管道。请参阅触发器文档:
https://docs.gitlab.com/ee/ci/yaml/index.html#trigger 并查看多项目管道。
因此,在 R2 中,您有一个设置为编辑某些文件的管道 在 R1 中,您将设置一个删除 B1 分支的作业,并在该作业之后执行一个在 R1 中运行的“触发作业”,并向 Gitlab API 发送命令以启动 R2 中的管道。