正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

Cron

Cron構文は、ジョブを実行するタイミングをスケジュールするために使用されます。

パイプラインスケジュールを作成したり、デプロイフリーズを設定して意図しないリリースを防いだりするために、Cron構文文字列の使用が必要になる場合があります。

Cron構文

Cronのスケジューリングでは、スペースで区切られた5つの数字を使用します。

# ┌───────────── minute (0 - 59)
# │ ┌───────────── hour (0 - 23)
# │ │ ┌───────────── day of the month (1 - 31)
# │ │ │ ┌───────────── month (1 - 12)
# │ │ │ │ ┌───────────── day of the week (0 - 6) (Sunday to Saturday)
# │ │ │ │ │
# │ │ │ │ │
# │ │ │ │ │
# * * * * * <command to execute>

(出典: Wikipedia

Cron構文では、アスタリスク(*)は「every(すべて)」を意味するため、次のCron文字列は有効です。

  • 毎時0分に1回実行: 0 * * * *
  • 毎日午前0時に1回実行: 0 0 * * *
  • 毎週日曜日の午前0時に1回実行: 0 0 * * 0
  • 毎月1日の午前0時に1回実行: 0 0 1 * *
  • 毎月22日の午前0時に1回実行: 0 0 22 * *
  • 毎年1月1日の午前0時に1回実行: 0 0 1 1 *
  • 毎月2回、1日と15日の午前3時に実行: 0 3 1,15 * *

Cronの完全なドキュメントについては、crontab(5) Linuxマニュアルページを参照してください。LinuxまたはMacOSのターミナルでman 5 crontabと入力すると、このドキュメントをオフラインで参照できます。

さらに、GitLabはfugitを使用します。これは、#%の構文を受け入れます。この構文は、すべてのCronテスターで動作するとは限りません。

  • 毎月第2月曜日の午前0時に1回実行: 0 0 * * 1#2この構文は、fugitハッシュ拡張機能でサポートされています。
  • 隔週日曜日の午前9時に実行: 0 9 * * sun%2この構文は、fugit modulo拡張機能でサポートされています。

Cronの例

# Run at 7:00pm every day:
0 19 * * *

# Run every minute on the 3rd of June:
* * 3 6 *

# Run at 06:30 every Friday:
30 6 * * 5

Cronスケジュールの記述例については、crontab.guruでさらに確認できます。

GitLabにおけるCron構文文字列の解析方法

GitLabでは、サーバー上でCron構文文字列を解析するためにfugitを使用し、ブラウザ上でCron構文を検証するためにcron-validatorを使用しています。また、ブラウザ上でCronを人間が読める文字列に変換するためにcRonstrueを使用しています。