CI/CD セットアップ
GitHub Actions を使って SteadyCron マニフェストのデプロイを自動化する — プルリクエストでのプラン差分表示、マージ時の適用。
プルリクエストごとに steadycron plan を実行し、マージ時に steadycron apply --prune
を実行することで、マニフェストを GitOps ワークフローに変えることができます。レビュアーは
PR が導入するクロンの変更を正確に確認でき、メインブランチが常に唯一の真実の情報源となります。
前提条件
- SteadyCron の API キー(設定 → API キー で作成してください)
- リポジトリにコミットされたマニフェスト(IaC への移行 を参照)
ステップ 1 — API キーをシークレットとして追加する
GitHub リポジトリで Settings → Secrets and variables → Actions に移動し、以下を追加します:
| 名前 | 値 |
|---|---|
STEADYCRON_API_KEY | SteadyCron の API キー(sc_...) |
マニフェストが参照する環境固有のシークレット(例:SLACK_WEBHOOK_URL)も追加してください。
プランのみのパイプライン(読み取り操作)では、別途読み取り専用の API キーを作成し、PR ワークフローでのみ使用することができます。
ワークフロー 1 — プルリクエストでのプラン差分
マニフェストファイルが変更されるたびに、プランの出力を PR コメントとして投稿します:
# .github/workflows/cron-plan.yml
name: Cron plan
on:
pull_request:
paths:
- 'manifests/**'
jobs:
plan:
runs-on: ubuntu-latest
permissions:
pull-requests: write
steps:
- uses: actions/checkout@v4
- uses: steadycron/action@v1
with:
command: plan
manifest: manifests/production.yaml
comment-on-pr: 'true'
env:
STEADYCRON_API_KEY: ${{ secrets.STEADYCRON_API_KEY }}
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
action は次のようなコメントを投稿します:
SteadyCron plan — manifests/production.yaml
~ weekly-digest update retries: 2 → 3
+ invoice-cron create http 0 17 * * 5
1 to create · 1 to update · 0 to delete
ワークフロー 2 — マージ時の適用
メインブランチが更新されるたびに、マニフェストを(--prune で)適用します:
# .github/workflows/cron-apply.yml
name: Cron apply
on:
push:
branches:
- main
paths:
- 'manifests/**'
jobs:
apply:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: steadycron/action@v1
with:
command: apply
manifest: manifests/production.yaml
prune: 'true'
env:
STEADYCRON_API_KEY: ${{ secrets.STEADYCRON_API_KEY }}
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
action の入力値
| 入力 | 説明 | デフォルト |
|---|---|---|
command | plan、apply、validate、または sync | plan |
manifest | マニフェストファイルまたはディレクトリへのパス | — |
prune | true の場合、apply に --prune を渡す | false |
comment-on-pr | true の場合、プランの出力を PR コメントとして投稿する | false |
マニフェスト内のすべての ${ENV_VAR} プレースホルダーはジョブの環境から読み取られます —
ワークフローステップの env: ブロックで渡してください。
複数環境の管理
マトリクスを使ってステージングと本番の別々のマニフェストを管理します:
jobs:
apply:
runs-on: ubuntu-latest
strategy:
matrix:
env: [staging, production]
steps:
- uses: actions/checkout@v4
- uses: steadycron/action@v1
with:
command: apply
manifest: manifests/${{ matrix.env }}.yaml
prune: 'true'
env:
STEADYCRON_API_KEY: ${{ secrets[format('STEADYCRON_API_KEY_{0}', matrix.env)] }}
最小権限の API キー
プランのみのワークフロー(PR コメント)では、変更を加えられない読み取り専用の API キーを
使用してください。ダッシュボードで read スコープのみを持つ別のキーを作成し、別のシークレット
(例:STEADYCRON_API_KEY_RO)として保存してください。
これにより、PR ワークフローのシークレットが漏洩した場合の影響範囲を限定できます。
すべての push でバリデーション
プランが実行される前にスキーマエラーを検出するために、バリデーションジョブを追加します:
- uses: steadycron/action@v1
with:
command: validate
manifest: manifests/production.yaml
env:
STEADYCRON_API_KEY: ${{ secrets.STEADYCRON_API_KEY }}
validate はスキーマエラーがある場合にゼロ以外のコードで終了します。API キーは必須では
ありませんが、提供するとサーバーがアカウントの現在の制限に対して検証を行えます。
関連ドキュメント
- IaC ワークフロー — すべての CLI コマンドの説明
- IaC への移行 — 既存アカウントの採用
- マニフェストリファレンス — 完全なフィールドリファレンス