自定义流水线配置
- Tier: Free, Premium, Ultimate
- Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
您可以为项目自定义流水线的运行方式。
关于流水线的概述,请观看视频 GitLab CI Pipeline, Artifacts, and Environments。 也可以观看 GitLab CI pipeline tutorial for beginners。
更改哪些用户可以查看您的流水线
对于公开和内部项目,您可以更改谁能查看您的:
- 流水线
- 作业输出日志
- 作业产物
- 流水线安全结果
要更改流水线及相关功能的可见性:
-
在左侧边栏,选择 Search or go to 并找到您的项目。
-
选择 Settings > CI/CD。
-
展开 General pipelines。
-
选择或取消选择 Project-based pipeline visibility 复选框。 当选中时,流水线及相关功能对以下用户可见:
当取消选择时:
- 对于 Public 项目,作业日志、作业产物、流水线安全仪表板和 CI/CD 菜单项仅对项目成员(Reporter 或更高权限)可见。 其他用户,包括访客用户,只能查看流水线和作业的状态,并且仅在查看合并请求或提交时可见。
- 对于 Internal 项目,流水线对所有认证用户可见,但 外部用户 除外。 相关功能仅对项目成员(Reporter 或更高权限)可见。
- 对于 Private 项目,流水线及相关功能仅对项目成员(Reporter 或更高权限)可见。
更改公开项目中非项目成员的流水线可见性
您可以控制 公开项目 中非项目成员的流水线可见性。
当以下情况时,此设置无效:
- 项目可见性设置为 Internal 或 Private, 因为非项目成员无法访问内部或私有项目。
- Project-based pipeline visibility 设置被禁用。
要更改非项目成员的流水线可见性:
- 在左侧边栏,选择 Search or go to 并找到您的项目。
- 选择 Settings > General。
- 展开 Visibility, project features, permissions。
- 对于 CI/CD,选择:
- Only project members: 只有项目成员可以查看流水线。
- Everyone With Access: 非项目成员也可以查看流水线。
- 选择 Save changes。
CI/CD 权限表 列出了当选择 Everyone With Access 时, 非项目成员可以访问的流水线功能。
自动取消冗余流水线
当同一分支上运行新更改的流水线时,您可以设置待处理或正在运行的流水线自动取消。 您可以在项目设置中启用此功能:
- 在左侧边栏,选择 Search or go to 并找到您的项目。
- 选择 Settings > CI/CD。
- 展开 General Pipelines。
- 选择 Auto-cancel redundant pipelines 复选框。
- 选择 Save changes。
使用 interruptible 关键字指示正在运行的作业
是否可以在完成前被取消。在 interruptible: false 的作业开始后,
整个流水线不再被视为可中断的。
防止过时的部署作业
您的项目可能存在多个计划在同一时间运行的并发部署作业。
这可能导致较旧的部署作业在较新的作业之后运行,这可能不是您想要的。
为避免这种情况:
- 在左侧边栏,选择 Search or go to 并找到您的项目。
- 选择 Settings > CI/CD。
- 展开 General pipelines。
- 选择 Prevent outdated deployment jobs 复选框。
- 可选。取消选择 Allow job retries for rollback deployments 复选框。
- 选择 Save changes。
有关更多信息,请参阅 Deployment safety。
限制可以取消流水线或作业的角色
- Tier: Premium, Ultimate
- Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
您可以自定义哪些角色有权取消流水线或作业。
默认情况下,至少具有 Developer 角色的用户可以取消流水线或作业。 您可以将取消权限限制为仅至少具有 Maintainer 角色的用户, 或完全禁止取消任何流水线或作业。
要更改取消流水线或作业的权限:
- 在左侧边栏,选择 Search or go to 并找到您的项目。
- 选择 Settings > CI/CD。
- 展开 General pipelines。
- 从 Minimum role required to cancel a pipeline or job 中选择一个选项。
- 选择 Save changes。
指定自定义 CI/CD 配置文件
GitLab 期望在项目的根目录中找到 CI/CD 配置文件(.gitlab-ci.yml)。
但是,您可以指定备用文件名路径,包括项目外的位置。
要自定义路径:
- 在左侧边栏,选择 Search or go to 并找到您的项目。
- 选择 Settings > CI/CD。
- 展开 General pipelines。
- 在 CI/CD configuration file 字段中,输入文件名。如果文件:
- 不在根目录中,包含路径。
- 在不同项目中,包含组和项目名称。
- 在外部站点上,输入完整 URL。
- 选择 Save changes。
您不能使用项目的 pipeline editor 来 编辑其他项目或外部站点上的 CI/CD 配置文件。
自定义 CI/CD 配置文件示例
如果 CI/CD 配置文件不在根目录中,路径必须相对于根目录。例如:
my/path/.gitlab-ci.ymlmy/path/.my-custom-file.yml
如果 CI/CD 配置文件在外部站点上,URL 必须以 .yml 结尾:
http://example.com/generate/ci/config.yml
如果 CI/CD 配置文件在不同项目中:
- 文件必须存在于其默认分支上,或指定分支作为 refname。
- 路径必须相对于其他项目中的根目录。
- 路径后必须跟
@符号和完整的组和项目路径。
例如:
.gitlab-ci.yml@namespace/another-projectmy/path/.my-custom-file.yml@namespace/subgroup/another-projectmy/path/.my-custom-file.yml@namespace/subgroup1/subgroup2/another-project:refname
如果配置文件在单独的项目中,您可以设置更细粒度的权限。例如:
- 创建一个公共项目来托管配置文件。
- 仅允许有权编辑文件的用户对项目具有写入权限。
然后其他用户和项目可以访问配置文件而无法编辑它。
选择默认 Git 策略
您可以选择在作业运行时如何从 GitLab 获取仓库。
- 在左侧边栏,选择 Search or go to 并找到您的项目。
- 选择 Settings > CI/CD。
- 展开 General pipelines。
- 在 Git strategy 下,选择一个选项:
git clone较慢,因为它为每个作业从头开始克隆仓库。 但是,本地工作副本始终是干净的。git fetch较快,因为它重用本地工作副本(如果不存在则回退到克隆)。 推荐,特别是对于 大型仓库。
配置的 Git 策略可以被 .gitlab-ci.yml 文件中的 GIT_STRATEGY 变量 覆盖。
限制克隆时获取的更改数量
您可以限制 GitLab CI/CD 克隆仓库时获取的更改数量。
- 在左侧边栏,选择 Search or go to 并找到您的项目。
- 选择 Settings > CI/CD。
- 展开 General pipelines。
- 在 Git strategy 下,在 Git shallow clone 中输入一个值。
最大值为
1000。要禁用浅克隆并让 GitLab CI/CD 每次获取所有分支和标签,保持值为空或设置为0。
新创建的项目默认 git depth 值为 20。
此值可以被 .gitlab-ci.yml 文件中的 GIT_DEPTH 变量 覆盖。
设置作业运行时间限制
您可以定义作业在超时前可以运行多长时间。
- 在左侧边栏,选择 Search or go to 并找到您的项目。
- 选择 Settings > CI/CD。
- 展开 General pipelines。
- 在 Timeout 字段中,输入分钟数,或人类可读的值如
2 hours。 必须为 10 分钟或更多,且小于一个月。默认为 60 分钟。 待处理作业在 24 小时不活动后被丢弃。
超过超时的作业被标记为失败。
当同时设置项目超时和 runner 超时 时, 取较低值。
没有输出一小时的作业无论超时设置如何都会被丢弃。为防止这种情况发生, 添加脚本以持续输出进度。有关更多信息,请参阅 issue 25359。
流水线徽章
您可以使用 流水线徽章 来指示项目的流水线状态和 测试覆盖率。这些徽章由最新的成功流水线确定。
禁用 GitLab CI/CD 流水线
GitLab CI/CD 流水线在所有新项目中默认启用。如果您使用外部 CI/CD 服务器如 Jenkins 或 Drone CI,您可以禁用 GitLab CI/CD 以避免与提交状态 API 冲突。
您可以按项目禁用 GitLab CI/CD 或 为实例上的所有新项目禁用。
当您禁用 GitLab CI/CD 时:
- 左侧边栏中的 CI/CD 项被移除。
/pipelines和/jobs页面不再可用。- 现有的作业和流水线被隐藏,不会被删除。
要在您的项目中禁用 GitLab CI/CD:
- 在左侧边栏,选择 Search or go to 并找到您的项目。
- 选择 Settings > General。
- 展开 Visibility, project features, permissions。
- 在 Repository 部分,关闭 CI/CD。
- 选择 Save changes。
这些更改不适用于 外部集成 中的项目。
自动流水线清理
- Tier: Free, Premium, Ultimate
- Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
具有 Owner 角色的用户可以设置 CI/CD 流水线过期时间以帮助管理流水线存储并提高系统性能。 系统会自动删除在配置值之前创建的流水线。
- 在左侧边栏,选择 Search or go to 并找到您的项目。
- 选择 Settings > CI/CD。
- 展开 General pipelines。
- 在 Automatic pipeline cleanup 字段中,输入秒数,或人类可读的值如
2 weeks。 必须为一天或更多,且小于一年。留空则永不自动删除流水线。 默认为空。 - 选择 Save changes。