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