GitHub Actionsの基本的な書き方

GitHub Actionsとは

GitHub Actionsは、GitHubリポジトリ内で直接、ソフトウェア開発ワークフローを自動化できるCI/CD(継続的インテグレーション/継続的デリバリー)プラットフォームです。コードのビルド、テスト、デプロイなどを自動化し、開発プロセスを効率化します。

ワークフローは、リポジトリのルートディレクトリに以下の構造でYAMLファイルを配置することで定義します。

.github/workflows/{任意のファイル名}.yml

YAMLファイルの構成要素

GitHub Actionsのワークフローを定義するYAMLファイルは、主に以下の要素で構成されます。

name: {このワークフローの名前} # ワークフローの名前。GitHub UIで表示される

on:
  # ワークフローが実行されるトリガーイベントを指定
  # 例1: pushイベント (指定したブランチへのpush時)
  push:
    branches:
      - main # または master
      - develop # 複数のブランチを指定可能

  # 例2: pull_requestイベント (指定したブランチへのプルリクエスト時)
  pull_request:
    branches:
      - main
      - develop

  # 例3: scheduleイベント (CRON形式で時間を指定)
  # UTC時間で指定するため、日本時間(JST)の場合は-9時間する
  schedule:
    - cron: '45 10 * * *' 
  
  # その他のトリガーイベント: https://docs.github.com/ja/actions/using-workflows/events-that-trigger-workflows

jobs:
  # 実行するジョブの定義
  build: # ジョブのID (任意の名前)
    name: ビルドとテスト # ジョブの表示名
    runs-on: ubuntu-latest # ジョブを実行する環境 (ランナー) を指定
                            # ubuntu-latest, windows-latest, macos-latest など
                            # または、特定のバージョン (ubuntu-20.04)

    steps:
      # ジョブ内で実行される一連のステップ
      - uses: actions/checkout@v4 # リポジトリのコードをチェックアウトするアクション
                                  # GitHubが提供するアクションや、コミュニティのアクションを利用できる

      - name: 依存関係のインストール # ステップの名前
        run: |
          npm install # 例: Node.jsプロジェクトの依存関係をインストール
          pip install -r requirements.txt # 例: Pythonプロジェクトの依存関係をインストール

      - name: コードのビルド # ステップの名前
        run: |
          npm run build # 例: プロジェクトをビルド
          make # 例: makeコマンドを実行

      - name: テストの実行 # ステップの名前
        run: |
          npm test # 例: テストを実行
          pytest # 例: Pythonのテストを実行

主要な要素の解説

  • name: ワークフロー全体の名前です。GitHubのActionsタブで表示されます。
  • on: ワークフローがいつ実行されるかを定義します。push, pull_request, schedule など、様々なイベントを指定できます。
  • jobs: ワークフロー内で実行される一連のジョブを定義します。各ジョブは独立して実行することも、依存関係を設定して順次実行することも可能です。
    • runs-on: ジョブを実行する仮想環境(ランナー)を指定します。Ubuntu, Windows, macOSの最新バージョンや特定のバージョンを選択できます。
    • steps: ジョブ内で実行される個々のタスクのシーケンスです。
      • uses: 既存のアクション(再利用可能なタスクの単位)を使用します。actions/checkout@v4 は、リポジトリのコードをランナーにチェックアウトする公式アクションです。
      • name: ステップの表示名です。
      • run: シェルコマンドを実行します。複数行のコマンドは | を使って記述できます。

GitHub Actionsは非常に柔軟性が高く、様々なツールやサービスと連携して複雑なワークフローを構築できます。