🌟
GitHub Actions の詳細と実装ガイド
1. GitHub Actionsとは?
GitHub Actions は、リポジトリのイベント(push、pull request など)をトリガーにして、CI/CD(継続的インテグレーション・デリバリー)パイプラインを自動化できる仕組みです。
特徴:
- イベント駆動型(push, PR, release など)
- ワークフローの柔軟性(YAMLファイルで定義)
- Dockerコンテナの実行対応
- マトリクスビルド(複数のOSやバージョンで並行実行可能)
2. 基本構成
GitHub Actions の構成要素は以下の通り。
要素 | 説明 |
---|---|
Workflow | 自動化の流れを定義するYAMLファイル(.github/workflows 内) |
Job | 1つ以上のステップを実行する単位(並列または直列で実行可能) |
Step | Job内で実行される具体的なタスク(スクリプトやアクション) |
Runner | ワークフローを実行する環境(GitHubのホストランナー or 自前サーバー) |
Action | 再利用可能な個別のタスク(公式 or カスタムのアクションが使用可能) |
3. 簡単なワークフローの例
(1) 自動テストを実行するワークフロー
.github/workflows/test.yml
ame: Run Tests
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- name: コードをチェックアウト
uses: actions/checkout@v4
- name: Pythonをセットアップ
uses: actions/setup-python@v4
with:
python-version: '3.9'
- name: 依存関係をインストール
run: |
pip install -r requirements.txt
- name: テストを実行
run: |
pytest
(2) Lint チェックとビルドを含むワークフロー
.github/workflows/lint_build.yml
name: Lint & Build
on:
pull_request:
branches:
- main
- develop
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Node.jsのセットアップ
uses: actions/setup-node@v4
with:
node-version: '18'
- name: ESLint チェック
run: |
npm install
npm run lint
build:
runs-on: ubuntu-latest
needs: lint
steps:
- uses: actions/checkout@v4
- name: ビルドを実行
run: |
npm install
npm run build
(3) DockerイメージをビルドしてDocker Hubにプッシュ
.github/workflows/docker_build.yml
name: Docker Build and Push
on:
push:
branches:
- main
jobs:
build-and-push:
runs-on: ubuntu-latest
steps:
- name: コードを取得
uses: actions/checkout@v4
- name: Dockerログイン
run: echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u "${{ secrets.DOCKER_USERNAME }}" --password-stdin
- name: Dockerイメージのビルドとプッシュ
run: |
docker build -t myrepo/myimage:latest .
docker push myrepo/myimage:latest
4. 高度な設定
(1) マトリクスビルド(複数環境で並列実行)
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: [3.8, 3.9, 3.10]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- run: pytest
(2) キャッシュの利用で速度向上
steps:
- name: 依存関係のキャッシュ
uses: actions/cache@v3
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }}
restore-keys: |
${{ runner.os }}-pip-
(3) 手動実行(workflow_dispatch)
on:
workflow_dispatch:
→ GitHub の Actions ページから手動でトリガー可能。
5. Secretsを使ったセキュアな設定
GitHub Actionsでは、APIキーや認証情報を secrets
に保存し、安全に利用可能。
設定例:
-
GitHub の Settings → Secrets and Variables → Actions から
DOCKER_USERNAME
,DOCKER_PASSWORD
を登録。 -
.github/workflows/docker_build.yml
でsecrets
を使用。
run: echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u "${{ secrets.DOCKER_USERNAME }}" --password-stdin
6. GitHub Actions の活用ポイント
- CI/CD の自動化: テスト、Lint、ビルド、デプロイを自動化。
- セキュアな認証: Secretsを利用し、APIキーなどを安全に管理。
- 並列処理の活用: マトリクスビルドや複数ジョブを駆使して効率化。
- Dockerとの連携: コンテナ化されたアプリケーションのデプロイが容易。
GitHub Actions を活用することで、開発フローを効率化し、信頼性の高い CI/CD パイプラインを構築できます。
Discussion