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