GitHub Actions 完全解説
📖 詳細な説明
🔧 GitHub Actions とは
概要
GitHubが提供するワークフロー自動化の仕組み
- ビルド、テスト、デプロイの自動化が可能
- イベントトリガーによる自動実行
- GitHubリポジトリとの統合
料金体系
- パブリックリポジトリ: 基本無料
- プライベートリポジトリ: 一定の無料枠あり、超過分は有料
- 実行時間とOS種類により変動
🏗️ ワークフローの基本構造
フローの構成: ワークフロー(全体の処理) → トリガー(実行のきっかけ) → ジョブ(処理の単位) → ステップ(具体的なコマンド)
ワークフロー定義
.github/workflowsディレクトリにYAMLファイルを配置- 一つのYAMLファイルが一つのワークフロー
- 複数のジョブを並列・直列で実行可能
主要なトリガー
- pull_request: プルリクエスト作成時
- push: 特定ブランチへのプッシュ時
- schedule: 定期実行(cron形式)
🧪 CI/CD の実装
CI(継続的インテグレーション)
- コード変更のたびに自動ビルド・テスト実行
- PyTestによる自動テスト
- 品質の向上とバグの早期発見
CD(継続的デリバリー)
- Google Cloud Run への自動デプロイ
- Dockerイメージの自動ビルド・プッシュ
- Workload Identity による安全な認証
実装例:PyTestワークフロー
actions/checkout@v4でリポジトリチェックアウトactions/setup-python@v5でPython環境構築- requirements.txt によるライブラリインストール
- pytest コマンドでテスト実行
⚙️ 高度な機能と構文
環境変数とシークレット
env:による環境変数設定- GitHub Secrets による機密情報管理
${{secrets.SECRET_NAME}}での参照- Repository Secrets と Environment Secrets
条件分岐とステップ間連携
if: failure()による失敗時処理- ステップID設定とアウトプット受け渡し
- GITHUB_OUTPUT による値の共有
実行環境
- ubuntu-latest(Linux)
- windows-latest(Windows)
- macos-latest(macOS)
- セルフホステッドランナーの選択肢
☁️ Google Cloud との連携
Workload Identity 設定
- 外部からGoogle Cloudへの安全なアクセス
- プール・プロバイダーの作成
- OIDC認証プロトコルの使用
- 属性マッピングと条件設定
サービスアカウントと権限
- Cloud Run管理者権限
- Artifact Registry書き込み権限
- サービスアカウントユーザー権限
- Workload Identityユーザー権限
デプロイフロー
google-github-actions/auth@v2による認証- Artifact Registry への Docker認証
- Dockerイメージのビルド・プッシュ
google-github-actions/deploy-cloudrun@v2によるデプロイ
💡 ベストプラクティス
- 定期実行の信頼性に注意(GitHubのリソース不足で実行されない場合あり)
- 重要な定期ジョブは他のサービスとの併用を検討
- Gitハッシュ値をDockerタグに使用(
${{github.sha}}) - mainブランチへの直接プッシュ制限を設定