【2025年版】GitHub Actions完全ガイド | CI/CD自動化・デプロイ実践入門【実例付き】

GitHub ActionsでCI/CD自動化を徹底解説!YAMLワークフロー設定、自動テスト実行、Google Cloud Run自動デプロイまで実例付きで完全マスター。プルリク時の自動テスト、環境変数管理、シークレット設定など、DevOps実践に必須のGitHub Actions活用術決定版!

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ブランチへの直接プッシュ制限を設定

💡 この記事の内容を、業務に組み込んでみませんか?

福岡で中小企業の AI 導入支援・業務自動化・技術顧問をやっています。
議事録の自動化、業務スクリプト、システム開発まで。
30分で「何から始めるべきか」を一緒に整理します。