265.md 5.2 KB
Newer Older
Lab机器人's avatar
readme  
Lab机器人 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133
# Pipeline schedules

> 原文:[https://docs.gitlab.com/ee/ci/pipelines/schedules.html](https://docs.gitlab.com/ee/ci/pipelines/schedules.html)

*   [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)

如果管道计划的所有者没有能力在目标分支上创建管道,则该计划将停止创建新管道.

例如,如果发生这种情况:

*   所有者被阻止或从项目中删除.
*   目标分支或标签受保护.

在这种情况下,具有足够特权的人必须拥有日程表的所有权.