{{< details >}}
- Tier: 基础版, 专业版, 旗舰版
- Offering: JihuLab.com, 私有化部署
{{< /details >}}
使用定时流水线以在规定的时间间隔运行极狐GitLab CI/CD 流水线。
前提条件
要运行定时流水线:
- 定时的所有者必须具有开发者角色。对于受保护分支上的流水线,定时的所有者必须被允许合并到该分支。
-
.gitlab-ci.yml
文件必须具有有效的语法。
否则,流水线不会被创建。不会显示任何错误消息。
添加流水线定时
{{< history >}}
- 输入选项在极狐GitLab 17.11 中引入。
{{< /history >}}
要添加一个流水线定时:
- 在左侧边栏中,选择 搜索或前往 并找到您的项目。
- 选择 构建 > 流水线定时。
- 选择 新建定时 并填写表单。
如果项目已经有最大数量的流水线定时,则必须删除未使用的定时,才能添加新的。
编辑流水线定时
流水线定时的所有者可以编辑它:
- 在左侧边栏中,选择 搜索或前往 并找到您的项目。
- 选择 构建 > 流水线定时。
- 在定时旁边,选择 编辑 ({{< icon name=”pencil” >}}) 并填写表单。
用户必须具有项目的开发者角色或以上。如果用户不是定时的所有者,他们必须首先取得所有权。
手动运行
要手动触发流水线定时,使其立即运行而不是在下一个计划的时间运行:
- 在左侧边栏中,选择 搜索或前往 并找到您的项目。
- 选择 构建 > 流水线定时。
- 在列表的右侧,为您想要运行的流水线,选择 运行 ({{< icon name=”play” >}})。
您可以手动运行定时流水线,每分钟一次。
当您手动运行定时流水线时,流水线以触发它的用户的权限运行,而不是定时所有者的权限。
取得所有权
定时流水线以拥有定时的用户的权限执行。流水线可以访问与流水线所有者相同的资源,包括受保护环境和CI/CD 作业令牌。
要取得由不同用户创建的流水线的所有权:
- 在左侧边栏中,选择 搜索或前往 并找到您的项目。
- 选择 构建 > 流水线定时。
- 在列表的右侧,为您想要成为所有者的流水线,选择 取得所有权。
您需要至少维护者角色才能取得由不同用户创建的流水线的所有权。
相关主题
疑难解答
处理流水线定时时,您可能会遇到以下问题。
简短引用被扩展为完整引用
当您向 API 提供一个简短的 ref
时,它会自动扩展为一个完整的 ref
。这种行为是有意的,并确保资源的明确识别。
API 接受简短引用(如 main
)和完整引用(如 refs/heads/main
或 refs/tags/main
)。
模糊引用
在某些情况下,API 无法自动将简短 ref
扩展为完整 ref
。这种情况可能发生在:
- 您提供了一个简短
ref
(如main
),但同时存在一个分支和一个具有该名称的标签。 - 您提供了一个简短
ref
,但没有具有该名称的分支或标签存在。
要解决此问题,请提供完整 ref
以确保正确识别资源。
查看并优化流水线定时
为了防止由于过多流水线同时启动而导致的过度负载,您可以查看并优化您的流水线定时。
要获取所有现有定时的概述并识别更均匀分布它们的机会:
-
运行此命令以提取并格式化定时数据:
outfile=/tmp/gitlab_ci_schedules.tsv sudo gitlab-psql --command " COPY (SELECT ci_pipeline_schedules.cron, projects.path AS project, users.email FROM ci_pipeline_schedules JOIN projects ON projects.id = ci_pipeline_schedules.project_id JOIN users ON users.id = ci_pipeline_schedules.owner_id ) TO '$outfile' CSV HEADER DELIMITER E'\t' ;" sort "$outfile" | uniq -c | sort -n
- 查看输出以识别流行的
cron
模式。 例如,您可能会看到许多定时设置为在每小时开始时运行 (0 * * * *
)。 - 调整定时以创建一个分散的
cron
模式,尤其是对于大型存储库。 例如,与其多个定时在每小时开始时运行,不如在整个小时内分布它们 (5 * * * *
,15 * * * *
,25 * * * *
)。
定时流水线突然变为非活动状态
如果定时流水线状态意外变为 Inactive
,可能是因为定时的所有者被阻止或移除。取得所有权以修改和激活定时。