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