From ba52341578348f172e1bd348fafac3082c657e1c Mon Sep 17 00:00:00 2001 From: BeFunes Date: Mon, 22 Sep 2025 23:54:13 +0200 Subject: [PATCH 01/25] Update scheduled-pipelines.adoc --- .../pages/scheduled-pipelines.adoc | 44 +++++++++---------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/docs/guides/modules/orchestrate/pages/scheduled-pipelines.adoc b/docs/guides/modules/orchestrate/pages/scheduled-pipelines.adoc index 598ca92027..79e9fbb521 100644 --- a/docs/guides/modules/orchestrate/pages/scheduled-pipelines.adoc +++ b/docs/guides/modules/orchestrate/pages/scheduled-pipelines.adoc @@ -1,11 +1,11 @@ -= Scheduled pipelines += Schedule triggers :page-platform: Cloud -:page-description: Learn about scheduled pipelines for your CircleCI projects. +:page-description: Learn about schedule triggers for your CircleCI projects. :experimental: -include::ROOT:partial$notes/standalone-unsupported.adoc[This feature is not supported for GitLab, GitHub App or Bitbucket Data Center] +NOTE: This feature is not supported for GitLab or Bitbucket Data Center pipelines. -Scheduled pipelines allow you to trigger pipelines periodically based on a schedule. Scheduled pipelines retain all the features of pipelines: +Schedule triggers allow you to trigger pipelines periodically based on a schedule. Schedule triggers retain all the features of pipelines: - Control the actor (yourself, or the scheduling system) associated with the pipeline, which can enable the use of xref:security:contexts.adoc#project-restrictions[Restricted contexts]. - Use xref:dynamic-config.adoc[Dynamic configuration] via setup workflows. @@ -14,35 +14,35 @@ Scheduled pipelines allow you to trigger pipelines periodically based on a sched - Specify xref:pipeline-variables.adoc#pipeline-parameters-in-configuration[Pipeline parameters] associated with a schedule. - Manage common schedules, for example, across workflows. -Scheduled pipelines are configured through the API, or through the project settings in the CircleCI web app. +Schedule triggers are configured through the API, or through the project settings in the CircleCI web app. -NOTE: A scheduled pipeline can only be configured for one branch. If you need to schedule for two branches, you would need to set up two schedules. +NOTE: A schedule trigger can only be configured for one branch. If you need to schedule for two branches, you would need to set up two schedules. [#introduction] == Introduction -Scheduled pipelines allow you to trigger pipelines periodically based on a schedule. Schedules can range from daily, weekly, monthly, or on a very specific timetable. To set up basic scheduled pipelines, you do not need any extra configuration in your `.circleci/config.yml` file. However, more advanced usage of the feature will require extra `.circleci/config.yml` configuration (for example, workflow filtering, or using parameters). +Schedule triggers allow you to trigger pipelines periodically based on a schedule. Schedules can range from daily, weekly, monthly, or on a very specific timetable. To set up basic schedule triggers, you do not need any extra configuration in your `.circleci/config.yml` file. However, more advanced usage of the feature will require extra `.circleci/config.yml` configuration (for example, workflow filtering, or using parameters). -Pipeline parameters are typed pipeline variables in the form of a string, integer, or boolean. Adding a parameter to a scheduled pipeline can be done in the web app in the triggers form while setting up a schedule. Any parameters set up in this manner must be added to your configuration file using the `parameters` key. +Pipeline parameters are typed pipeline variables in the form of a string, integer, or boolean. Adding a parameter to a schedule trigger can be done in the web app in the triggers form while setting up a schedule. Any parameters set up in this manner must be added to your configuration file using the `parameters` key. -Scheduled pipelines are set to run by an "actor", either the CircleCI scheduling system, or a specific user (for example, yourself). The scheduling actor is important to consider if making use of restricted contexts in workflows. If the user (actor) running the workflow does not have access to the context, the workflow will fail with the `Unauthorized` status. +Schedule triggers are set to run by an "actor", either the CircleCI scheduling system, or a specific user (for example, yourself). The scheduling actor is important to consider if making use of restricted contexts in workflows. If the user (actor) running the workflow does not have access to the context, the workflow will fail with the `Unauthorized` status. -You can find a basic how-to guide on the xref:set-a-nightly-scheduled-pipeline.adoc[Set a nightly scheduled pipeline] page, and more advanced examples on the xref:schedule-pipelines-with-multiple-workflows.adoc[Schedule pipelines with multiple workflows] pages. +You can find a basic how-to guide on the xref:set-a-nightly-scheduled-pipeline.adoc[Set a nightly schedule trigger] page, and more advanced examples on the xref:schedule-pipelines-with-multiple-workflows.adoc[Schedule pipelines with multiple workflows] pages. [#get-started-with-scheduled-pipelines] -== Get started with scheduled pipelines +== Get started with schedule triggers -To get started with scheduled pipelines, you have the option of using the API, or using the CircleCI web app. Both methods are described below. +To get started with schedule triggers, you have the option of using the API, or using the CircleCI web app. Both methods are described below. [#use-project-settings] === Use project settings in the web app -include::ROOT:partial$pipelines-and-triggers/scheduled-pipeline-setup.adoc[Setting up a scheduled pipeline using the CircleCI web app] +include::ROOT:partial$pipelines-and-triggers/scheduled-pipeline-setup.adoc[Setting up a schedule trigger using the CircleCI web app] [#use-the-api] === Use the API -If your project has no scheduled workflows, and you would like to try out scheduled pipelines: +If your project has no scheduled workflows, and you would like to try out schedule triggers: . Have your CircleCI token ready, or create a new token by following the steps on the xref:toolkit:managing-api-tokens.adoc[Managing API tokens] page. . Create a new schedule link:https://circleci.com/docs/api/v2/index.html#operation/createSchedule[using the API]. For example: @@ -72,27 +72,27 @@ include::ROOT:partial$tips/find-project-slug.adoc[] For additional information, refer to the **Schedule** section under the link:https://circleci.com/docs/api/v2/[API v2 docs]. Also see the xref:toolkit:api-developers-guide.adoc#getting-started-with-the-api[Getting started with the API] section of the API Developer's Guide for more guidance on making requests. [#migrate-scheduled-workflows-to-scheduled-pipelines] -== Migrate scheduled workflows to scheduled pipelines +== Migrate scheduled workflows to schedule triggers -If you have existing scheduled workflows you need to migrate to scheduled pipelines, use the xref:migrate-scheduled-workflows-to-scheduled-pipelines.adoc[Scheduled pipelines migration] guide. +If you have existing scheduled workflows you need to migrate to schedule triggers, use the xref:migrate-scheduled-workflows-to-scheduled-pipelines.adoc[Schedule triggers migration] guide. [#scheduled-pipelines-video-tutorial] -== Scheduled pipelines video tutorial +== Schedule triggers video tutorial The video offers a short tutorial for the following scenarios: - Set a schedule in the web app - Set a schedule with the API -- Migrate from scheduled workflows to scheduled pipelines +- Migrate from scheduled workflows to schedule triggers ++++
- +
++++ For the documentation for these scenarios, visit the following pages: -- xref:set-a-nightly-scheduled-pipeline.adoc[Set a nightly scheduled pipeline] +- xref:set-a-nightly-scheduled-pipeline.adoc[Set a nightly schedule trigger] - xref:schedule-pipelines-with-multiple-workflows.adoc[Schedule pipelines with multiple workflows] [#scheduled-pipelines-faqs] @@ -103,6 +103,6 @@ include::ROOT:partial$faq/scheduled-pipelines-faq-snip.adoc[] [#next-steps] == Next steps -- xref:migrate-scheduled-workflows-to-scheduled-pipelines.adoc[Migrate scheduled workflows to scheduled pipelines] +- xref:migrate-scheduled-workflows-to-scheduled-pipelines.adoc[Migrate scheduled workflows to schedule triggers] - xref:schedule-pipelines-with-multiple-workflows.adoc[Schedule pipelines with multiple workflows] -- xref:set-a-nightly-scheduled-pipeline.adoc[Set a nightly scheduled pipeline] +- xref:set-a-nightly-scheduled-pipeline.adoc[Set a nightly schedule trigger] From 94042a92120d2c5682c905351a9d5ba6452671ab Mon Sep 17 00:00:00 2001 From: BeFunes Date: Tue, 23 Sep 2025 00:06:17 +0200 Subject: [PATCH 02/25] Update scheduled-pipelines-faq-snip.adoc --- .../faq/scheduled-pipelines-faq-snip.adoc | 33 ++++++++----------- 1 file changed, 13 insertions(+), 20 deletions(-) diff --git a/docs/guides/modules/ROOT/partials/faq/scheduled-pipelines-faq-snip.adoc b/docs/guides/modules/ROOT/partials/faq/scheduled-pipelines-faq-snip.adoc index 0d80d13c8e..4e61a1b7bc 100644 --- a/docs/guides/modules/ROOT/partials/faq/scheduled-pipelines-faq-snip.adoc +++ b/docs/guides/modules/ROOT/partials/faq/scheduled-pipelines-faq-snip.adoc @@ -1,12 +1,12 @@ [#can-i-migrate-existing-scheduled-workflows] -=== Can I migrate existing scheduled workflows to scheduled pipelines? +=== Can I migrate existing scheduled workflows to schedule triggers? -Yes, visit the xref:guides:orchestrate:migrate-scheduled-workflows-to-scheduled-pipelines.adoc[Scheduled pipelines migration] guide for more information. +Yes, visit the xref:guides:orchestrate:migrate-scheduled-workflows-to-scheduled-pipelines.adoc[Schedule triggers migration] guide for more information. [#find-schedules-that-i-have-created] === How do I find the schedules that I have created? -As scheduled pipelines are stored directly in CircleCI, there is a UUID associated with each schedule. You can view schedules that you have created on the **Triggers** page of the project settings. You can also list all the schedules under a single project: +As schedule triggers are stored directly in CircleCI, there is a UUID associated with each schedule. You can view schedules that you have created on the **Triggers** page of the project settings. You can also list all the schedules under a single project: ```shell curl --location --request GET "https://circleci.com/api/v2/project//schedule" \ @@ -16,36 +16,29 @@ curl --location --request GET "https://circleci.com/api/v2/project/ Date: Tue, 23 Sep 2025 00:16:21 +0200 Subject: [PATCH 03/25] Update schedule-pipelines-with-multiple-workflows.adoc --- ...ule-pipelines-with-multiple-workflows.adoc | 55 +++++++------------ 1 file changed, 19 insertions(+), 36 deletions(-) diff --git a/docs/guides/modules/orchestrate/pages/schedule-pipelines-with-multiple-workflows.adoc b/docs/guides/modules/orchestrate/pages/schedule-pipelines-with-multiple-workflows.adoc index 07bb3fbe93..4dd24766e0 100644 --- a/docs/guides/modules/orchestrate/pages/schedule-pipelines-with-multiple-workflows.adoc +++ b/docs/guides/modules/orchestrate/pages/schedule-pipelines-with-multiple-workflows.adoc @@ -1,44 +1,36 @@ -= Schedule pipelines with multiple workflows += Schedule triggers with multiple workflows :page-platform: Cloud -:page-description: "Learn how to set conditionals for scheduled pipelines in multiple workflows." +:page-description: "Learn how to set conditionals for schedule triggers in multiple workflows." :experimental: -NOTE: Scheduled pipelines are not currently available for GitLab, Bitbucket Data Center or GitHub App projects. To find out if you authorized your GitHub account through the GitHub OAuth app, or the GitHub App, see the xref:integration:github-apps-integration.adoc[GitHub App integration page]. +NOTE: Schedule triggers are not currently available for GitLab and Bitbucket Data Center projects. -Scheduled pipelines are simply triggered pipelines, and by default, for each trigger, every workflow that has been configured will run. You can filter workflows in your `.circleci/config.yml` file with conditionals. The conditionals you set will control which workflows will run when a scheduled pipeline is triggered. These conditions can be set with built-in pipeline values, or through custom pipeline parameters. The examples below demonstrate various ways to set conditionals in your `.circleci/config.yml` file. +By default, when a pipeline is triggered via schedule trigger each of its workflows will run . You can filter workflows in your `.circleci/config.yml` file with conditionals. The conditionals you set will control which workflows will run when a pipeline is triggered via schedule. These conditions can be set with built-in pipeline values, or through custom pipeline parameters. The examples below demonstrate various ways to set conditionals in your `.circleci/config.yml` file. [#schedule-using-built-in-pipeline-values] ## Schedule using built-in pipeline values -One way to implement workflows filtering is by using pipeline values. The example below uses the built-in pipeline values `pipeline.trigger_source` and `pipeline.schedule.name`. The examples use `daily_build` and `nightly_build` as the `pipeline.schedule.name`, however, the value of `pipeline.schedule.name` can be whatever you would like when using scheduled pipelines. +One way to implement workflows filtering is by using pipeline values. The example below uses the built-in pipeline values `pipeline.trigger_source` and `pipeline.schedule.name`. The examples use `daily_build` and `nightly_build` as the `pipeline.schedule.name`, however, the value of `pipeline.schedule.name` can be whatever you would like when using schedule triggers. ```yaml version: 2.1 ... daily-run-workflow: # run workflow only when the daily_build pipeline is triggered - when: - and: - - equal: [ scheduled_pipeline, << pipeline.trigger_source >> ] - - equal: [ daily_build, << pipeline.schedule.name >> ] + when: pipeline.trigger_source == "scheduled_pipeline" and pipeline.schedule.name == "daily_build" jobs: - test - build nightly-run-workflow: # run workflow only when the nightly_build pipeline is triggered - when: - and: - - equal: [ scheduled_pipeline, << pipeline.trigger_source >> ] - - equal: [ nightly_build, << pipeline.schedule.name >> ] + when: pipeline.trigger_source == 'scheduled_pipeline' and pipeline.schedule.name == 'nightly_build' jobs: - build - deploy ... ``` -Note that in the above example, the second `equal` under `when` is not strictly necessary. The `pipeline.schedule.name` is an available pipeline value when the pipeline is triggered by a schedule. - You may also add filtering for workflows that should *not* run when a schedule is triggered: [,yaml] @@ -47,19 +39,14 @@ version: 2.1 ... daily-run-workflow: # run workflow only when the daily_build pipeline is triggered - when: - and: - - equal: [ scheduled_pipeline, << pipeline.trigger_source >> ] - - equal: [ daily_build, << pipeline.schedule.name >> ] + when: pipeline.trigger_source == "scheduled_pipeline" and pipeline.schedule.name == "daily_build" jobs: - test - build nightly-run-workflow: -# do NOT run workflow if a scheduled pipeline is triggered - when: - not: - equal: [ scheduled_pipeline, << pipeline.trigger_source >> ] +# do NOT run workflow if a schedule trigger is triggered + when: pipeline.trigger_source != "scheduled_pipeline" jobs: - build - deploy @@ -83,14 +70,13 @@ parameters: default: false workflows: - # do not run the scheduled pipeline if build-test-deploy + # do not run the schedule trigger if build-test-deploy build-test-deploy: - when: - not: << pipeline.parameters.run-schedule >> + when: pipeline.parameters.run-schedule == false jobs: - test - build - # run the scheduled pipeline if nightly-snapshot + # run the schedule trigger if nightly-snapshot nightly-snapshot: when: << pipeline.parameters.run-schedule >> jobs: @@ -112,22 +98,19 @@ version: 2.1 workflows: # run workflow only when the daily_build pipeline is triggered daily-run-workflow: - when: - equal: [ daily_build, << pipeline.schedule.name >> ] + when: pipeline.schedule.name == 'daily_build' jobs: - job-one nightly-run-workflow: - # run workflow only when the daily_build pipeline is triggered - when: - equal: [ daily_build, << pipeline.schedule.name >> ] + # run workflow only when the nightly_build pipeline is triggered + when: pipeline.schedule.name == 'nightly_build' jobs: - job-two weekly-run-workflow: # run workflow only when the weekly_build pipeline is triggered - when: - equal: [ weekly_build, << pipeline.schedule.name >> ] + when: pipeline.schedule.name == 'weekly_build' jobs: - job-three ... @@ -136,5 +119,5 @@ workflows: [#next-steps] == Next steps -- xref:set-a-nightly-scheduled-pipeline.adoc[Set a nightly scheduled pipeline] -- xref:migrate-scheduled-workflows-to-scheduled-pipelines.adoc[Migrate scheduled workflows to scheduled pipelines] +- xref:set-a-nightly-scheduled-pipeline.adoc[Set a nightly schedule trigger] +- xref:migrate-scheduled-workflows-to-scheduled-pipelines.adoc[Migrate scheduled workflows to schedule triggers] From e62222de30d0bd64b0e94b482568e30444d00162 Mon Sep 17 00:00:00 2001 From: BeFunes Date: Tue, 23 Sep 2025 00:24:28 +0200 Subject: [PATCH 04/25] Update scheduled-pipelines.adoc --- .../modules/orchestrate/pages/scheduled-pipelines.adoc | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/guides/modules/orchestrate/pages/scheduled-pipelines.adoc b/docs/guides/modules/orchestrate/pages/scheduled-pipelines.adoc index 79e9fbb521..482d15afaa 100644 --- a/docs/guides/modules/orchestrate/pages/scheduled-pipelines.adoc +++ b/docs/guides/modules/orchestrate/pages/scheduled-pipelines.adoc @@ -34,6 +34,11 @@ You can find a basic how-to guide on the xref:set-a-nightly-scheduled-pipeline.a To get started with schedule triggers, you have the option of using the API, or using the CircleCI web app. Both methods are described below. +// I think we need 3 tabs here +// - Bitbucket Cloud using the web-app --> use the Triggers tab +// - GitHub (OAuth and GitHub App) using the web-app --> use the Project Setup tab +// - API (with caveat that it's not yet available for GitHub App) + [#use-project-settings] === Use project settings in the web app From 467cd6ef8f172f7e54a4ee606ee3ea12dba2fdac Mon Sep 17 00:00:00 2001 From: BeFunes Date: Tue, 23 Sep 2025 00:25:53 +0200 Subject: [PATCH 05/25] Update scheduled-pipeline-setup.adoc --- .../pipelines-and-triggers/scheduled-pipeline-setup.adoc | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/docs/guides/modules/ROOT/partials/pipelines-and-triggers/scheduled-pipeline-setup.adoc b/docs/guides/modules/ROOT/partials/pipelines-and-triggers/scheduled-pipeline-setup.adoc index fdc886e3a3..2ae6b3261f 100644 --- a/docs/guides/modules/ROOT/partials/pipelines-and-triggers/scheduled-pipeline-setup.adoc +++ b/docs/guides/modules/ROOT/partials/pipelines-and-triggers/scheduled-pipeline-setup.adoc @@ -2,7 +2,7 @@ include::ROOT:partial$app-navigation/steps-to-project-settings.adoc[] . Select **Triggers** in the sidebar. . Select btn:[Add Trigger]. + -NOTE: The "Pipeline to run" menu only shows the OAuth pipelines, you cannot schedule GitHub App, GitLab or Bitbucket Data Center pipelines. +NOTE: Gitlab and Bitbucket Data Center pipelines do not yet support schedule triggers. + ** Give your trigger a descriptive name. ** Enter an optional trigger description. @@ -13,7 +13,4 @@ NOTE: The "Pipeline to run" menu only shows the OAuth pipelines, you cannot sche ** Select an actor to initiate the trigger. . Define the new schedule by filling out the form, then select **Save Trigger**. - -The form also provides the option of adding xref:guides:orchestrate:pipeline-variables.adoc[pipeline parameters], which are typed pipeline variables that you declare at the top level of a configuration. - If you would like to manage common schedules for multiple workflows, you will need to manually set this in your `.circleci/config.yml` file. See the xref:guides:orchestrate:schedule-pipelines-with-multiple-workflows.adoc[Schedule pipelines with multiple workflows] page for examples. From b3c3b694621e2693b1419f66e09cba858b3cc446 Mon Sep 17 00:00:00 2001 From: BeFunes Date: Tue, 23 Sep 2025 00:29:28 +0200 Subject: [PATCH 06/25] Update set-a-nightly-scheduled-pipeline.adoc --- .../pages/set-a-nightly-scheduled-pipeline.adoc | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/guides/modules/orchestrate/pages/set-a-nightly-scheduled-pipeline.adoc b/docs/guides/modules/orchestrate/pages/set-a-nightly-scheduled-pipeline.adoc index 56bb3372e7..f08637c2e6 100644 --- a/docs/guides/modules/orchestrate/pages/set-a-nightly-scheduled-pipeline.adoc +++ b/docs/guides/modules/orchestrate/pages/set-a-nightly-scheduled-pipeline.adoc @@ -1,9 +1,9 @@ -= Set a nightly scheduled pipeline += Set a nightly schedule trigger :page-platform: Cloud -:page-description: "Learn how to create scheduled pipelines on a specific timetable." +:page-description: "Learn how to create schedule triggers on a specific timetable." :experimental: -NOTE: Scheduled pipelines are not currently available for GitLab, GitHub App or Bitbucket Data Center projects. To find out if you authorized your GitHub account through the GitHub OAuth app, or the GitHub App, see the xref:integration:github-apps-integration.adoc[GitHub App integration page]. +NOTE: Schedule triggers are not currently available for GitLab and Bitbucket Data Center projects. A common scenario you might want to set up is to trigger a pipeline overnight. The examples below shows how to schedule a pipeline to be run at midnight every night. You can set a schedule right from the link:https://app.circleci.com/[CircleCI web app], or if you would prefer, you can set one using the link:https://circleci.com/docs/api/v2/index.html[API]. @@ -15,9 +15,9 @@ To access the form for specifying a schedule for a trigger, navigate to the foll * menu:Project Settings[Project Setup] if you are using GitHub. * menu:Project Settings[Triggers] if you are using Bitbucket Cloud. -image::guides:ROOT:pipelines-scheduled-trigger-form.png[Scheduled pipelines web app form] +image::guides:ROOT:pipelines-scheduled-trigger-form.png[Schedule triggers web app form] -The form allows you to schedule a trigger weekly or monthly. The weekly option (shown above) allows you to select specific days of the week. The monthly option allows you to select specific days of the month's calendar. With either option, you then specify which months of the year you would like the trigger to repeat. +The form allows you to schedule a trigger to run weekly or monthly. The weekly option (shown above) allows you to select specific days of the week. The monthly option allows you to select specific days of the month's calendar. With either option, you then specify which months of the year you would like the trigger to repeat. For a nightly schedule, you will need to take into account the form uses UTC (coordinated universal time). For example, if you would like your pipeline to trigger at midnight (0:00) in eastern standard time (EST), you would need to find the difference from UTC. In this scenario, 0:00 EST is 5:00 UTC. @@ -73,5 +73,5 @@ You can view the build scheduling of this link:https://github.com/zmarkan/Androi [#next-steps] == Next steps -- xref:migrate-scheduled-workflows-to-scheduled-pipelines.adoc[Migrate scheduled workflows to scheduled pipelines] +- xref:migrate-scheduled-workflows-to-scheduled-pipelines.adoc[Migrate scheduled workflows to schedule triggers] - xref:schedule-pipelines-with-multiple-workflows.adoc[Schedule pipelines with multiple workflows] From 901cd61347f337a93db37c3999db74608b269563 Mon Sep 17 00:00:00 2001 From: BeFunes Date: Tue, 23 Sep 2025 00:37:17 +0200 Subject: [PATCH 07/25] Update migrate-scheduled-workflows-to-scheduled-pipelines.adoc --- ...uled-workflows-to-scheduled-pipelines.adoc | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/docs/guides/modules/orchestrate/pages/migrate-scheduled-workflows-to-scheduled-pipelines.adoc b/docs/guides/modules/orchestrate/pages/migrate-scheduled-workflows-to-scheduled-pipelines.adoc index 1dff114cb9..03426d7b29 100644 --- a/docs/guides/modules/orchestrate/pages/migrate-scheduled-workflows-to-scheduled-pipelines.adoc +++ b/docs/guides/modules/orchestrate/pages/migrate-scheduled-workflows-to-scheduled-pipelines.adoc @@ -1,16 +1,14 @@ -= Migrate scheduled workflows to scheduled pipelines += Migrate scheduled workflows to schedule triggers :page-platform: Cloud -:page-description: Migrate scheduled workflows to scheduled pipelines +:page-description: Migrate scheduled workflows to schedule triggers :experimental: -NOTE: **The deprecation of the scheduled workflows feature has been postponed**. Since the deprecation announcement went live, your feedback and feature requests have been monitored and it is clear there is more work to do in order to improve the existing scheduled pipelines experience, and also make migration easier for all. Updates on a new deprecation timeline will be announced here and on link:https://discuss.circleci.com/[CircleCI Discuss]. - include::ROOT:partial$notes/standalone-unsupported.adoc[This feature is not supported for GitLab, GitHub App or Bitbucket Data Center] [#introduction] == Introduction -Migrating to scheduled pipelines from scheduled workflows will eliminate the following limitations of scheduled workflows: +Schedule workflows have some limitations that make them less convenient than schedule triggers: - Cannot control the actor (yourself, or the scheduling system), so scheduled workflows cannot use restricted contexts - Cannot control the interaction with auto-cancelling of pipelines @@ -19,12 +17,12 @@ Migrating to scheduled pipelines from scheduled workflows will eliminate the fol - Cannot kick off test runs for scheduled workflows without changing the schedule - Cannot restrict scheduled workflows from PR branches if you want the workflow to run on webhooks -In addition, scheduled pipelines allow for the consolidation of common schedules. With scheduled workflows, for example, if you had three workflows you wanted to run at midnight every day, you would need three separate schedules. However, with scheduled pipelines, you can set up a single schedule to run all three workflows at midnight every day. +In addition, schedule triggers allow for the consolidation of common schedules. With scheduled workflows, for example, if you had three workflows you wanted to run at midnight every day, you would need three separate schedules. However, with schedule triggers, you can set up a single schedule to run all three workflows at midnight every day. -[#find-your-scheduled-trigger] -== 1. Find your scheduled trigger +[#find-your-scheduled-workflow] +== 1. Find your schedule workflow -To migrate from scheduled workflows to scheduled pipelines, you will first need to find the scheduled trigger in your project's `.circleci/config.yml`. +To migrate from scheduled workflows to schedule triggers, you will first need to find the schedule workflow in your project's `.circleci/config.yml`. For example, it might look like: @@ -43,12 +41,14 @@ daily-run-workflow: - build ``` -[#create-the-new-schedule] -== 2. Create the new schedule +[#create-the-new-schedule-trigger] +== 2. Create the new schedule trigger Before you can create a new schedule, you will need to interpret the frequency your trigger needs to run from the cron expression. Once you have done that, you will create a schedule using either the API or the project settings in the web app. Both methods are described below. [#use-the-api] + +// TODO: not available yet for github app schedules === a. Use the API Have your CircleCI token ready, or create a new token by following the steps on the xref:toolkit:managing-api-tokens.adoc[Managing API tokens] page. Create a new schedule link:https://circleci.com/docs/api/v2/index.html#operation/createSchedule[using the API]. For example: @@ -80,10 +80,10 @@ For additional information, refer to the **Schedule** section under the link:htt [#use-project-settings] === b. Use project settings in the web app -. In the CircleCI web app, navigate to **Projects** in the sidebar, then select the ellipsis (...) next to your project and select **Project Settings**. You can also find the **Project Settings** button on each project's landing page. -. Navigate to **Triggers**. -. To create a new schedule, select **Add Trigger**. -. Define the new schedule by filling out the form, then select **Save Trigger**. +. In the CircleCI web app, navigate to **Projects** in the sidebar, then select the ellipsis (...) next to your project and select **Project Settings**. You can also find the **Project Settings** button on each project's landing page. +If you are using GitHub, navigate to menu:Project Settings[Project Setup], identify the pipeline you want to schedule, and select "Schedule +". +If yuo are using Bitbucket Cloud, navigate to menu:Project Settings[Triggers] and select **Add Trigger**. +Define the new schedule by filling out the form, then save. The form also provides the option of adding xref:pipeline-variables.adoc[pipeline parameters], which are typed pipeline variables declared at the top level of a configuration. @@ -102,4 +102,4 @@ daily-run-workflow: [#next-steps] == Next steps - xref:schedule-pipelines-with-multiple-workflows.adoc[Schedule pipelines with multiple workflows] -- xref:set-a-nightly-scheduled-pipeline.adoc[Set a nightly scheduled pipeline] +- xref:set-a-nightly-scheduled-pipeline.adoc[Set a nightly schedule trigger] From 5cd1814d5762e26ef944474c2033aee28ccaab35 Mon Sep 17 00:00:00 2001 From: BeFunes Date: Tue, 23 Sep 2025 00:45:23 +0200 Subject: [PATCH 08/25] Update using-the-circleci-github-app-in-an-oauth-org.adoc --- .../pages/using-the-circleci-github-app-in-an-oauth-org.adoc | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/guides/modules/integration/pages/using-the-circleci-github-app-in-an-oauth-org.adoc b/docs/guides/modules/integration/pages/using-the-circleci-github-app-in-an-oauth-org.adoc index ee0950624c..cc89e5e762 100644 --- a/docs/guides/modules/integration/pages/using-the-circleci-github-app-in-an-oauth-org.adoc +++ b/docs/guides/modules/integration/pages/using-the-circleci-github-app-in-an-oauth-org.adoc @@ -111,7 +111,8 @@ _Used to trigger pipelines from any external system that can send HTTP requests_ * Event name and event source are user-defined. *Schedules* + -Not supported yet, but coming soon. As an alternative, use custom webhooks with third-party scheduling tools. +_Used to trigger pipelines on a schedule (nightly builds for example)_ +* Zero, one or many can be created per pipeline. *API / Manual* + GitHub App pipelines can be triggered via API and manually through the CircleCI web app. @@ -138,7 +139,7 @@ The following table summarizes the trigger availability by pipeline type. |GitHub App image:guides:ROOT:icons/github-app.svg[GitHub App pipeline badge, role="no-border"] ^|[.circle-red]#*No*# -^|[.circle-red]#*No*# +^|Zero, one, many ^|Zero, one, many ^|Zero, one, many ^|[.circle-green]#*Yes*# From f358f63ecb51a65f4c436297c31e137feaafe373 Mon Sep 17 00:00:00 2001 From: BeFunes Date: Tue, 23 Sep 2025 00:46:47 +0200 Subject: [PATCH 09/25] Update version-control-system-integration-overview.adoc --- .../pages/version-control-system-integration-overview.adoc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/guides/modules/integration/pages/version-control-system-integration-overview.adoc b/docs/guides/modules/integration/pages/version-control-system-integration-overview.adoc index 9c02d16237..f30e94843f 100644 --- a/docs/guides/modules/integration/pages/version-control-system-integration-overview.adoc +++ b/docs/guides/modules/integration/pages/version-control-system-integration-overview.adoc @@ -116,8 +116,8 @@ include::ROOT:partial$tips/check-github-type.adoc[Check your GitHub integration | [.circle-red]#**No**# | [.circle-red]#**No**# -| xref:orchestrate:scheduled-pipelines.adoc[Scheduled pipelines] -| [.circle-red]#**No** ^1^# +| xref:orchestrate:scheduled-pipelines.adoc[Schedule triggers] +| [[.circle-green]#**Yes**# | [.circle-red]#**No**# | [.circle-red]#**No**# | [.circle-green]#**Yes**# From 792a38d66f78c83d6ac9c19813081de63bff5006 Mon Sep 17 00:00:00 2001 From: BeFunes Date: Tue, 23 Sep 2025 00:52:20 +0200 Subject: [PATCH 10/25] Update github-apps-integration.adoc --- .../modules/integration/pages/github-apps-integration.adoc | 5 ----- 1 file changed, 5 deletions(-) diff --git a/docs/guides/modules/integration/pages/github-apps-integration.adoc b/docs/guides/modules/integration/pages/github-apps-integration.adoc index d4c8d0147f..27f98f8f1c 100644 --- a/docs/guides/modules/integration/pages/github-apps-integration.adoc +++ b/docs/guides/modules/integration/pages/github-apps-integration.adoc @@ -184,11 +184,6 @@ The in-app config editor is currently **only** available for GitHub App accounts Viewing menu:User settings[Account integrations] does not currently show a GitHub App integration. This page only shows GitHub OAuth app integrations. -[#scheduled-pipelines] -=== Scheduled pipelines - -The ability to xref:orchestrate:scheduled-pipelines.adoc[schedule pipelines] is not yet supported for pipelines that use the GitHub App integration. This feature is planned for release by September 2025. As an alternative, use a xref:orchestrate:custom-webhooks.adoc[custom webhook] or the xref:orchestrate:triggers-overview.adoc#run-a-pipeline-using-the-api[V2 API to trigger a pipeline], which you can `curl` with a 3rd party scheduling tool. - [#build-forked-pull-requests] === Build forked pull requests From 77d73e9cf316fff0c606ef798ebf7616d20d321a Mon Sep 17 00:00:00 2001 From: BeFunes Date: Tue, 23 Sep 2025 00:54:34 +0200 Subject: [PATCH 11/25] Update triggers-overview.adoc --- docs/guides/modules/orchestrate/pages/triggers-overview.adoc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/guides/modules/orchestrate/pages/triggers-overview.adoc b/docs/guides/modules/orchestrate/pages/triggers-overview.adoc index 6aa65b96f7..7e4a3896e7 100644 --- a/docs/guides/modules/orchestrate/pages/triggers-overview.adoc +++ b/docs/guides/modules/orchestrate/pages/triggers-overview.adoc @@ -163,9 +163,9 @@ image::guides:ROOT:vscode-ext-config-test-run-crop.png[Screenshot showing the ru [#schedule-a-pipeline] == Schedule a pipeline -include::ROOT:partial$notes/standalone-unsupported.adoc[This feature is not supported for GitLab, GitHub App or Bitbucket Data Center] +NOTE: Schedule triggers are not available for Gitlab and Bitbucket Data Center pipelines. -For non GitLab/GitHub App/Bitbucket Data Center projects, scheduled pipelines allow you to trigger pipelines periodically based on a schedule. To get this set up for a project you can either use the CircleCI web app or use the link:https://circleci.com/docs/api/v2/index.html#operation/createSchedule[API v2]. For full details of both methods see the <> docs. +Schedule triggers allow you to trigger pipelines periodically based on a schedule. To get this set up for a project you can either use the CircleCI web app or use the link:https://circleci.com/docs/api/v2/index.html#operation/createSchedule[API v2]. For full details of both methods see the <> docs. [#next-steps] == Next steps From 1990ed15b7ba3f3b3f3abf2e212c81de4bb91f59 Mon Sep 17 00:00:00 2001 From: BeFunes Date: Tue, 23 Sep 2025 00:56:26 +0200 Subject: [PATCH 12/25] Update configuration-reference.adoc --- docs/reference/modules/ROOT/pages/configuration-reference.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/modules/ROOT/pages/configuration-reference.adoc b/docs/reference/modules/ROOT/pages/configuration-reference.adoc index ff363fc3b8..30851fa712 100644 --- a/docs/reference/modules/ROOT/pages/configuration-reference.adoc +++ b/docs/reference/modules/ROOT/pages/configuration-reference.adoc @@ -2378,7 +2378,7 @@ workflows: NOTE: Scheduled workflows are not available for projects integrated through the GitHub App, GitLab or Bitbucket Data Center. -CAUTION: The scheduled workflows feature is set to be deprecated. Using *scheduled pipelines* rather than scheduled workflows offers several benefits. Visit the scheduled pipelines xref:guides:orchestrate:migrate-scheduled-workflows-to-scheduled-pipelines.adoc#[migration guide] to find out how to migrate existing scheduled workflows to scheduled pipelines. If you would like to set up scheduled pipelines from scratch, visit the xref:guides:orchestrate:scheduled-pipelines.adoc#[Scheduled pipelines] page. +NOTE: Using *schedule triggers* rather than scheduled workflows offers several benefits. Visit the schedule triggers xref:guides:orchestrate:migrate-scheduled-workflows-to-scheduled-pipelines.adoc#[migration guide] to find out how to migrate existing scheduled workflows to schedule triggers. If you would like to set up schedule triggers from scratch, visit the xref:guides:orchestrate:scheduled-pipelines.adoc#[Scheduled pipelines] page. A workflow may have a `schedule` indicating it runs at a certain time, for example a nightly build that runs every day at 12am UTC: From b4597db81c706884c09e2855374a0fa25f2db6ca Mon Sep 17 00:00:00 2001 From: BeFunes Date: Tue, 23 Sep 2025 00:57:39 +0200 Subject: [PATCH 13/25] Update pipeline-variables.adoc --- docs/guides/modules/orchestrate/pages/pipeline-variables.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/guides/modules/orchestrate/pages/pipeline-variables.adoc b/docs/guides/modules/orchestrate/pages/pipeline-variables.adoc index da720869dd..b61f068622 100644 --- a/docs/guides/modules/orchestrate/pages/pipeline-variables.adoc +++ b/docs/guides/modules/orchestrate/pages/pipeline-variables.adoc @@ -124,7 +124,7 @@ In addition to using the API, you can also trigger a pipeline with parameters fr . Use the *Add Parameters* dropdown to specify the type, name, and value of your desired parameters. . Select *Trigger Pipeline*. -Parameters can also be passed when setting up a scheduled pipeline in the web app. The parameters are part of the trigger form in menu:Project Settings[Triggers] or menu:Project Settings[Project Setup]. Any parameter set up as a part of a scheduled pipeline will also need to be declared in the configuration file, otherwise the pipeline will fail with the error `Unexpected argument(s)`. +Parameters can also be passed when setting up a schedule trigger in the web app. The parameters are part of the trigger form in menu:Project Settings[Triggers] or menu:Project Settings[Project Setup]. Any parameter set up as a part of a schedule trigger will also need to be declared in the configuration file, otherwise the pipeline will fail with the error `Unexpected argument(s)`. [#configuration-processing-stages] == Configuration processing stages From af07b9239cc2e47bd2941e79946d7735e2ca81ae Mon Sep 17 00:00:00 2001 From: BeFunes Date: Tue, 23 Sep 2025 00:59:02 +0200 Subject: [PATCH 14/25] Update pipeline-values.adoc --- .../ROOT/partials/pipelines-and-triggers/pipeline-values.adoc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/guides/modules/ROOT/partials/pipelines-and-triggers/pipeline-values.adoc b/docs/guides/modules/ROOT/partials/pipelines-and-triggers/pipeline-values.adoc index a379195ccf..a3a9fdda65 100644 --- a/docs/guides/modules/ROOT/partials/pipelines-and-triggers/pipeline-values.adoc +++ b/docs/guides/modules/ROOT/partials/pipelines-and-triggers/pipeline-values.adoc @@ -80,14 +80,14 @@ | `pipeline.schedule.name` | GitHub OAuth, Bitbucket Cloud | String -| The name of the schedule if it is a scheduled pipeline. Value will be empty string if the pipeline is triggered by other sources. +| The name of the schedule trigger if the pipeline was triggered via schedule. The value will be empty string if the pipeline is triggered by other sources. | image:guides:ROOT:icons/check.svg[check icon, role="no-border"] | image:guides:ROOT:icons/check.svg[check icon, role="no-border"] | `pipeline.schedule.id` | GitHub OAuth, Bitbucket Cloud | String -| The unique id of the schedule if it is a scheduled pipeline. Value will be empty string if the pipeline is triggered by other sources. +| The unique id of the schedule if the pipeline was triggered via schedule trigger. Value will be empty string if the pipeline is triggered by other sources. | image:guides:ROOT:icons/check.svg[check icon, role="no-border"] | image:guides:ROOT:icons/check.svg[check icon, role="no-border"] From ae72662a4bd1e35c47a58a2083c76968178b39d0 Mon Sep 17 00:00:00 2001 From: BeFunes Date: Tue, 23 Sep 2025 01:06:00 +0200 Subject: [PATCH 15/25] Update orchestration-cookbook.adoc --- .../modules/orchestrate/pages/orchestration-cookbook.adoc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/guides/modules/orchestrate/pages/orchestration-cookbook.adoc b/docs/guides/modules/orchestrate/pages/orchestration-cookbook.adoc index 1a2e9de814..0ffa94b394 100644 --- a/docs/guides/modules/orchestrate/pages/orchestration-cookbook.adoc +++ b/docs/guides/modules/orchestrate/pages/orchestration-cookbook.adoc @@ -208,15 +208,15 @@ include::ROOT:partial$using-expressions/env-vars-in-conditional-caveat.adoc[] include::ROOT:partial$tips/trigger-pipeline-with-parameters.adoc[] -== Run a workflow only for scheduled pipelines with a specific name +== Run a workflow only on schedule triggers that have a specific name === Goal -In some cases, you may want to configure a workflow that will only run when a scheduled pipeline has a specific name. +In some cases, you may want to configure a workflow that will only run when a scheduled trigger has a specific name. === Steps -* Update your CircleCI config to use the `pipeline.scheduled_source` and `pipeline.schedule.name` xref:pipeline-variables.adoc#pipeline-values[pipeline values]. +* Update your CircleCI config to use the `pipeline.schedule.name` xref:pipeline-variables.adoc#pipeline-values[pipeline values]. + [,yaml] ---- From 7f676e9e13e7de0fb76a6355feefff8c4f5a6453 Mon Sep 17 00:00:00 2001 From: BeFunes Date: Tue, 23 Sep 2025 01:25:48 +0200 Subject: [PATCH 16/25] Update scheduled-pipelines.adoc --- docs/guides/modules/orchestrate/pages/scheduled-pipelines.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/guides/modules/orchestrate/pages/scheduled-pipelines.adoc b/docs/guides/modules/orchestrate/pages/scheduled-pipelines.adoc index 482d15afaa..9d9b78547b 100644 --- a/docs/guides/modules/orchestrate/pages/scheduled-pipelines.adoc +++ b/docs/guides/modules/orchestrate/pages/scheduled-pipelines.adoc @@ -10,7 +10,7 @@ Schedule triggers allow you to trigger pipelines periodically based on a schedul - Control the actor (yourself, or the scheduling system) associated with the pipeline, which can enable the use of xref:security:contexts.adoc#project-restrictions[Restricted contexts]. - Use xref:dynamic-config.adoc[Dynamic configuration] via setup workflows. - Modify the schedule without having to edit `.circleci/config.yml`. -- Take advantage of xref:skip-build.adoc#auto-cancel[auto-cancelling]. +- Take advantage of xref:skip-build.adoc#auto-cancel[auto-cancelling] (only applicable to GitHub OAuth and Bitbucket Cloud pipelines. GitHub App schedule triggers are never auto-cancelled by design) - Specify xref:pipeline-variables.adoc#pipeline-parameters-in-configuration[Pipeline parameters] associated with a schedule. - Manage common schedules, for example, across workflows. From cee81b034c5b554f06bbbf664e17cef2af68a170 Mon Sep 17 00:00:00 2001 From: Rosie Yohannan Date: Mon, 29 Sep 2025 22:14:44 +0100 Subject: [PATCH 17/25] change filenames and section names for change to feature name --- docs/guides/modules/ROOT/nav.adoc | 9 ++++----- .../faq/scheduled-pipelines-faq-snip.adoc | 11 ++++------- .../introduction-to-the-circleci-web-app.adoc | 2 +- .../pages/bitbucket-data-center-integration.adoc | 4 ++-- .../integration/pages/gitlab-integration.adoc | 5 ++--- ...rsion-control-system-integration-overview.adoc | 2 +- ...scheduled-workflows-to-schedule-triggers.adoc} | 14 ++++++-------- ...chedule-triggers-with-multiple-workflows.adoc} | 9 +++++---- ...uled-pipelines.adoc => schedule-triggers.adoc} | 15 ++++++++------- ...e.adoc => set-a-nightly-schedule-trigger.adoc} | 5 +++-- .../orchestrate/pages/set-up-triggers.adoc | 2 +- .../orchestrate/pages/triggers-overview.adoc | 4 ++-- .../modules/orchestrate/pages/workflows.adoc | 2 +- .../ROOT/pages/configuration-reference.adoc | 2 +- docs/reference/modules/ROOT/pages/faq.adoc | 5 ++--- 15 files changed, 43 insertions(+), 48 deletions(-) rename docs/guides/modules/orchestrate/pages/{migrate-scheduled-workflows-to-scheduled-pipelines.adoc => migrate-scheduled-workflows-to-schedule-triggers.adoc} (92%) rename docs/guides/modules/orchestrate/pages/{schedule-pipelines-with-multiple-workflows.adoc => schedule-triggers-with-multiple-workflows.adoc} (93%) rename docs/guides/modules/orchestrate/pages/{scheduled-pipelines.adoc => schedule-triggers.adoc} (91%) rename docs/guides/modules/orchestrate/pages/{set-a-nightly-scheduled-pipeline.adoc => set-a-nightly-schedule-trigger.adoc} (94%) diff --git a/docs/guides/modules/ROOT/nav.adoc b/docs/guides/modules/ROOT/nav.adoc index 18588e2852..c8d8b6ef26 100644 --- a/docs/guides/modules/ROOT/nav.adoc +++ b/docs/guides/modules/ROOT/nav.adoc @@ -50,17 +50,16 @@ *** xref:orchestrate:github-trigger-event-options.adoc[GitHub trigger event options] *** xref:orchestrate:gitlab-trigger-options.adoc[GitLab trigger options] *** xref:orchestrate:custom-webhooks.adoc[Custom webhooks] -** Schedule -*** xref:orchestrate:scheduled-pipelines.adoc[Scheduled pipelines] +*** xref:orchestrate:schedule-triggers.adoc[Schedule triggers] ** How-to guides *** xref:orchestrate:orchestration-cookbook.adoc[Orchestration cookbook] *** xref:orchestrate:set-up-multiple-configuration-files-for-a-project.adoc[Set up multiple configuration files for a project] *** xref:orchestrate:notify-a-slack-channel-of-a-paused-workflow.adoc[Notify a Slack channel of a paused workflow] *** xref:orchestrate:using-branch-filters.adoc[Using branch filters] *** xref:orchestrate:selecting-a-workflow-to-run-using-pipeline-parameters.adoc[Select a workflow to run using pipeline parameters] -*** xref:orchestrate:migrate-scheduled-workflows-to-scheduled-pipelines.adoc[Migrate scheduled workflows to scheduled pipelines] -*** xref:orchestrate:schedule-pipelines-with-multiple-workflows.adoc[Schedule pipelines with multiple workflows] -*** xref:orchestrate:set-a-nightly-scheduled-pipeline.adoc[Set a nightly scheduled pipeline] +*** xref:orchestrate:migrate-scheduled-workflows-to-schedule-triggers.adoc[Migrate scheduled workflows to schedule triggers] +*** xref:orchestrate:schedule-triggers-with-multiple-workflows.adoc[Schedule triggers with multiple workflows] +*** xref:orchestrate:set-a-nightly-schedule-trigger.adoc[Set a nightly schedule trigger] *** xref:orchestrate:using-dynamic-configuration.adoc[Using dynamic configuration] *** xref:orchestrate:databases.adoc[Configure databases] *** xref:orchestrate:migrate-from-deploy-to-run.adoc[Migrate from deploy to run] diff --git a/docs/guides/modules/ROOT/partials/faq/scheduled-pipelines-faq-snip.adoc b/docs/guides/modules/ROOT/partials/faq/scheduled-pipelines-faq-snip.adoc index 4e61a1b7bc..9613db0c82 100644 --- a/docs/guides/modules/ROOT/partials/faq/scheduled-pipelines-faq-snip.adoc +++ b/docs/guides/modules/ROOT/partials/faq/scheduled-pipelines-faq-snip.adoc @@ -1,7 +1,7 @@ [#can-i-migrate-existing-scheduled-workflows] === Can I migrate existing scheduled workflows to schedule triggers? -Yes, visit the xref:guides:orchestrate:migrate-scheduled-workflows-to-scheduled-pipelines.adoc[Schedule triggers migration] guide for more information. +Yes, visit the xref:guides:orchestrate:migrate-scheduled-workflows-to-schedule-triggers.adoc[Schedule triggers migration] guide for more information. [#find-schedules-that-i-have-created] === How do I find the schedules that I have created? @@ -15,7 +15,6 @@ curl --location --request GET "https://circleci.com/api/v2/project/ use the Triggers tab // - GitHub (OAuth and GitHub App) using the web-app --> use the Project Setup tab -// - API (with caveat that it's not yet available for GitHub App) +// - API (with caveat that it's not yet available for GitHub App) [#use-project-settings] === Use project settings in the web app @@ -76,12 +79,10 @@ include::ROOT:partial$tips/find-project-slug.adoc[] For additional information, refer to the **Schedule** section under the link:https://circleci.com/docs/api/v2/[API v2 docs]. Also see the xref:toolkit:api-developers-guide.adoc#getting-started-with-the-api[Getting started with the API] section of the API Developer's Guide for more guidance on making requests. -[#migrate-scheduled-workflows-to-scheduled-pipelines] == Migrate scheduled workflows to schedule triggers -If you have existing scheduled workflows you need to migrate to schedule triggers, use the xref:migrate-scheduled-workflows-to-scheduled-pipelines.adoc[Schedule triggers migration] guide. +If you have existing scheduled workflows you need to migrate to schedule triggers, use the xref:migrate-scheduled-workflows-to-schedule-triggers.adoc[Schedule triggers migration] guide. -[#scheduled-pipelines-video-tutorial] == Schedule triggers video tutorial The video offers a short tutorial for the following scenarios: @@ -108,6 +109,6 @@ include::ROOT:partial$faq/scheduled-pipelines-faq-snip.adoc[] [#next-steps] == Next steps -- xref:migrate-scheduled-workflows-to-scheduled-pipelines.adoc[Migrate scheduled workflows to schedule triggers] +- xref:migrate-scheduled-workflows-to-schedule-triggers.adoc[Migrate scheduled workflows to schedule triggers] - xref:schedule-pipelines-with-multiple-workflows.adoc[Schedule pipelines with multiple workflows] - xref:set-a-nightly-scheduled-pipeline.adoc[Set a nightly schedule trigger] diff --git a/docs/guides/modules/orchestrate/pages/set-a-nightly-scheduled-pipeline.adoc b/docs/guides/modules/orchestrate/pages/set-a-nightly-schedule-trigger.adoc similarity index 94% rename from docs/guides/modules/orchestrate/pages/set-a-nightly-scheduled-pipeline.adoc rename to docs/guides/modules/orchestrate/pages/set-a-nightly-schedule-trigger.adoc index f08637c2e6..56061bf9f9 100644 --- a/docs/guides/modules/orchestrate/pages/set-a-nightly-scheduled-pipeline.adoc +++ b/docs/guides/modules/orchestrate/pages/set-a-nightly-schedule-trigger.adoc @@ -2,8 +2,9 @@ :page-platform: Cloud :page-description: "Learn how to create schedule triggers on a specific timetable." :experimental: +:page-aliases: set-a-nightly-scheduled-pipeline.adoc -NOTE: Schedule triggers are not currently available for GitLab and Bitbucket Data Center projects. +NOTE: Schedule triggers are not currently available for GitLab and Bitbucket Data Center projects. A common scenario you might want to set up is to trigger a pipeline overnight. The examples below shows how to schedule a pipeline to be run at midnight every night. You can set a schedule right from the link:https://app.circleci.com/[CircleCI web app], or if you would prefer, you can set one using the link:https://circleci.com/docs/api/v2/index.html[API]. @@ -73,5 +74,5 @@ You can view the build scheduling of this link:https://github.com/zmarkan/Androi [#next-steps] == Next steps -- xref:migrate-scheduled-workflows-to-scheduled-pipelines.adoc[Migrate scheduled workflows to schedule triggers] +- xref:migrate-scheduled-workflows-to-schedule-triggers.adoc[Migrate scheduled workflows to schedule triggers] - xref:schedule-pipelines-with-multiple-workflows.adoc[Schedule pipelines with multiple workflows] diff --git a/docs/guides/modules/orchestrate/pages/set-up-triggers.adoc b/docs/guides/modules/orchestrate/pages/set-up-triggers.adoc index f5e6c1cc9a..ccde97f60f 100644 --- a/docs/guides/modules/orchestrate/pages/set-up-triggers.adoc +++ b/docs/guides/modules/orchestrate/pages/set-up-triggers.adoc @@ -11,7 +11,7 @@ A trigger kicks off a pipeline to run the workflows defined in your connected co == Add a trigger -NOTE: Bitbucket Cloud triggers are created automatically when setting up a project and they cannot be edited. The only additional trigger types available for Bitbucket Cloud pipelines are xref:scheduled-pipelines.adoc[scheduled triggers]. +NOTE: Bitbucket Cloud triggers are created automatically when setting up a project and they cannot be edited. The only additional trigger types available for Bitbucket Cloud pipelines are xref:schedule-triggers.adoc[schedule triggers]. NOTE: **Using CircleCI server?** The Pipeline and Trigger pages under Project Settings and pipeline and trigger add/edit functionality is **not** available. CircleCI server pipelines are set up when a project is set up and cannot be edited. CircleCI server requires CircleCI configuration files to be stored in the same repository as your code at `.circleci/config.yml`. diff --git a/docs/guides/modules/orchestrate/pages/triggers-overview.adoc b/docs/guides/modules/orchestrate/pages/triggers-overview.adoc index 7e4a3896e7..a764c90d27 100644 --- a/docs/guides/modules/orchestrate/pages/triggers-overview.adoc +++ b/docs/guides/modules/orchestrate/pages/triggers-overview.adoc @@ -163,9 +163,9 @@ image::guides:ROOT:vscode-ext-config-test-run-crop.png[Screenshot showing the ru [#schedule-a-pipeline] == Schedule a pipeline -NOTE: Schedule triggers are not available for Gitlab and Bitbucket Data Center pipelines. +NOTE: Schedule triggers are not available for GitLab and Bitbucket Data Center pipelines. -Schedule triggers allow you to trigger pipelines periodically based on a schedule. To get this set up for a project you can either use the CircleCI web app or use the link:https://circleci.com/docs/api/v2/index.html#operation/createSchedule[API v2]. For full details of both methods see the <> docs. +Schedule triggers allow you to trigger pipelines periodically based on a schedule. To get this set up for a project you can either use the CircleCI web app or use the link:https://circleci.com/docs/api/v2/index.html#operation/createSchedule[API v2]. For full details of both methods see the xref:schedule-triggers.adoc[Schedule Triggers] docs. [#next-steps] == Next steps diff --git a/docs/guides/modules/orchestrate/pages/workflows.adoc b/docs/guides/modules/orchestrate/pages/workflows.adoc index b4628f433e..066106f994 100644 --- a/docs/guides/modules/orchestrate/pages/workflows.adoc +++ b/docs/guides/modules/orchestrate/pages/workflows.adoc @@ -388,7 +388,7 @@ NOTE: Scheduled workflows are not available for projects integrated through the NOTE: *The deprecation of the scheduled workflows feature is postponed*. Since the deprecation announcement went live, your feedback and feature requests have been monitored and it is clear there is more work for us to do to improve the existing scheduled pipelines experience, and also make migration easier for all. Updates on a new deprecation timeline will be announced here and on link:https://discuss.circleci.com/[CircleCI Discuss]. -CAUTION: The scheduled workflows feature does not support xref:dynamic-config.adoc[Dynamic configuration]. If you use dynamic configuration you will need to use xref:scheduled-pipelines.adoc[Scheduled pipelines] for scheduling. More information can be found in this link:https://support.circleci.com/hc/en-us/articles/360060833331-Support-for-Scheduled-Workflows-in-Dynamic-Configurations-Setup-Workflows[support article]. +CAUTION: The scheduled workflows feature does not support xref:dynamic-config.adoc[dynamic configuration]. If you use dynamic configuration you will need to use xref:schedule-triggers.adoc[schedule triggers] for scheduling. More information can be found in this link:https://support.circleci.com/hc/en-us/articles/360060833331-Support-for-Scheduled-Workflows-in-Dynamic-Configurations-Setup-Workflows[support article]. By default, a workflow runs on every push, or based on the event rules you have set up for your trigger (menu:Project settings[Triggers] or menu:Project settings[Project Setup]). To trigger a workflow on a schedule, add the `triggers` key to the workflow and specify a `schedule`. Scheduled workflows use the `cron` syntax to represent Coordinated Universal Time (UTC). diff --git a/docs/reference/modules/ROOT/pages/configuration-reference.adoc b/docs/reference/modules/ROOT/pages/configuration-reference.adoc index 30851fa712..74a12749b5 100644 --- a/docs/reference/modules/ROOT/pages/configuration-reference.adoc +++ b/docs/reference/modules/ROOT/pages/configuration-reference.adoc @@ -2378,7 +2378,7 @@ workflows: NOTE: Scheduled workflows are not available for projects integrated through the GitHub App, GitLab or Bitbucket Data Center. -NOTE: Using *schedule triggers* rather than scheduled workflows offers several benefits. Visit the schedule triggers xref:guides:orchestrate:migrate-scheduled-workflows-to-scheduled-pipelines.adoc#[migration guide] to find out how to migrate existing scheduled workflows to schedule triggers. If you would like to set up schedule triggers from scratch, visit the xref:guides:orchestrate:scheduled-pipelines.adoc#[Scheduled pipelines] page. +NOTE: Using *schedule triggers* rather than scheduled workflows offers several benefits. Visit the schedule triggers xref:guides:orchestrate:migrate-scheduled-workflows-to-schedule-triggers.adoc[migration guide] to find out how to migrate existing scheduled workflows to schedule triggers. If you would like to set up schedule triggers from scratch, visit the xref:guides:orchestrate:schedule-triggers.adoc[Schedule triggers] page. A workflow may have a `schedule` indicating it runs at a certain time, for example a nightly build that runs every day at 12am UTC: diff --git a/docs/reference/modules/ROOT/pages/faq.adoc b/docs/reference/modules/ROOT/pages/faq.adoc index 1dad925f71..bd39c85b2f 100644 --- a/docs/reference/modules/ROOT/pages/faq.adoc +++ b/docs/reference/modules/ROOT/pages/faq.adoc @@ -15,7 +15,7 @@ This page answers frequently asked questions about the following CircleCI topics | <> | <> -| <> +| <> | <> | <> @@ -70,8 +70,7 @@ include::guides:ROOT:partial$faq/self-hosted-runner-faq-snip.adoc[] include::guides:ROOT:partial$faq/pipelines-faq-snip.adoc[] -[#scheduled-pipelines] -== Scheduled pipelines +== Schedule triggers include::guides:ROOT:partial$faq/scheduled-pipelines-faq-snip.adoc[] From 9b1850012e08f4a7fda37e9f008556063b827350 Mon Sep 17 00:00:00 2001 From: Rosie Yohannan Date: Tue, 30 Sep 2025 10:12:46 +0100 Subject: [PATCH 18/25] fix xref --- .../integration/pages/bitbucket-data-center-integration.adoc | 1 - .../pages/migrate-scheduled-workflows-to-schedule-triggers.adoc | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/guides/modules/integration/pages/bitbucket-data-center-integration.adoc b/docs/guides/modules/integration/pages/bitbucket-data-center-integration.adoc index dfab569fbd..f9b67dd5b5 100644 --- a/docs/guides/modules/integration/pages/bitbucket-data-center-integration.adoc +++ b/docs/guides/modules/integration/pages/bitbucket-data-center-integration.adoc @@ -209,7 +209,6 @@ You can only manage your connections between CircleCI and Bitbucket Data Center Passing secrets to forked pull requests is not a currently supported option for Bitbucket Data Center integrations. -[#scheduled-pipelines] === Scheduled triggers The ability to xref:orchestrate:schedule-triggers.adoc[schedule triggers] is not currently supported for Bitbucket Data Center projects. diff --git a/docs/guides/modules/orchestrate/pages/migrate-scheduled-workflows-to-schedule-triggers.adoc b/docs/guides/modules/orchestrate/pages/migrate-scheduled-workflows-to-schedule-triggers.adoc index f31a536bd6..ff5d8c7a48 100644 --- a/docs/guides/modules/orchestrate/pages/migrate-scheduled-workflows-to-schedule-triggers.adoc +++ b/docs/guides/modules/orchestrate/pages/migrate-scheduled-workflows-to-schedule-triggers.adoc @@ -100,4 +100,4 @@ daily-run-workflow: [#next-steps] == Next steps - xref:schedule-pipelines-with-multiple-workflows.adoc[Schedule pipelines with multiple workflows] -- xref:set-a-nightly-scheduled-trigger.adoc[Set a nightly schedule trigger] +- xref:set-a-nightly-schedule-trigger.adoc[Set a nightly schedule trigger] From 4299fdac820329e3e13f94f6edb976b7ecda4b6f Mon Sep 17 00:00:00 2001 From: Rosie Yohannan Date: Tue, 30 Sep 2025 14:34:31 +0100 Subject: [PATCH 19/25] add steps for setting up a schedule trigger for GitHub App --- ...ip.adoc => schedule-trigger-faq-snip.adoc} | 0 .../scheduled-pipeline-setup.adoc | 16 --- .../pipelines-troubleshoot-snip.adoc | 4 +- .../pages/orchestration-cookbook.adoc | 5 +- .../orchestrate/pages/schedule-triggers.adoc | 109 +++++++++++++++--- .../orchestrate/pages/set-up-triggers.adoc | 4 +- docs/reference/modules/ROOT/pages/faq.adoc | 2 +- 7 files changed, 100 insertions(+), 40 deletions(-) rename docs/guides/modules/ROOT/partials/faq/{scheduled-pipelines-faq-snip.adoc => schedule-trigger-faq-snip.adoc} (100%) delete mode 100644 docs/guides/modules/ROOT/partials/pipelines-and-triggers/scheduled-pipeline-setup.adoc diff --git a/docs/guides/modules/ROOT/partials/faq/scheduled-pipelines-faq-snip.adoc b/docs/guides/modules/ROOT/partials/faq/schedule-trigger-faq-snip.adoc similarity index 100% rename from docs/guides/modules/ROOT/partials/faq/scheduled-pipelines-faq-snip.adoc rename to docs/guides/modules/ROOT/partials/faq/schedule-trigger-faq-snip.adoc diff --git a/docs/guides/modules/ROOT/partials/pipelines-and-triggers/scheduled-pipeline-setup.adoc b/docs/guides/modules/ROOT/partials/pipelines-and-triggers/scheduled-pipeline-setup.adoc deleted file mode 100644 index 2ae6b3261f..0000000000 --- a/docs/guides/modules/ROOT/partials/pipelines-and-triggers/scheduled-pipeline-setup.adoc +++ /dev/null @@ -1,16 +0,0 @@ -include::ROOT:partial$app-navigation/steps-to-project-settings.adoc[] -. Select **Triggers** in the sidebar. -. Select btn:[Add Trigger]. -+ -NOTE: Gitlab and Bitbucket Data Center pipelines do not yet support schedule triggers. -+ -** Give your trigger a descriptive name. -** Enter an optional trigger description. -** Select the pipeline to run. -** Select a release frequencies (weekly/monthly, which days/months/time etc.). -** Enter a branch or tag name to determine when to trigger the pipeline. -** Optionally, enter pipeline parameters. If you declare pipeline parameters in the form, you need to make sure they are configured in your project's `.circleci/config.yml`. See the xref:guides:orchestrate:pipeline-variables.adoc#pipeline-parameters-in-configuration[Pipeline values and parameters] page for more information. -** Select an actor to initiate the trigger. -. Define the new schedule by filling out the form, then select **Save Trigger**. - -If you would like to manage common schedules for multiple workflows, you will need to manually set this in your `.circleci/config.yml` file. See the xref:guides:orchestrate:schedule-pipelines-with-multiple-workflows.adoc[Schedule pipelines with multiple workflows] page for examples. diff --git a/docs/guides/modules/ROOT/partials/troubleshoot/pipelines-troubleshoot-snip.adoc b/docs/guides/modules/ROOT/partials/troubleshoot/pipelines-troubleshoot-snip.adoc index ab7db8587d..05525ab67f 100644 --- a/docs/guides/modules/ROOT/partials/troubleshoot/pipelines-troubleshoot-snip.adoc +++ b/docs/guides/modules/ROOT/partials/troubleshoot/pipelines-troubleshoot-snip.adoc @@ -18,8 +18,8 @@ config file .circleci/sample-filename.yml could not be located on branch sample- If your scheduled pipeline is not running, verify the following things: -- Is the actor who is set for the scheduled pipelines still part of the organization? You can find this setting is under **Attribution** in the **Triggers** section of the web app. -- Is the branch set for the schedule deleted? +- Is the actor who is set for the schedule trigger still part of the organization? You can find this setting in the *Pipeline attribution* section for your trigger in the CircleCI web app. +- Does the branch set for the trigger still exist? - Is your VCS organization using SAML protection? SAML tokens expire often, which can cause requests to fail. [#jobs-not-running-when-push-commits] diff --git a/docs/guides/modules/orchestrate/pages/orchestration-cookbook.adoc b/docs/guides/modules/orchestrate/pages/orchestration-cookbook.adoc index f61c8bb0be..dc01005193 100644 --- a/docs/guides/modules/orchestrate/pages/orchestration-cookbook.adoc +++ b/docs/guides/modules/orchestrate/pages/orchestration-cookbook.adoc @@ -211,11 +211,12 @@ In some cases, you may want to configure a workflow that will only run when a sc === Steps -* Update your CircleCI config to use the `pipeline.schedule.name` xref:pipeline-variables.adoc#pipeline-values[pipeline values]. +* Update your CircleCI config to use the `pipeline.scheduled_source` and `pipeline.schedule.name` xref:pipeline-variables.adoc#pipeline-values[pipeline values]. + +.The nightly-run-workflow only runs when the trigger is a scheduled pipeline AND the name of that trigger is "nightly_build" [,yaml] ---- -include::ROOT:example$logic-statement-examples/when-in-workflows/or-equal-dynamic.yml[] +include::ROOT:example$logic-statement-examples/when-in-workflows/and-equal-dynamic.yml[] ---- === Notes diff --git a/docs/guides/modules/orchestrate/pages/schedule-triggers.adoc b/docs/guides/modules/orchestrate/pages/schedule-triggers.adoc index c2666d8261..3be5c1733d 100644 --- a/docs/guides/modules/orchestrate/pages/schedule-triggers.adoc +++ b/docs/guides/modules/orchestrate/pages/schedule-triggers.adoc @@ -28,28 +28,105 @@ Pipeline parameters are typed pipeline variables in the form of a string, intege Schedule triggers are set to run by an "actor", either the CircleCI scheduling system, or a specific user (for example, yourself). The scheduling actor is important to consider if making use of restricted contexts in workflows. If the user (actor) running the workflow does not have access to the context, the workflow will fail with the `Unauthorized` status. -You can find a basic how-to guide on the xref:set-a-nightly-schedule-trigger.adoc[Set a nightly schedule trigger] page, and more advanced examples on the xref:schedule-pipelines-with-multiple-workflows.adoc[Schedule pipelines with multiple workflows] pages. +You can find a basic how-to guide on the xref:set-a-nightly-schedule-trigger.adoc[Set a nightly schedule trigger] page, and more advanced examples on the xref:schedule-triggers-with-multiple-workflows.adoc[Schedule pipelines with multiple workflows] pages. NOTE: Schedule triggers were previously named "scheduled pipelines". [#get-started-with-schedule-triggers] == Get started with schedule triggers -To get started with schedule triggers, you have the option of using the API, or using the CircleCI web app. Both methods are described below. +To get started with schedule triggers, you have the option of using the API, or using the CircleCI web app. Both methods are described below. Select the tab for the pipeline type you are using: -// I think we need 3 tabs here -// - Bitbucket Cloud using the web-app --> use the Triggers tab -// - GitHub (OAuth and GitHub App) using the web-app --> use the Project Setup tab -// - API (with caveat that it's not yet available for GitHub App) - -[#use-project-settings] -=== Use project settings in the web app - -include::ROOT:partial$pipelines-and-triggers/scheduled-pipeline-setup.adoc[Setting up a schedule trigger using the CircleCI web app] +[tabs] +==== +GitHub App:: ++ +-- +include::ROOT:partial$app-navigation/steps-to-project-settings.adoc[] + +. Select **Project Setup** in the sidebar. +Locate your pipeline and select btn:[Schedule +]. +. Complete the schedule trigger form: +** Give your trigger a descriptive name. +** Select a branch to tell CircleCI which code to checkout and where to find your config file. +** Under Pipeline attribution, select the actor to initiate the trigger. You can choose yourself, one of your team, or the scheduling system if you want the trigger to be independent from individual users. +** Enter any pipeline parameters you have configured in your project config file. If you enter any new pipeline parameters make sure to also add them to your config file. You can select btn:[Populate from config] to automatically populate the parameters from your config file. +** Select a trigger frequency and repeat options. ++ +[options="header",cols="1,2"] +|=== +|Field |Options + +|Repeats +|Weekly, Monthly + +|Days of the week +| Radio buttons for each or select all + +|Months +| Radio buttons for each or select all + +|Start time (UTC) +| Radio buttons for each hour or select all + +| Times per hour +a|* 1 (once per hour) +* 2 (every 30 minutes) +* 3 (every 20 minutes) +* 4 (every 15 minutes) +* 5 (every 12 minutes) +* 6 (every 10 minutes) +* 7 (every 8.6 minutes) +* 8 (every 7.5 minutes) +* 9 (every 6.7 minutes) +* 10 (every 6 minutes) +* 11 (every 5.5 minutes) +* 12 (every 5 minutes) +|=== + +. Enable the trigger and select btn:[Save]. +-- +GitHub OAuth:: ++ +-- +include::ROOT:partial$app-navigation/steps-to-project-settings.adoc[] + +. Select **Triggers** in the sidebar. +. Select btn:[Add Trigger]. +** Give your trigger a descriptive name. +** Enter an optional trigger description. +** Select the pipeline to run. +** Select a release frequencies (weekly/monthly, which days/months/time etc.). +** Enter a branch or tag name to determine when to trigger the pipeline. +** Optionally, enter pipeline parameters. If you declare pipeline parameters in the form, you need to make sure they are configured in your project's `.circleci/config.yml`. See the xref:guides:orchestrate:pipeline-variables.adoc#pipeline-parameters-in-configuration[Pipeline values and parameters] page for more information. +** Select an actor to initiate the trigger. +. Define the new schedule by filling out the form, then select **Save Trigger**. +-- +Bitbucket Cloud:: ++ +-- +include::ROOT:partial$app-navigation/steps-to-project-settings.adoc[] + +. Select **Triggers** in the sidebar. +. Select btn:[Add Trigger]. +** Give your trigger a descriptive name. +** Enter an optional trigger description. +** Select the pipeline to run. +** Select a release frequencies (weekly/monthly, which days/months/time etc.). +** Enter a branch or tag name to determine when to trigger the pipeline. +** Optionally, enter pipeline parameters. If you declare pipeline parameters in the form, you need to make sure they are configured in your project's `.circleci/config.yml`. See the xref:guides:orchestrate:pipeline-variables.adoc#pipeline-parameters-in-configuration[Pipeline values and parameters] page for more information. +** Select an actor to initiate the trigger. +. Define the new schedule by filling out the form, then select **Save Trigger**. +-- +==== + +If you would like to manage common schedules for multiple workflows, you will need to manually set this in your `.circleci/config.yml` file. See the xref:guides:orchestrate:schedule-pipelines-with-multiple-workflows.adoc[Schedule pipelines with multiple workflows] page for examples. [#use-the-api] === Use the API +NOTE: Setting up schedule trigger via the API is not yet available for GitHub App pipelines. + If your project has no scheduled workflows, and you would like to try out schedule triggers: . Have your CircleCI token ready, or create a new token by following the steps on the xref:toolkit:managing-api-tokens.adoc[Managing API tokens] page. @@ -98,17 +175,17 @@ The video offers a short tutorial for the following scenarios: ++++ For the documentation for these scenarios, visit the following pages: -- xref:set-a-nightly-scheduled-pipeline.adoc[Set a nightly schedule trigger] -- xref:schedule-pipelines-with-multiple-workflows.adoc[Schedule pipelines with multiple workflows] +- xref:set-a-nightly-schedule-trigger.adoc[Set a nightly schedule trigger] +- xref:schedule-triggers-with-multiple-workflows.adoc[Schedule pipelines with multiple workflows] [#scheduled-pipelines-faqs] == FAQs -include::ROOT:partial$faq/scheduled-pipelines-faq-snip.adoc[] +include::ROOT:partial$faq/schedule-trigger-faq-snip.adoc[] [#next-steps] == Next steps - xref:migrate-scheduled-workflows-to-schedule-triggers.adoc[Migrate scheduled workflows to schedule triggers] -- xref:schedule-pipelines-with-multiple-workflows.adoc[Schedule pipelines with multiple workflows] -- xref:set-a-nightly-scheduled-pipeline.adoc[Set a nightly schedule trigger] +- xref:schedule-triggers-with-multiple-workflows.adoc[Schedule pipelines with multiple workflows] +- xref:set-a-nightly-schedule-trigger.adoc[Set a nightly schedule trigger] diff --git a/docs/guides/modules/orchestrate/pages/set-up-triggers.adoc b/docs/guides/modules/orchestrate/pages/set-up-triggers.adoc index c4436116d3..fc2547e3b9 100644 --- a/docs/guides/modules/orchestrate/pages/set-up-triggers.adoc +++ b/docs/guides/modules/orchestrate/pages/set-up-triggers.adoc @@ -105,9 +105,7 @@ For steps to add a trigger for a pipeline using Bitbucket Data Center, see the x Scheduled:: + -- -include::ROOT:partial$notes/standalone-unsupported.adoc[Unsupported for GitHub App, GitLab, Bitbucket Data Center orgs] - -include::ROOT:partial$pipelines-and-triggers/scheduled-pipeline-setup.adoc[Setting up a scheduled pipeline using the CircleCI web app] +For steps to add a schedule trigger, see the xref:schedule-triggers.adoc[Schedule Triggers] page. -- ==== diff --git a/docs/reference/modules/ROOT/pages/faq.adoc b/docs/reference/modules/ROOT/pages/faq.adoc index bd39c85b2f..54190528b8 100644 --- a/docs/reference/modules/ROOT/pages/faq.adoc +++ b/docs/reference/modules/ROOT/pages/faq.adoc @@ -72,7 +72,7 @@ include::guides:ROOT:partial$faq/pipelines-faq-snip.adoc[] == Schedule triggers -include::guides:ROOT:partial$faq/scheduled-pipelines-faq-snip.adoc[] +include::guides:ROOT:partial$faq/schedule-trigger-faq-snip.adoc[] [#workflows] == Workflows From 560e1ff519b478edf2118b14a5f3c4c7110ae080 Mon Sep 17 00:00:00 2001 From: Rosie Yohannan Date: Wed, 1 Oct 2025 10:57:43 +0100 Subject: [PATCH 20/25] remove vid, add more info about scheduling system and fix links --- .../steps-to-project-settings.adoc | 2 ++ .../faq/schedule-trigger-faq-snip.adoc | 2 +- ...eduled-workflows-to-schedule-triggers.adoc | 16 +++++----- .../orchestrate/pages/schedule-triggers.adoc | 31 +++++-------------- 4 files changed, 19 insertions(+), 32 deletions(-) diff --git a/docs/guides/modules/ROOT/partials/app-navigation/steps-to-project-settings.adoc b/docs/guides/modules/ROOT/partials/app-navigation/steps-to-project-settings.adoc index 866276273c..0e41d5a88a 100644 --- a/docs/guides/modules/ROOT/partials/app-navigation/steps-to-project-settings.adoc +++ b/docs/guides/modules/ROOT/partials/app-navigation/steps-to-project-settings.adoc @@ -1,3 +1,5 @@ . In the link:https://app.circleci.com[CircleCI web app], select your org from the org cards on your user homepage. . Select **Projects** from the sidebar and locate your project from the list. You can use the search to help. . Select the ellipsis image:guides:ROOT:icons/more.svg[more icon, role="no-border"] next to your project and select **Project Settings**. ++ +TIP: You can also access project settings from each project overview page using the btn:[Settings] button. diff --git a/docs/guides/modules/ROOT/partials/faq/schedule-trigger-faq-snip.adoc b/docs/guides/modules/ROOT/partials/faq/schedule-trigger-faq-snip.adoc index 9613db0c82..591a7577cb 100644 --- a/docs/guides/modules/ROOT/partials/faq/schedule-trigger-faq-snip.adoc +++ b/docs/guides/modules/ROOT/partials/faq/schedule-trigger-faq-snip.adoc @@ -22,7 +22,7 @@ Coordinated Universal Time (UTC) is the time zone in which schedules are interpr [#pipelines-scheduled-to-run-specific-time-of-day] === Can pipelines be scheduled to run at a specific time of day? -Yes, you can set up xref:guides:orchestrate:schedule-triggers.adoc[schedule triggers] through the xref:guides:orchestrate:schedule-triggers.adoc#use-project-settings[CircleCI web app], or with xref:guides:orchestrate:schedule-triggers.adoc#use-the-api[CircleCI API v2]. +Yes, you can set up xref:guides:orchestrate:schedule-triggers.adoc[schedule triggers] through the xref:guides:orchestrate:schedule-triggers.adoc#get-started-with-schedule-triggers[CircleCI web app], or with xref:guides:orchestrate:schedule-triggers.adoc#use-the-api[CircleCI API v2]. If you are currently using xref:guides:orchestrate:workflows.adoc#scheduling-a-workflow[Scheduled workflows], see the xref:guides:orchestrate:migrate-scheduled-workflows-to-schedule-triggers.adoc[Migration guide] to update your scheduled workflows to schedule triggers. diff --git a/docs/guides/modules/orchestrate/pages/migrate-scheduled-workflows-to-schedule-triggers.adoc b/docs/guides/modules/orchestrate/pages/migrate-scheduled-workflows-to-schedule-triggers.adoc index ff5d8c7a48..46cf7a401c 100644 --- a/docs/guides/modules/orchestrate/pages/migrate-scheduled-workflows-to-schedule-triggers.adoc +++ b/docs/guides/modules/orchestrate/pages/migrate-scheduled-workflows-to-schedule-triggers.adoc @@ -42,13 +42,13 @@ daily-run-workflow: [#create-the-new-schedule-trigger] == 2. Create the new schedule trigger -Before you can create a new schedule, you will need to interpret the frequency your trigger needs to run from the cron expression. Once you have done that, you will create a schedule using either the API or the project settings in the web app. Both methods are described below. +Before you can create a new schedule, you should interpret the frequency your trigger needs to run from the `cron` expression. Once you have these details, create a schedule via either the API or project settings in the CircleCIweb app. Both methods are described below. [#use-the-api] - -// TODO: not available yet for github app schedules === a. Use the API +NOTE: Setting up schedule trigger via the API is not yet available for GitHub App pipelines. + Have your CircleCI token ready, or create a new token by following the steps on the xref:toolkit:managing-api-tokens.adoc[Managing API tokens] page. Create a new schedule link:https://circleci.com/docs/api/v2/index.html#operation/createSchedule[using the API]. For example: ```shell @@ -78,10 +78,12 @@ For additional information, refer to the **Schedule** section under the link:htt [#use-project-settings] === b. Use project settings in the web app -. In the CircleCI web app, navigate to **Projects** in the sidebar, then select the ellipsis (...) next to your project and select **Project Settings**. You can also find the **Project Settings** button on each project's landing page. -If you are using GitHub, navigate to menu:Project Settings[Project Setup], identify the pipeline you want to schedule, and select "Schedule +". -If yuo are using Bitbucket Cloud, navigate to menu:Project Settings[Triggers] and select **Add Trigger**. -Define the new schedule by filling out the form, then save. +include::ROOT:partial$app-navigation/steps-to-project-settings.adoc[] + +. If you are using GitHub, navigate to menu:Project Settings[Project Setup], identify the pipeline you want to schedule, and select btn:[Schedule +]. ++ +If you are using Bitbucket Cloud, navigate to menu:Project Settings[Triggers] and select **Add Trigger**. +. Define the new schedule by filling out the form, then select btn:[Save]. The form also provides the option of adding xref:pipeline-variables.adoc[pipeline parameters], which are typed pipeline variables declared at the top level of a configuration. diff --git a/docs/guides/modules/orchestrate/pages/schedule-triggers.adoc b/docs/guides/modules/orchestrate/pages/schedule-triggers.adoc index 3be5c1733d..2fed79075e 100644 --- a/docs/guides/modules/orchestrate/pages/schedule-triggers.adoc +++ b/docs/guides/modules/orchestrate/pages/schedule-triggers.adoc @@ -15,7 +15,7 @@ Schedule triggers allow you to trigger pipelines periodically based on a schedul - Specify xref:pipeline-variables.adoc#pipeline-parameters-in-configuration[Pipeline parameters] associated with a schedule. - Manage common schedules, for example, across workflows. -Schedule triggers are configured through the API, or through the project settings in the CircleCI web app. +Configure schedule triggers from menu:Project Settings[Project Setup] or menu:Project Setting[Triggers] in the web app, or via the API for GitHub OAuth or Bitbucket Cloud pipelines. NOTE: A schedule trigger can only be configured for one branch. If you need to schedule for two branches, you would need to set up two schedules. @@ -26,7 +26,7 @@ Schedule triggers allow you to trigger pipelines periodically based on a schedul Pipeline parameters are typed pipeline variables in the form of a string, integer, or boolean. Adding a parameter to a schedule trigger can be done in the web app in the triggers form while setting up a schedule. Any parameters set up in this manner must be added to your configuration file using the `parameters` key. -Schedule triggers are set to run by an "actor", either the CircleCI scheduling system, or a specific user (for example, yourself). The scheduling actor is important to consider if making use of restricted contexts in workflows. If the user (actor) running the workflow does not have access to the context, the workflow will fail with the `Unauthorized` status. +Schedule triggers are set to run by an "actor", either the CircleCI scheduling system, or a specific user (for example, yourself). The scheduling actor is important to consider if making use of restricted contexts in workflows. If the user (actor) running the workflow does not have access to the context, the workflow will fail with the `Unauthorized` status. Using the Scheduling system to be the actor will not count towards your organization's active user quota. You can find a basic how-to guide on the xref:set-a-nightly-schedule-trigger.adoc[Set a nightly schedule trigger] page, and more advanced examples on the xref:schedule-triggers-with-multiple-workflows.adoc[Schedule pipelines with multiple workflows] pages. @@ -49,8 +49,8 @@ Locate your pipeline and select btn:[Schedule +]. . Complete the schedule trigger form: ** Give your trigger a descriptive name. ** Select a branch to tell CircleCI which code to checkout and where to find your config file. -** Under Pipeline attribution, select the actor to initiate the trigger. You can choose yourself, one of your team, or the scheduling system if you want the trigger to be independent from individual users. -** Enter any pipeline parameters you have configured in your project config file. If you enter any new pipeline parameters make sure to also add them to your config file. You can select btn:[Populate from config] to automatically populate the parameters from your config file. +** Under Pipeline attribution, select the actor to initiate the trigger. You can choose yourself, one of your team, or the scheduling system if you want the trigger to be independent from individual users. If your project requires the use of environment variables stored in restricted contexts, you should assign someone who has access to those contexts. +** Enter any pipeline parameters that you would like to set when triggering the pipeline. If you enter any new pipeline parameters make sure to also add them to your config file. You can select btn:[Populate from config] to automatically populate the parameters fields from your config file. ** Select a trigger frequency and repeat options. + [options="header",cols="1,2"] @@ -132,7 +132,8 @@ If your project has no scheduled workflows, and you would like to try out schedu . Have your CircleCI token ready, or create a new token by following the steps on the xref:toolkit:managing-api-tokens.adoc[Managing API tokens] page. . Create a new schedule link:https://circleci.com/docs/api/v2/index.html#operation/createSchedule[using the API]. For example: + -```shell +[source,shell] +---- curl --location --request POST "https://circleci.com/api/v2/project//schedule" \ --header "circle-token: " \ --header "Content-Type: application/json" \ @@ -150,7 +151,7 @@ curl --location --request POST "https://circleci.com/api/v2/project/ - - -++++ - -For the documentation for these scenarios, visit the following pages: -- xref:set-a-nightly-schedule-trigger.adoc[Set a nightly schedule trigger] -- xref:schedule-triggers-with-multiple-workflows.adoc[Schedule pipelines with multiple workflows] - [#scheduled-pipelines-faqs] == FAQs From fed015b7b09b22f090eea11e95799dc490e4fbf7 Mon Sep 17 00:00:00 2001 From: Rosie Yohannan Date: Wed, 1 Oct 2025 12:15:29 +0100 Subject: [PATCH 21/25] fixes --- .../when-in-workflows/and-equal-dynamic.yml | 2 +- .../pages/introduction-to-the-circleci-web-app.adoc | 2 +- docs/guides/modules/orchestrate/pages/automatic-reruns.adoc | 2 +- .../modules/orchestrate/pages/how-to-override-config.adoc | 4 ++-- .../modules/orchestrate/pages/orchestration-cookbook.adoc | 2 +- docs/guides/modules/orchestrate/pages/workflows.adoc | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/guides/modules/ROOT/examples/logic-statement-examples/when-in-workflows/and-equal-dynamic.yml b/docs/guides/modules/ROOT/examples/logic-statement-examples/when-in-workflows/and-equal-dynamic.yml index 194f1d7115..3a1a4c5741 100644 --- a/docs/guides/modules/ROOT/examples/logic-statement-examples/when-in-workflows/and-equal-dynamic.yml +++ b/docs/guides/modules/ROOT/examples/logic-statement-examples/when-in-workflows/and-equal-dynamic.yml @@ -1,6 +1,6 @@ workflows: nightly-run-workflow: -# The "nightly-run-workflow" workflow only runs when the trigger is a scheduled pipeline AND the name of that trigger is "nightly_build" +# The "nightly-run-workflow" workflow only runs when the trigger is scheduled AND the name of that trigger is "nightly_build" when: pipeline.trigger_source == "scheduled_pipeline" and pipeline.schedule.name == "nightly_build" jobs: - build diff --git a/docs/guides/modules/about-circleci/pages/introduction-to-the-circleci-web-app.adoc b/docs/guides/modules/about-circleci/pages/introduction-to-the-circleci-web-app.adoc index 1cdd22b4aa..1171b35b10 100644 --- a/docs/guides/modules/about-circleci/pages/introduction-to-the-circleci-web-app.adoc +++ b/docs/guides/modules/about-circleci/pages/introduction-to-the-circleci-web-app.adoc @@ -153,7 +153,7 @@ The following settings are available in the project settings page. If you do not **Groups**: Provides a list of user groups that have been granted project-specific permissions. For more information, see the xref:permissions-authentication:manage-groups.adoc[Manage groups] page. -**Project Setup**: Provides a list of pipelines that have been set up for the project and their associated triggers. See xref:orchestrate:pipelines.adoc[Pipelines Overview and Setup] for more information. This page includes the option to begin setting up pipelines if none exist. The setup UI for scheduled pipelines is located either here or in the *Triggers* section (if available for your integration). To set up a xref:orchestrate:schedule-triggers.adoc[schedule trigger] you will define a timetable, parameter, and attribution to automatically run a pipeline when the criteria is met. +**Project Setup**: Provides a list of pipelines that have been set up for the project and their associated triggers. See xref:orchestrate:pipelines.adoc[Pipelines Overview and Setup] for more information. This page includes the option to begin setting up pipelines if none exist. The setup UI for schedule triggers is located either here or in the *Triggers* section (if available for your integration). To set up a xref:orchestrate:schedule-triggers.adoc[schedule trigger] you will define a timetable, parameter, and attribution to automatically run a pipeline when the criteria is met. *Pipelines* and *Triggers*: These pages let you set up pipelines and triggers when using the GitLab, Bitbucket Cloud and Bitbucket Data Center integrations. diff --git a/docs/guides/modules/orchestrate/pages/automatic-reruns.adoc b/docs/guides/modules/orchestrate/pages/automatic-reruns.adoc index 712a5cf9e3..2afca6988c 100644 --- a/docs/guides/modules/orchestrate/pages/automatic-reruns.adoc +++ b/docs/guides/modules/orchestrate/pages/automatic-reruns.adoc @@ -89,7 +89,7 @@ workflows: - test ---- -You can combine automatic reruns with workflow conditions. The following example shows how to configure automatic reruns for a workflow that is not triggered by a scheduled pipeline: +You can combine automatic reruns with workflow conditions. The following example shows how to configure automatic reruns for a workflow that is not triggered by a schedule trigger: .Combining automatic reruns with workflow conditions [source,yaml] diff --git a/docs/guides/modules/orchestrate/pages/how-to-override-config.adoc b/docs/guides/modules/orchestrate/pages/how-to-override-config.adoc index 85eb772364..e97168b951 100644 --- a/docs/guides/modules/orchestrate/pages/how-to-override-config.adoc +++ b/docs/guides/modules/orchestrate/pages/how-to-override-config.adoc @@ -329,8 +329,8 @@ While not strictly required, GitHub App integration provides the best experience === Can I use this with legacy GitHub OAuth projects? The override mechanism will work for GitHub OAuth projects, but there is no way to enforce a single config across multiple OAuth projects within the CircleCI platform. The "centralized" config would need to be duplicated in each project. -=== Are scheduled pipelines supported? -Scheduled pipelines are not supported for GitHub App/GitLab projects, so they cannot be triggered from a centralized config. +=== Are schedule triggers supported? +Schedule triggers are not supported for GitLab projects, so they cannot be triggered from a centralized config. === Can I override entire workflows? Config overrides only supports job overrides at this time. diff --git a/docs/guides/modules/orchestrate/pages/orchestration-cookbook.adoc b/docs/guides/modules/orchestrate/pages/orchestration-cookbook.adoc index dc01005193..b9103b2acc 100644 --- a/docs/guides/modules/orchestrate/pages/orchestration-cookbook.adoc +++ b/docs/guides/modules/orchestrate/pages/orchestration-cookbook.adoc @@ -213,7 +213,7 @@ In some cases, you may want to configure a workflow that will only run when a sc * Update your CircleCI config to use the `pipeline.scheduled_source` and `pipeline.schedule.name` xref:pipeline-variables.adoc#pipeline-values[pipeline values]. + -.The nightly-run-workflow only runs when the trigger is a scheduled pipeline AND the name of that trigger is "nightly_build" +.The nightly-run-workflow only runs when the trigger is a schedule trigger AND the name of that trigger is `nightly_build` [,yaml] ---- include::ROOT:example$logic-statement-examples/when-in-workflows/and-equal-dynamic.yml[] diff --git a/docs/guides/modules/orchestrate/pages/workflows.adoc b/docs/guides/modules/orchestrate/pages/workflows.adoc index 353c445180..c524194a07 100644 --- a/docs/guides/modules/orchestrate/pages/workflows.adoc +++ b/docs/guides/modules/orchestrate/pages/workflows.adoc @@ -386,7 +386,7 @@ In this example, the purpose of the `hold` job is to wait for approval to begin NOTE: Scheduled workflows are not available for projects integrated through the GitHub App, GitLab or Bitbucket Data Center. -NOTE: *The deprecation of the scheduled workflows feature is postponed*. Since the deprecation announcement went live, your feedback and feature requests have been monitored and it is clear there is more work for us to do to improve the existing scheduled pipelines experience, and also make migration easier for all. Updates on a new deprecation timeline will be announced here and on link:https://discuss.circleci.com/[CircleCI Discuss]. +NOTE: *The deprecation of the scheduled workflows feature is postponed*. Since the deprecation announcement went live, your feedback and feature requests have been monitored and it is clear there is more work for us to do to improve the existing schedule triggers experience, and also make migration easier for all. Updates on a new deprecation timeline will be announced here and on link:https://discuss.circleci.com/[CircleCI Discuss]. CAUTION: The scheduled workflows feature does not support xref:dynamic-config.adoc[dynamic configuration]. If you use dynamic configuration you will need to use xref:schedule-triggers.adoc[schedule triggers] for scheduling. More information can be found in this link:https://support.circleci.com/hc/en-us/articles/360060833331-Support-for-Scheduled-Workflows-in-Dynamic-Configurations-Setup-Workflows[support article]. From a0c2f105f620713d062e1640b88ce2373c100268 Mon Sep 17 00:00:00 2001 From: Rosie Yohannan Date: Wed, 1 Oct 2025 12:23:36 +0100 Subject: [PATCH 22/25] fix linter errors --- .../modules/ROOT/partials/faq/schedule-trigger-faq-snip.adoc | 2 +- .../integration/pages/bitbucket-data-center-integration.adoc | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/guides/modules/ROOT/partials/faq/schedule-trigger-faq-snip.adoc b/docs/guides/modules/ROOT/partials/faq/schedule-trigger-faq-snip.adoc index 591a7577cb..c8bc26a862 100644 --- a/docs/guides/modules/ROOT/partials/faq/schedule-trigger-faq-snip.adoc +++ b/docs/guides/modules/ROOT/partials/faq/schedule-trigger-faq-snip.adoc @@ -38,4 +38,4 @@ However, subsequent runs of the schedule trigger will always be run on the same === Why can I not add a schedule trigger to my pipeline? -Only GitHub OAuth, GitHub App and Bitbucket Cloud pipelines support schedule triggers. If you try to set up a schedule trigger through the menu:Project Settings[Triggers] menu and do not see your pipeline in the "Pipeline to run" dropdown menu, it may be that you are trying to access an unsupported pipeline type (Gitlab or Bitbucket Data Center). +Only GitHub OAuth, GitHub App and Bitbucket Cloud pipelines support schedule triggers. GitLab and Bitbucket Data Center pipelines do not support schedule triggers. If you set up a schedule trigger through menu:Project Settings[Triggers] and do not see your pipeline in the "Pipeline to run" menu, check your pipeline type is supported . diff --git a/docs/guides/modules/integration/pages/bitbucket-data-center-integration.adoc b/docs/guides/modules/integration/pages/bitbucket-data-center-integration.adoc index f9b67dd5b5..beb7dd2a27 100644 --- a/docs/guides/modules/integration/pages/bitbucket-data-center-integration.adoc +++ b/docs/guides/modules/integration/pages/bitbucket-data-center-integration.adoc @@ -8,7 +8,7 @@ This page walks you through integrating a Bitbucket Data Center project with Cir [#overview] == CircleCI Bitbucket Data Center integration overview -CircleCI CI/CD allows you to build, test (continuous integration) and deploy (continuous deployment, continuous delivery) your Bitbucket Data Center projects each time a developer pushes a change to the codebase, and when a pull request is merged. +CircleCI CI/CD allows you to build, test and deploy your Bitbucket Data Center projects each time a developer pushes a change and when a pull request is merged. Integrate with CircleCI to access features for automated software delivery: From 8fc454bf80707fc7158d402e7874ee77127b7b78 Mon Sep 17 00:00:00 2001 From: Rosie Yohannan Date: Wed, 1 Oct 2025 12:59:07 +0100 Subject: [PATCH 23/25] add screenshot --- .../triggers/set-up-schedule-trigger.png | Bin 0 -> 116426 bytes .../orchestrate/pages/schedule-triggers.adoc | 2 ++ 2 files changed, 2 insertions(+) create mode 100644 docs/guides/modules/ROOT/images/triggers/set-up-schedule-trigger.png diff --git a/docs/guides/modules/ROOT/images/triggers/set-up-schedule-trigger.png b/docs/guides/modules/ROOT/images/triggers/set-up-schedule-trigger.png new file mode 100644 index 0000000000000000000000000000000000000000..d58792c2a81ea05a542d132f7ed2e8ab6a3ab067 GIT binary patch literal 116426 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 Date: Wed, 1 Oct 2025 13:05:59 +0100 Subject: [PATCH 24/25] use partial for setup and use in how-to guide --- .../set-up-schedule-trigger.adoc | 88 +++++++++++++++++++ .../orchestrate/pages/schedule-triggers.adoc | 85 +----------------- .../pages/set-a-nightly-schedule-trigger.adoc | 13 ++- 3 files changed, 94 insertions(+), 92 deletions(-) create mode 100644 docs/guides/modules/ROOT/partials/pipelines-and-triggers/set-up-schedule-trigger.adoc diff --git a/docs/guides/modules/ROOT/partials/pipelines-and-triggers/set-up-schedule-trigger.adoc b/docs/guides/modules/ROOT/partials/pipelines-and-triggers/set-up-schedule-trigger.adoc new file mode 100644 index 0000000000..f7e98d3e3e --- /dev/null +++ b/docs/guides/modules/ROOT/partials/pipelines-and-triggers/set-up-schedule-trigger.adoc @@ -0,0 +1,88 @@ +[tabs] +==== +GitHub App:: ++ +-- +include::ROOT:partial$app-navigation/steps-to-project-settings.adoc[] + +. Select **Project Setup** in the sidebar. +Locate your pipeline and select btn:[Schedule +]. +. Complete the schedule trigger form: ++ +image::guides:ROOT:triggers/set-up-schedule-trigger.png[Schedule triggers web app form] +** Give your trigger a descriptive name. +** Select a branch to tell CircleCI which code to checkout and where to find your config file. +** Under Pipeline attribution, select the actor to initiate the trigger. You can choose yourself, one of your team, or the scheduling system if you want the trigger to be independent from individual users. If your project requires the use of environment variables stored in restricted contexts, you should assign someone who has access to those contexts. +** Enter any pipeline parameters that you would like to set when triggering the pipeline. If you enter any new pipeline parameters make sure to also add them to your config file. You can select btn:[Populate from config] to automatically populate the parameters fields from your config file. +** Select a trigger frequency and repeat options. ++ +[options="header",cols="1,2"] +|=== +|Field |Options + +|Repeats +|Weekly, Monthly + +|Days of the week +| Radio buttons for each or select all + +|Months +| Radio buttons for each or select all + +|Start time (UTC) +| Radio buttons for each hour or select all + +| Times per hour +a|* 1 (once per hour) +* 2 (every 30 minutes) +* 3 (every 20 minutes) +* 4 (every 15 minutes) +* 5 (every 12 minutes) +* 6 (every 10 minutes) +* 7 (every 8.6 minutes) +* 8 (every 7.5 minutes) +* 9 (every 6.7 minutes) +* 10 (every 6 minutes) +* 11 (every 5.5 minutes) +* 12 (every 5 minutes) +|=== + +. Enable the trigger and select btn:[Save]. +-- +GitHub OAuth:: ++ +-- +include::ROOT:partial$app-navigation/steps-to-project-settings.adoc[] + +. Select **Triggers** in the sidebar. +. Select btn:[Add Trigger]. ++ +image::guides:ROOT:pipelines-scheduled-trigger-form.png[Schedule triggers web app form] +** Give your trigger a descriptive name. +** Enter an optional trigger description. +** Select the pipeline to run. +** Select a release frequencies (weekly/monthly, which days/months/time etc.). +** Enter a branch or tag name to determine when to trigger the pipeline. +** Optionally, enter pipeline parameters. If you declare pipeline parameters in the form, you need to make sure they are configured in your project's `.circleci/config.yml`. See the xref:guides:orchestrate:pipeline-variables.adoc#pipeline-parameters-in-configuration[Pipeline values and parameters] page for more information. +** Select an actor to initiate the trigger. +. Define the new schedule by filling out the form, then select **Save Trigger**. +-- +Bitbucket Cloud:: ++ +-- +include::ROOT:partial$app-navigation/steps-to-project-settings.adoc[] + +. Select **Triggers** in the sidebar. +. Select btn:[Add Trigger]. ++ +image::guides:ROOT:pipelines-scheduled-trigger-form.png[Schedule triggers web app form] +** Give your trigger a descriptive name. +** Enter an optional trigger description. +** Select the pipeline to run. +** Select a release frequencies (weekly/monthly, which days/months/time etc.). +** Enter a branch or tag name to determine when to trigger the pipeline. +** Optionally, enter pipeline parameters. If you declare pipeline parameters in the form, you need to make sure they are configured in your project's `.circleci/config.yml`. See the xref:guides:orchestrate:pipeline-variables.adoc#pipeline-parameters-in-configuration[Pipeline values and parameters] page for more information. +** Select an actor to initiate the trigger. +. Define the new schedule by filling out the form, then select **Save Trigger**. +-- +==== \ No newline at end of file diff --git a/docs/guides/modules/orchestrate/pages/schedule-triggers.adoc b/docs/guides/modules/orchestrate/pages/schedule-triggers.adoc index 599a10b450..eca609f4dd 100644 --- a/docs/guides/modules/orchestrate/pages/schedule-triggers.adoc +++ b/docs/guides/modules/orchestrate/pages/schedule-triggers.adoc @@ -37,90 +37,7 @@ NOTE: Schedule triggers were previously named "scheduled pipelines". To get started with schedule triggers, you have the option of using the API, or using the CircleCI web app. Both methods are described below. Select the tab for the pipeline type you are using: -[tabs] -==== -GitHub App:: -+ --- -include::ROOT:partial$app-navigation/steps-to-project-settings.adoc[] - -. Select **Project Setup** in the sidebar. -Locate your pipeline and select btn:[Schedule +]. -. Complete the schedule trigger form: -+ -image::guides:ROOT:triggers/set-up-schedule-trigger.png[Schedule triggers web app form] -** Give your trigger a descriptive name. -** Select a branch to tell CircleCI which code to checkout and where to find your config file. -** Under Pipeline attribution, select the actor to initiate the trigger. You can choose yourself, one of your team, or the scheduling system if you want the trigger to be independent from individual users. If your project requires the use of environment variables stored in restricted contexts, you should assign someone who has access to those contexts. -** Enter any pipeline parameters that you would like to set when triggering the pipeline. If you enter any new pipeline parameters make sure to also add them to your config file. You can select btn:[Populate from config] to automatically populate the parameters fields from your config file. -** Select a trigger frequency and repeat options. -+ -[options="header",cols="1,2"] -|=== -|Field |Options - -|Repeats -|Weekly, Monthly - -|Days of the week -| Radio buttons for each or select all - -|Months -| Radio buttons for each or select all - -|Start time (UTC) -| Radio buttons for each hour or select all - -| Times per hour -a|* 1 (once per hour) -* 2 (every 30 minutes) -* 3 (every 20 minutes) -* 4 (every 15 minutes) -* 5 (every 12 minutes) -* 6 (every 10 minutes) -* 7 (every 8.6 minutes) -* 8 (every 7.5 minutes) -* 9 (every 6.7 minutes) -* 10 (every 6 minutes) -* 11 (every 5.5 minutes) -* 12 (every 5 minutes) -|=== - -. Enable the trigger and select btn:[Save]. --- -GitHub OAuth:: -+ --- -include::ROOT:partial$app-navigation/steps-to-project-settings.adoc[] - -. Select **Triggers** in the sidebar. -. Select btn:[Add Trigger]. -** Give your trigger a descriptive name. -** Enter an optional trigger description. -** Select the pipeline to run. -** Select a release frequencies (weekly/monthly, which days/months/time etc.). -** Enter a branch or tag name to determine when to trigger the pipeline. -** Optionally, enter pipeline parameters. If you declare pipeline parameters in the form, you need to make sure they are configured in your project's `.circleci/config.yml`. See the xref:guides:orchestrate:pipeline-variables.adoc#pipeline-parameters-in-configuration[Pipeline values and parameters] page for more information. -** Select an actor to initiate the trigger. -. Define the new schedule by filling out the form, then select **Save Trigger**. --- -Bitbucket Cloud:: -+ --- -include::ROOT:partial$app-navigation/steps-to-project-settings.adoc[] - -. Select **Triggers** in the sidebar. -. Select btn:[Add Trigger]. -** Give your trigger a descriptive name. -** Enter an optional trigger description. -** Select the pipeline to run. -** Select a release frequencies (weekly/monthly, which days/months/time etc.). -** Enter a branch or tag name to determine when to trigger the pipeline. -** Optionally, enter pipeline parameters. If you declare pipeline parameters in the form, you need to make sure they are configured in your project's `.circleci/config.yml`. See the xref:guides:orchestrate:pipeline-variables.adoc#pipeline-parameters-in-configuration[Pipeline values and parameters] page for more information. -** Select an actor to initiate the trigger. -. Define the new schedule by filling out the form, then select **Save Trigger**. --- -==== +include::ROOT:partial$pipelines-and-triggers/set-up-schedule-trigger.adoc[] If you would like to manage common schedules for multiple workflows, you will need to manually set this in your `.circleci/config.yml` file. See the xref:guides:orchestrate:schedule-pipelines-with-multiple-workflows.adoc[Schedule pipelines with multiple workflows] page for examples. diff --git a/docs/guides/modules/orchestrate/pages/set-a-nightly-schedule-trigger.adoc b/docs/guides/modules/orchestrate/pages/set-a-nightly-schedule-trigger.adoc index 56061bf9f9..38e4ed27b9 100644 --- a/docs/guides/modules/orchestrate/pages/set-a-nightly-schedule-trigger.adoc +++ b/docs/guides/modules/orchestrate/pages/set-a-nightly-schedule-trigger.adoc @@ -11,20 +11,17 @@ A common scenario you might want to set up is to trigger a pipeline overnight. T [#set-a-in-the-web-app] == Set a schedule in the web app -To access the form for specifying a schedule for a trigger, navigate to the following page: - -* menu:Project Settings[Project Setup] if you are using GitHub. -* menu:Project Settings[Triggers] if you are using Bitbucket Cloud. - -image::guides:ROOT:pipelines-scheduled-trigger-form.png[Schedule triggers web app form] - -The form allows you to schedule a trigger to run weekly or monthly. The weekly option (shown above) allows you to select specific days of the week. The monthly option allows you to select specific days of the month's calendar. With either option, you then specify which months of the year you would like the trigger to repeat. +To access the form for specifying a schedule for a trigger, follow the steps below for your pipeline type. For a nightly schedule, you will need to take into account the form uses UTC (coordinated universal time). For example, if you would like your pipeline to trigger at midnight (0:00) in eastern standard time (EST), you would need to find the difference from UTC. In this scenario, 0:00 EST is 5:00 UTC. +include::ROOT:partial$pipelines-and-triggers/set-up-schedule-trigger.adoc[] + [#set-a-schedule-with-the-api] == Set a schedule with the API +NOTE: Setting up a schedule trigger with the API is not currently available for GitHub App pipelines. + To set a schedule with the API, you will need a project building on CircleCI, environment variables set, and your CircleCI personal API token. Much like in the web app form, you are required to enter a name, parameters (like the branch or tag) as well as a timetable. ```javascript From 3d900c75af5b571b9d42a95d26a7736b2fb6fe0d Mon Sep 17 00:00:00 2001 From: Rosie Yohannan Date: Wed, 1 Oct 2025 13:13:48 +0100 Subject: [PATCH 25/25] formatting --- .../pages/using-the-circleci-github-app-in-an-oauth-org.adoc | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/guides/modules/integration/pages/using-the-circleci-github-app-in-an-oauth-org.adoc b/docs/guides/modules/integration/pages/using-the-circleci-github-app-in-an-oauth-org.adoc index cc89e5e762..77873771dd 100644 --- a/docs/guides/modules/integration/pages/using-the-circleci-github-app-in-an-oauth-org.adoc +++ b/docs/guides/modules/integration/pages/using-the-circleci-github-app-in-an-oauth-org.adoc @@ -112,6 +112,7 @@ _Used to trigger pipelines from any external system that can send HTTP requests_ *Schedules* + _Used to trigger pipelines on a schedule (nightly builds for example)_ + * Zero, one or many can be created per pipeline. *API / Manual* +