GitHub Actionsの概要・基礎知識
GitHub ActionsはGitHubが提供するCI/CDサービスで、リポジトリ内の.github/workflows/ディレクトリに配置したYAMLファイルをトリガーに、テスト・ビルド・デプロイなどを実行できます。push・pull_request・スケジュール(cron)・手動実行など、さまざまなイベントに反応するパイプラインを宣言的に定義できる点が特徴です。本ツールはNode.js CI・Python CI・Docker Build & Push・GitHub Pages・Releaseといった代表的なワークフローのテンプレートを揃え、ランナー・ブランチ・matrix戦略・キャッシュ・環境変数を選ぶだけで実用的なYAMLを生成します。
主要テンプレートと用途
| テンプレート | 用途 | 主なアクション |
|---|---|---|
| Node.js CI | npm/pnpm/yarnのテスト・ビルド | actions/setup-node |
| Python CI | pytest・linterの実行 | actions/setup-python |
| Docker Build & Push | イメージのビルドとレジストリ登録 | docker/build-push-action |
| Deploy to Pages | 静的サイトをGitHub Pagesへ公開 | actions/deploy-pages |
| Release | タグpush時のリリース作成 | softprops/action-gh-release |
| カスタム | 最小構成のひな形 | actions/checkout |
使い方の流れ
- Step 1で利用したいテンプレートを選びます。テンプレートごとに必要な入力項目(Node.jsバージョン・Pythonバージョン等)が自動で表示されます。
- Step 2でワークフロー名・トリガー(push / pull_request / workflow_dispatch / schedule)・対象ブランチを設定します。scheduleを選ぶとcron式を入力できます。
- Step 3でランナー(ubuntu-latest / macos-latest / windows-latest)を選びます。クロスプラットフォーム検証が必要ならmatrix戦略でNodeやPythonの複数バージョンも指定できます。
- Step 4でキャッシュの有無や環境変数(KEY=VALUE形式)を設定します。npm依存などをキャッシュすると2回目以降のビルド時間が大きく短縮されます。
- 「ワークフローを生成」を押すと整形済みYAMLが表示されます。コピーして
.github/workflows/ci.yml等の名前で保存し、リポジトリへpushすれば即座に動作開始します。
こんな場面で使う
- 新規OSSリポジトリのCI整備:作成直後にCIテンプレートを投入することで、最初のPRから自動テストが回る環境を即座に作れます。
- Dockerイメージの自動公開:mainブランチへのマージをトリガーに、GHCRやDocker Hubへイメージを自動pushする運用を素早く構築できます。
- 静的サイトのデプロイ:Astro・Hugo・Next.js Static Exportなどで作ったサイトをGitHub Pagesへ自動公開できます。
- 定期バッチ処理:cronトリガーで日次レポート生成やデータスクレイピングを無料枠内で動かせます(パブリックリポジトリは無制限、プライベートは月間枠内)。
- リリースノートの自動生成:v1.0.0などのタグpushを契機にリリース作成・成果物アップロードまで自動化できます。
使う前に知っておきたい注意点
- 本ツールが生成するYAMLは標準的なベストプラクティス例です。プロジェクト固有のテストコマンドやデプロイ先設定は、生成後に手動で調整してください。
- シークレット(DOCKER_PASSWORD・PERSONAL_TOKEN等)はGitHubの「Settings → Secrets and variables → Actions」で登録し、YAML内では
${{ secrets.NAME }}で参照します。生成YAMLに直接書き込まないでください。 - プライベートリポジトリのActionsは無料枠(Free planで月2,000分)に上限があります。長時間ジョブを回す際は使用量を監視してください。
- matrix戦略は便利ですが、組み合わせ数が増えると消費分が乗算で増加します。Node 18・20、OS 3種なら6並列分です。
- actions/checkout@v3 のようなバージョンタグは定期的に更新する必要があります。Dependabotで自動更新を有効化すると保守が楽になります。
用語の補足
- matrix戦略:複数のバージョンやOSで並列にジョブを実行する仕組み。互換性検証で必須の機能です。
- workflow_dispatch:GitHubのUIから手動でワークフローを起動できるトリガー。手動デプロイや棚卸しスクリプトに便利です。
- concurrency:同じブランチでワークフローが多重起動するのを防ぐ設定。デプロイ系ワークフローでは必須に近い項目です。