GitHub ActionsワークフローYAMLのフォーマット
GitHub ActionsワークフローYAMLファイルをジョブ、ステップ、マトリックス戦略の正しいインデントでフォーマットします。一般的なCI/CDワークフローパターンを検証し、構文エラーをキャッチします。
Configuration Files
詳細な説明
GitHub Actions YAMLフォーマット
GitHub Actionsワークフローは .github/workflows/ に格納されたYAMLファイルで定義されます。これらのファイルはトリガー、ジョブ、ステップ、環境設定を含むCI/CDパイプラインを記述します。GitHub Actionsは YAML構造に厳密なため、一貫したフォーマットは重要です。
ワークフローファイル構造
name: CI Pipeline
on:
push:
branches: [main, develop]
pull_request:
branches: [main]
permissions:
contents: read
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [18, 20, 22]
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: npm
- run: npm ci
- run: npm test
deploy:
needs: test
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main'
steps:
- uses: actions/checkout@v4
- name: Deploy to production
run: |
echo "Deploying..."
./deploy.sh
env:
DEPLOY_TOKEN: ${{ secrets.DEPLOY_TOKEN }}
主要なフォーマットルール
- トップレベルキー —
name、on、permissions、env、jobsはすべてルートレベル - ジョブのインデント — ジョブは
jobs:の下に2スペースインデントでネスト - ステップリスト — 各ステップは
steps:キーの下で-で始まる - 複数行スクリプト — 複数行の
runコマンドにはパイプ(|)演算子を使用 - 式の構文 —
${{ }}式をYAML構文と混同しない
よくある間違い
on:のクォート忘れ — 一部のYAMLパーサーではonがブール値(true)として解釈される。GitHubはこれを正しく処理するが、他のツールではそうではない場合がある- 不正確なmatrixインデント —
matrixキーはstrategyの下に適切にネストされなければならない - ステップの順序 —
usesとrunは1つのステップ内で相互排他的 - 複数行コマンドのパイプ欠落 —
|がないとrunコマンドの改行が折りたたまれる
再利用可能なワークフローとコンポジットアクション
フォーマットは再利用可能なワークフローファイル(workflow_call トリガー)やコンポジットアクション定義(action.yml)にも適用されます。これらは類似のYAML構造に従いますが、トップレベルキーが異なります。
ユースケース
GitHub ActionsワークフローフォーマットはCI/CDパイプラインを管理するチームにとって不可欠です。ステップのインデントミスや不正確にネストされたマトリックス戦略は、デバッグが困難なワークフロー障害を引き起こす可能性があります。コミット前にワークフローをフォーマットすることで構造的なエラーを早期にキャッチし、ワークフロー変更のプルリクエストレビューがはるかに追いやすくなります。