|
|
|
# Pipeline schedules
|
|
|
|
|
|
|
|
> 原文:[https://docs.gitlab.com/ee/ci/pipelines/schedules.html](https://docs.gitlab.com/ee/ci/pipelines/schedules.html)
|
|
|
|
|
|
|
|
- [Pipeline schedules](#pipeline-schedules)
|
|
|
|
- [Pipeline schedules](#pipeline-schedules-1)
|
|
|
|
- [Prerequisites](#prerequisites)
|
|
|
|
- [Configuring pipeline schedules](#configuring-pipeline-schedules)
|
|
|
|
- [Using variables](#using-variables)
|
|
|
|
- [Using only and except](#using-only-and-except)
|
|
|
|
- [Advanced configuration](#advanced-configuration)
|
|
|
|
- [Working with scheduled pipelines](#working-with-scheduled-pipelines)
|
|
|
|
- [Running manually](#running-manually)
|
|
|
|
- [Taking ownership](#taking-ownership)
|
|
|
|
|
|
|
|
# Pipeline schedules[](#pipeline-schedules "Permalink")
|
|
|
|
|
|
|
|
版本历史
|
|
|
|
|
|
|
|
* 在 GitLab 9.1 中作为[触发计划](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/10533)引入.
|
|
|
|
* 在 GitLab 9.2 中[重命名为 Pipeline Schedule](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/10853) .
|
|
|
|
|
|
|
|
**注意:** Cron 表示法由[Fugit](https://github.com/floraison/fugit)解析.
|
|
|
|
|
|
|
|
管道通常是在满足某些条件的情况下运行的. 例如,将分支推送到存储库时.
|
|
|
|
|
|
|
|
管道计划可以用于以特定间隔运行[管道](index.html) . 例如:
|
|
|
|
|
|
|
|
* 每个月的 22 号都有特定的分支机构.
|
|
|
|
* 每天一次.
|
|
|
|
|
|
|
|
除了使用 GitLab UI 外,还可以使用[Pipeline schedules API](../../api/pipeline_schedules.html)维护[管道时间表](../../api/pipeline_schedules.html) .
|
|
|
|
|
|
|
|
## Prerequisites[](#prerequisites "Permalink")
|
|
|
|
|
|
|
|
为了成功创建计划的管道:
|
|
|
|
|
|
|
|
* 计划所有者必须具有合并到目标分支的[权限](../../user/permissions.html) .
|
|
|
|
* 管道配置必须有效.
|
|
|
|
|
|
|
|
否则,不会创建管道.
|
|
|
|
|
|
|
|
## Configuring pipeline schedules[](#configuring-pipeline-schedules "Permalink")
|
|
|
|
|
|
|
|
计划项目的管道:
|
|
|
|
|
|
|
|
1. 导航到项目的**CI / CD>计划**页面.
|
|
|
|
2. 单击**新建计划**按钮.
|
|
|
|
3. 填写**计划表中的新管道**表单.
|
|
|
|
4. 单击**保存管道计划**按钮.
|
|
|
|
|
|
|
|
[![New Schedule Form](img/b379b1821f4b3d10ab0be61a59bcd491.png)](img/pipeline_schedules_new_form.png)
|
|
|
|
|
|
|
|
**注意:**管道执行[时间取决于](#advanced-configuration) Sidekiq 自己的时间表.
|
|
|
|
|
|
|
|
在" **计划**索引"页面中,您可以看到计划运行的管道的列表. 下次运行由安装了 GitLab 的服务器自动计算.
|
|
|
|
|
|
|
|
[![Schedules list](img/de408a3a079dceb2e72d044abac21ac3.png)](img/pipeline_schedules_list.png)
|
|
|
|
|
|
|
|
### Using variables[](#using-variables "Permalink")
|
|
|
|
|
|
|
|
在 GitLab 9.4 中[引入](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/12328) .
|
|
|
|
|
|
|
|
您可以传递任意数量的任意变量,它们将在 GitLab CI / CD 中可用,以便可以在您的[`.gitlab-ci.yml`文件中使用](../../ci/yaml/README.html) .
|
|
|
|
|
|
|
|
[![Scheduled pipeline variables](img/2e1001a11cd343049b87ebf60a315e9f.png)](img/pipeline_schedule_variables.png)
|
|
|
|
|
|
|
|
### Using only and except[](#using-only-and-except "Permalink")
|
|
|
|
|
|
|
|
要配置仅在计划了管道(或相反)时才可以执行作业,您只能使用[且](../yaml/README.html#onlyexcept-basic)不能使用配置关键字.
|
|
|
|
|
|
|
|
For example:
|
|
|
|
|
|
|
|
```
|
|
|
|
job:on-schedule:
|
|
|
|
only:
|
|
|
|
- schedules
|
|
|
|
script:
|
|
|
|
- make world
|
|
|
|
|
|
|
|
job:
|
|
|
|
except:
|
|
|
|
- schedules
|
|
|
|
script:
|
|
|
|
- make build
|
|
|
|
```
|
|
|
|
|
|
|
|
### Advanced configuration[](#advanced-configuration "Permalink")
|
|
|
|
|
|
|
|
管道不会完全按计划执行,因为计划由 Sidekiq 处理,Sidekiq 根据其间隔运行.
|
|
|
|
|
|
|
|
例如,如果满足以下条件,则每天只会创建两个管道:
|
|
|
|
|
|
|
|
* 您设置时间表以每分钟( `* * * * *` )创建一条管道.
|
|
|
|
* Sidekiq 工作者每天在 00:00 和 12:00( `0 */12 * * *` )运行.
|
|
|
|
|
|
|
|
更改 Sidekiq 工作人员的频率:
|
|
|
|
|
|
|
|
1. 在实例的`gitlab.rb`文件中编辑`gitlab_rails['pipeline_schedule_worker_cron']`值.
|
|
|
|
2. [重新配置 GitLab,](../../administration/restart_gitlab.html#omnibus-gitlab-reconfigure)以使更改生效.
|
|
|
|
|
|
|
|
对于 GitLab.com,请参阅[专用设置页面](../../user/gitlab_com/index.html#gitlab-cicd) .
|
|
|
|
|
|
|
|
## Working with scheduled pipelines[](#working-with-scheduled-pipelines "Permalink")
|
|
|
|
|
|
|
|
配置完成后,GitLab 将支持许多用于计划管道的功能.
|
|
|
|
|
|
|
|
### Running manually[](#running-manually "Permalink")
|
|
|
|
|
|
|
|
在 GitLab 10.4 中[引入](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/15700) .
|
|
|
|
|
|
|
|
要手动触发管道计划,请单击"播放"按钮:
|
|
|
|
|
|
|
|
[![Play Pipeline Schedule](img/4ffe26c8f949643669a5c295958616cf.png)](img/pipeline_schedule_play.png)
|
|
|
|
|
|
|
|
这将安排一个后台作业来运行管道计划. 一条简短消息将提供指向 CI / CD 管道索引页面的链接.
|
|
|
|
|
|
|
|
**注意:**为避免滥用,限制了用户每分钟触发一次管道的速率.
|
|
|
|
|
|
|
|
### Taking ownership[](#taking-ownership "Permalink")
|
|
|
|
|
|
|
|
管道以拥有日程表的用户身份执行. 这影响管道可以访问哪些项目和其他资源.
|
|
|
|
|
|
|
|
如果用户不拥有管道,则可以通过单击" **获取所有权"**按钮**获取所有权** . 下次计划管道时,将使用您的凭据.
|
|
|
|
|
|
|
|
[![Schedules list](img/94b9b90ebfb15979835f3e48d710cb45.png)](img/pipeline_schedules_ownership.png)
|
|
|
|
|
|
|
|
如果管道计划的所有者没有能力在目标分支上创建管道,则该计划将停止创建新管道.
|
|
|
|
|
|
|
|
例如,如果发生这种情况:
|
|
|
|
|
|
|
|
* 所有者被阻止或从项目中删除.
|
|
|
|
* 目标分支或标签受保护.
|
|
|
|
|
|
|
|
在这种情况下,具有足够特权的人必须拥有日程表的所有权. |
|
|
|
\ No newline at end of file |