マニフェストリファレンス

SteadyCron v2 YAML マニフェストの完全なフィールドリファレンス — ジョブ、チャンネル、ルール、変数、タグ、ネームスペース。

v2 マニフェストは SteadyCron アカウントの正式な定義です。単一のファイル(またはファイルの ディレクトリ)で、CLI が管理するすべてのジョブ、アラートチャンネル、タグ、変数を宣言します。

トップレベルの構造

namespace: my-app        # オプション — IaC の所有権を限定する
variables:               # サーバーサイドのテンプレート変数(オブジェクトのリスト)
channels:                # アラートチャンネルの定義
tags:                    # 再利用可能なタグ定義
shaping:                 # レート制限のヒント
jobs:                    # HTTP ジョブとハートビートチェック
                         # アラートルールは jobs[].rules の下でジョブごとに宣言する

namespace

このマニフェスト内のすべてのリソースにスコープを割り当てる文字列です。CLI はこのネームスペースに 属するリソースのみを管理します(--prune の場合は削除も)— IaC 管理のジョブと手動作成のジョブが 同じアカウントに安全に共存できます。

namespace: production

namespace を省略するとデフォルトのネームスペースが使用されます。マルチ環境の設定については ネームスペースと所有権 を参照してください。

jobs[]

各エントリはスケジュールに従ってエンドポイントを呼び出す HTTP ジョブkind: http)、 または自身のクロンからの ping を待ち受けるハートビートチェックkind: heartbeat)です。

共通フィールド

フィールド必須説明
idstringいいえ安定した調整キー。設定されている場合、リネームは安全です — id は変わらないため、ハートビートの ping URL が保持されます。未指定の場合は name にフォールバックします。
namestringはいダッシュボードとアラートメッセージに表示される名前。マニフェスト内で一意である必要があります。
kindhttp | heartbeatいいえジョブの種類。デフォルト:http
schedulestringはい*5 フィールドのクロン式(minute hour dom month dow)。
intervalintegerはい*秒単位の固定間隔(10–86400)。schedule の代替。
timezonestringいいえIANA タイムゾーン名。例:Europe/Berlin。デフォルト:UTC。
pausedbooleanいいえジョブを一時停止状態で作成または維持する。
tagsstring[]いいえ"key:value" 文字列としてのタグ参照、例:["env:prod", "team:backend"]
rulesobject[]いいえジョブごとのアラートルール。アラートルール を参照。

*schedule または interval のいずれか一方のみが必須です。

HTTP ジョブのフィールド

フィールド必須説明
methodstringいいえHTTP メソッド。GETPOSTPUTPATCHDELETE のいずれか。デフォルト:GET
urlstringはい呼び出すエンドポイント。${ENV}(CLI 置換)および {{template_var}}(サーバーサイド)プレースホルダーをサポート。
headersobjectいいえ追加のリクエストヘッダー。値は ${ENV} プレースホルダーをサポート。
bodystringいいえリクエストボディ。{{template_var}} プレースホルダーをサポート。
timeoutintegerいいえリクエストのタイムアウト(秒)。デフォルト:60。
retriesintegerいいえ2xx 以外のレスポンスまたはタイムアウト時のリトライ回数。デフォルト:0。
retry_backoffintegerいいえリトライ間の秒数。デフォルト:30。
retry_on_timeoutbooleanいいえタイムアウトをリトライのための失敗としてカウントする。デフォルト:true
retry_on_statusinteger[]いいえリトライを引き起こす HTTP ステータスコード(100–599)。
skip_if_runningbooleanいいえ前回の実行がまだアクティブな場合は実行をスキップする。デフォルト:false
misfire_policystringいいえスケジュールされた実行が失われた場合の動作:do_nothing(デフォルト)または fire_once_now

ハートビートチェックのフィールド

フィールド必須説明
graceintegerいいえ期待される ping 時刻の後、アラートを発する前に待機する秒数。デフォルト:60。
stuck_run_detectionbooleanいいえ実行が max_run_duration を超えた場合にアラートを発する。デフォルト:true
max_run_durationintegerいいえ許可される最大実行時間(秒)(60–86400)。

channels[]

id または name を通じてジョブルールが参照するアラートチャンネル。

フィールド必須説明
idstringいいえjobs[].rules[].channel で使用する安定した参照キー。
namestringはいダッシュボードとアラートメッセージに表示される人間が読める名前。
kindstringはいslackdiscordemailtelegramwebhook のいずれか。
configobjectいいえ種類固有のキーと値の設定。${ENV} プレースホルダーを使用してください — 実際のシークレットをコミットしないでください。
channels:
  - id: ops-slack
    name: Slack #ops
    kind: slack
    config:
      webhook_url: ${SLACK_WEBHOOK_URL}

アラートルール {#alert-rules}

アラートルールは jobs[].rules の下でジョブごとに定義されます。各ルールは トリガーイベントを通知チャンネルに結びつけます。

jobs:
  - id: weekly-digest
    name: Weekly digest email
    kind: http
    schedule: "0 9 * * 1"
    url: https://api.myapp.com/jobs/digest
    rules:
      - channel: ops-slack
        trigger: on_failure
        severity: p1
      - channel: ops-slack
        trigger: on_recovery
フィールド必須説明
channelstringはい通知するチャンネルの id または name
triggerstringはいルールを発火させるイベント:on_failureon_recoveryon_missed_heartbeat
severitystringいいえチャンネルに転送される重要度ラベル(例:p1p2p3)。
paramsobjectいいえトリガー固有のパラメータ。
dedup_window_secondsintegerいいえアラート重複排除ウィンドウ(秒)。

tags[]

タグはダッシュボードでジョブをグループ化します。各タグは keyvalue を持ち、 ジョブは "key:value" 文字列としてそれらを参照します。

tags:
  - id: env-prod
    key: env
    value: prod
  - id: team-backend
    key: team
    value: backend

ジョブ参照:tags: ["env:prod", "team:backend"]

フィールド必須説明
idstringいいえ安定した参照キー。
keystringはいタグカテゴリ(例:envteam)。
valuestringはいタグ値(例:prodbackend)。
colorstringいいえダッシュボード用の 16 進数カラーコード。

variables

サーバーサイドのテンプレート変数。各変数は idnamevalue を持つオブジェクトです。 CLI は適用時に value 内の ${ENV_VAR} を解決し、サーバーは実行時に HTTP ジョブフィールド内の {{name}} を置換します。シークレットが git に入ることはありません。

variables:
  - id: digest-token
    name: digest_token
    value: ${DIGEST_TOKEN}

HTTP の urlheaders、または body フィールドで {{digest_token}} を使用してください。

フィールド必須説明
idstringいいえ安定した参照キー。
namestringはいサーバーサイドの {{name}} 置換で使用される変数名。
valuestringいいえ変数の値。${ENV_VAR} CLI 置換をサポート。

shaping

リクエストシェーピングは HTTP ジョブの並行性とレート制限を制御します — 多くのジョブが同じ分に 実行される場合に負荷を分散するのに便利です。

shaping:
  max_concurrent_jobs: 5
  max_jobs_per_minute: 30
フィールド説明
max_concurrent_jobsinteger並行して実行する HTTP ジョブの最大数。
max_jobs_per_minuteinteger1 分あたりの HTTP ジョブの最大実行数。

完全な例

namespace: production

variables:
  - id: digest-token
    name: digest_token
    value: ${DIGEST_TOKEN}

channels:
  - id: ops-slack
    name: Slack #ops
    kind: slack
    config:
      webhook_url: ${SLACK_WEBHOOK_URL}

tags:
  - id: env-prod
    key: env
    value: prod
  - id: team-backend
    key: team
    value: backend

jobs:
  - id: weekly-digest
    name: Weekly digest email
    kind: http
    method: POST
    url: https://api.myapp.com/jobs/digest
    schedule: "0 9 * * 1"
    timezone: Europe/Berlin
    timeout: 120
    retries: 3
    tags: ["env:prod", "team:backend"]
    rules:
      - channel: ops-slack
        trigger: on_failure
        severity: p1
      - channel: ops-slack
        trigger: on_recovery

  - id: nightly-backup
    name: Nightly DB backup
    kind: heartbeat
    schedule: "0 2 * * *"
    grace: 1800
    tags: ["env:prod"]
    rules:
      - channel: ops-slack
        trigger: on_missed_heartbeat
        severity: p1

シークレット:2 つの仕組みを並べて比較

${ENV_VAR_NAME}{{template_var}}
解決するもの適用時の CLI実行時のサーバー
使用できる場所任意のフィールドHTTP ジョブの urlheadersbody のみ
使用対象API キー、webhook URL、環境固有の値実行ごとの動的な値
エクスポート形式プレースホルダー ${VAR}プレースホルダー {{var}}

steadycron export はシークレットやテンプレート変数を検出した箇所に両種類のプレースホルダーを 自動的に出力します。エクスポートされたマニフェストはそのままコミットしても安全です。