GitLab CI工作流中能否隐藏特定分支下的指定stage阶段?
问题解答
GitLab CI 没有提供直接将运行中作业所属阶段设置为前端视图不可见的原生功能——只要某个阶段内存在待执行、执行中或已完成的作业,该阶段就会默认在流水线可视化页面展示,无法单独隐藏。
你当前配置的现有表现:
- 对于非
master、非release/v前缀的分支,uninterruptible_job因规则不匹配不会执行,此时uninterruptible阶段因为没有任何可运行作业,本身就不会在流水线中显示。
针对你要在master、release/v前缀分支运行uninterruptible_job同时隐藏独立uninterruptible阶段的需求,可以通过调整作业所属阶段+执行顺序控制的变通方案实现,效果和原配置逻辑完全一致:
- 删除stages列表中独立的
uninterruptible阶段定义stages: - pre_check - build - assign_test - host_test - deploy - 将
uninterruptible_job的所属阶段调整为pre_check,保留原有执行规则、不可中断、资源组配置不变uninterruptible_job: stage: pre_check interruptible: false resource_group: production script: - echo "$CI_COMMIT_BRANCH is uninterruptible" tags: - assign_test rules: - if: '$CI_COMMIT_REF_NAME == "master" || $CI_COMMIT_BRANCH =~ /^release\/v/' when: always - 给
pre_check阶段下的所有原有作业添加needs配置,强制这些作业等uninterruptible_job执行完成后再启动,保证原有执行顺序不变# 给.gitlab/ci/pre_check.yml中所有原有作业添加以下配置 needs: - uninterruptible_job
调整后效果:
- 流水线视图中不会再出现独立的
uninterruptible阶段 uninterruptible_job仍仅在master和release/v前缀分支触发,保留不可中断、生产资源组互斥的特性- 作业执行顺序和原拆分独立阶段的逻辑完全一致,
uninterruptible_job会在所有其他作业之前运行
注:如果你的诉求是完全隐藏uninterruptible_job的执行记录,不在流水线作业列表中展示,目前GitLab CI没有提供对应功能,所有触发执行的作业都会对有流水线查看权限的用户可见。
内容的提问来源于stack exchange,提问作者shapale
相关产品推荐
相关产品推荐

