はじめに
- Droneでのcron設定は, 公式ドキュメントを含めてインターネットに情報が少ないため, 調べたことを書く
- Droneでのcron設定は, ハマりポイントがあるため, 注意を書き残す
- 確認バージョン: 1.9.1
cron追加方法
画面, コマンド, APIの3種類ある.
-
画面からだと, 実行周期のタイミングが5種類 (
@hourly
,@daily
,@monthly
,@weekly
,@yearly
) のみ -
コマンドからだと, 一般的なcron形式 (
0 */30 * * * *
とか) を使える - APIからのやり方は, ここでは割愛する
画面からのcron追加
- cronを追加したいリポジトリを選択
- 「Settings」タブを選択
- 「Cron Jobs」で「Cron Job Name」「Cron Job Branch」を入力. 実行周期を選択
- 「Add A CRON JOB」を押下
- 「Cron Jobs」で追加した設定が確認できたらOK
コマンドからのcron追加
事前準備
drone CLIをインストール
以下の公式を参照
Personal Tokenを設定
右上の自分のアイコンから「User Settings」をクリック
「Your Personal Token」で自分のトークンを控える.
「Example CLI Usage」に記載のように環境変数を設定する.
export DRONE_SERVER=https://example.drone.skkzsh.me
export DRONE_TOKEN=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
コマンドからのcron追加 (例)
以下, リポジトリやcron名, 実行周期などは, 読み替えてください.
drone cron ls skkzsh/app
drone cron add skkzsh/app nightly "0 */30 * * * *" --branch develop
drone cron ls skkzsh/app
drone cron info skkzsh/app nightly
画面でも「Settings」→「Cron Jobs」で追加した設定が確認できる.
cron削除方法
コマンドで削除はできないため, 画面から消す
drone.ymlの書き方
- 公式情報を参照
注意ポイント
Droneはデフォルトでは1時間ごとしかcron jobを確認しないらしい. そのため, 実行周期を10分ごとに設定しても1時間ごとに実行される.
Droneは実行時刻を保証しない. 何分に設定しても, 00分に実行される. そのため, 設定値より最大1時間, 実行遅延が発生する可能性がある.
タイムゾーンは JST (日本時間) でなく, UTCのため, cronの設定時刻に注意.