Start Building for Free
CircleCI.comアカデミーブログコミュニティサポート

パイプラインのスケジュール実行を夜間に設定する

2 months ago1 min read
クラウド
Server v4.x
Server v3.x
Server v2.x
このページの内容

概要

多くの場合に必要とされるのは、パイプラインを夜間にトリガーする設定です。 下記のコード例では、パイプラインを毎晩真夜中に実行するように設定する方法を紹介します。 廃止予定のワークフローのスケジュール実行とは異なり、基本的なパイプラインのスケジュール実行の設定は設定ファイルでは行いません。 スケジュールの設定は、 CircleCI Web アプリ から行います。ご希望の場合は、 API を使って設定することも可能です。

Web アプリでスケジュールを設定する

任意のプロジェクトで、 Project Settings > Triggers に移動すると、トリガースケジュールを指定するフォームが表示されます。

Scheduled pipelines web app form

このフォームではトリガーを毎週または毎月スケジュールできます。 上記のような毎週オプションの場合、一週間の中で特定の日を選択できます。 毎月オプションの場合、月のカレンダーから特定の日を選択できます。 次に、どちらのオプションの場合も 1 年の中でトリガーをリピートしたい月を指定します。

夜間にスケジュールを設定する場合、このフォームでは UTC (協定世界時) が使用されるのでご注意ください。 たとえば、東部標準時 (EST) の真夜中 (0:00) にパイプラインをトリガーするには、UTC との時差を把握する必要があります。 この場合、EST の 0:00 は UTC では 5:00 になります。

API を使ってスケジュールを設定する

API を使ってスケジュールを設定するには、CircleCI でビルドしているプロジェクト、一連の環境変数、そして CircleCI パーソナル API トークンが必要です。 Web アプリのフォームと同じように、名前、パラメーター (ブランチやタグなど)、タイムテーブルを入力する必要があります。

const axios = require('axios').default;
require('dotenv').config()

// environment variables
const API_BASE_URL = "https://circleci.com/api/v2/project"
const vcs = process.env.VCS_TYPE
const org = process.env.ORG_NAME
const project = process.env.PROJECT_ID
const token = process.env.CIRCLECI_TOKEN

const postScheduleEndpoint = `${API_BASE_URL}/${vcs}/${org}/${project}/schedule`

async function setupNightlySchedule(){
  let res = await axios.post(postScheduleEndpoint,
    {
      name: "Nightly build",
      description: "Builds and pushes a new build every night.",
        "attribution-actor": "system",
        "parameters": {
          "branch": "main",
          "run-schedule": true
        },
        "timetable": {
            // once per hour
            "per_hour": 1,
            // at 01:00 UTC
            "hours_of_day": [1],
            // on the following days of the week
            "days_of_week": ["TUE", "WED", "THU", "FRI", "SAT"]
        }
    },
    {
      headers: { 'Circle-Token': token }
    }
  )
  console.log(res.data)
}

setupNightlySchedule()

この サンプルプロジェクト のビルドスケジュールは、GitHub 上でご覧いただけます。


ドキュメントの改善にご協力ください

このガイドは、CircleCI の他のドキュメントと同様にオープンソースであり、 GitHub でご利用いただけます。 ご協力いただき、ありがとうございます。

サポートが必要ですか

CircleCI のサポートエンジニアによる、サービスに関する問題、請求およびアカウントについての質問への対応、設定の構築に関する問題解決のサポートを行っています。 サポートチケットを送信して、CircleCI のサポートエンジニアにお問い合わせください。日本語でお問い合わせいただけます。

または、 サポートサイト から、サポート記事やコミュニティフォーラム、トレーニングリソースをご覧いただけます。