【Git】GitHubActionsについて - j-komatsu/myCheatSheet GitHub Wiki

GitHub Actions について

読み方

GitHub Actions(ギットハブ アクションズ)

GitHub Actionsとは?

GitHub Actions は、GitHub 上で CI/CD(継続的インテグレーション / 継続的デリバリー)を自動化するためのワークフローエンジンです。 リポジトリに対するイベントをトリガーとして、さまざまなジョブ(テスト・ビルド・デプロイなど)を実行できます。

特徴

特徴 説明
GitHub と統合 GitHub リポジトリ内で直接設定・管理が可能
イベント駆動型 プッシュやプルリクエストなどのアクションをトリガーにして実行可能
YAMLベースの設定 .github/workflows/ ディレクトリ内の YAML ファイルでワークフローを定義
並列・逐次実行 複数のジョブを並列または依存関係に応じて逐次実行可能
カスタムアクション 自作のアクションを作成して再利用可能

たとえ話

GitHub Actions は、レストランのキッチンのようなものです。

  • シェフ(ジョブ):料理(タスク)を担当
  • 注文(イベント):お客様(開発者)が料理をオーダーすると開始
  • レシピ(YAML設定):どんな料理を作るか定義
  • シェフたち(並列・逐次実行):複数のシェフが並行して調理できる

設定方法

GitHub Actions は .github/workflows/ フォルダ内に YAML ファイルを作成することで設定します。

基本構造

name: Example Workflow

on: [push, pull_request]

jobs:
  example-job:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Repository
        uses: actions/checkout@v4
      
      - name: Run a script
        run: echo "Hello, GitHub Actions!"

よく使う設定

トリガー(on)

設定 説明
push リポジトリにプッシュされたとき
pull_request プルリクエストが作成または更新されたとき
schedule 定期実行(cron形式)
workflow_dispatch 手動実行

ランナー(runs-on)

設定値 説明
ubuntu-latest 最新の Ubuntu 環境
windows-latest 最新の Windows 環境
macos-latest 最新の macOS 環境

ステップ(steps)

設定 説明
uses 既存のアクションを利用(例:actions/checkout@v4
run シェルコマンドを実行(例:echo "Hello"
env 環境変数を設定

サンプルワークフロー

Node.js の CI/CD

name: Node.js CI

on: push

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Repository
        uses: actions/checkout@v4
      
      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: 18
      
      - name: Install dependencies
        run: npm install
      
      - name: Run tests
        run: npm test

Docker イメージのビルドとプッシュ

name: Build and Push Docker Image

on: push

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Repository
        uses: actions/checkout@v4
      
      - name: Login to DockerHub
        uses: docker/login-action@v2
        with:
          username: ${{ secrets.DOCKER_USERNAME }}
          password: ${{ secrets.DOCKER_PASSWORD }}
      
      - name: Build and Push Image
        run: |
          docker build -t my-image:latest .
          docker tag my-image:latest my-dockerhub-username/my-image:latest
          docker push my-dockerhub-username/my-image:latest

ワークフローの視覚的表現

graph TD;
    push[pull_request / push] -->|Trigger| job1[Job 1 - Checkout]
    job1 --> job2[Job 2 - Test]
    job2 --> job3[Job 3 - Deploy]

まとめ

  • GitHub Actions は GitHub に統合された CI/CD ワークフローエンジン
  • YAML 形式でワークフローを定義
  • イベントをトリガーにしてジョブを自動実行
  • 既存のアクションを活用しながら自動化可能
  • 具体例として Node.js のテストや Docker ビルドのサンプルを紹介

このページを参考に、自動化を進めてみてください!