こんにちは!「CI/CDって聞くけど、どこから始めればいいの?」という方に向けて、GitHub Actionsの基本をわかりやすく解説します。GitHubリポジトリがあればすぐに始められるので、ぜひ一緒に試してみましょう。
GitHub Actionsとは?
GitHub Actionsは、GitHub上で直接ワークフローを実行できるCI/CD(継続的インテグレーション/継続的デリバリー)ツールです。プッシュやプルリクエストをトリガーに、テスト・ビルド・デプロイまで自動化できます。
1. ワークフローの基本構成
.github/workflows/ ディレクトリにYAMLファイルを作成するだけでワークフローが定義できます。
.github/
└── workflows/
└── ci.yml
基本的なYAML構造は次の通りです。
name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Node.js セットアップ
uses: actions/setup-node@v4
with:
node-version: 20
- run: npm ci
- run: npm test
各要素の役割
| 要素 | 説明 |
|---|---|
name | ワークフロー名(GitHub上で表示) |
on | 実行トリガー(push, pull_request, scheduleなど) |
jobs | 並列実行可能なジョブの集合 |
runs-on | 実行環境(ubuntu-latest, windows-latest, macos-latest) |
steps | ジョブ内で実行する個々の処理 |
uses | 既存のアクションを再利用 |
run | シェルコマンドを直接実行 |
2. トリガーのバリエーション
# プッシュ時
on: push
# プルリクエスト時
on: pull_request
# スケジュール実行(cron)
on:
schedule:
- cron: '0 9 * * 1' # 毎週月曜 9:00 UTC
# 手動実行(workflow_dispatch)
on:
workflow_dispatch:
3. マーケットプレイスアクションを使いこなす
GitHub Marketplace(https://github.com/marketplace?type=actions)には何千ものアクションが公開されています。よく使われるものを紹介します。
- uses: actions/checkout@v4 # リポジトリのチェックアウト
- uses: actions/setup-node@v4 # Node.jsのセットアップ
- uses: actions/setup-python@v5 # Pythonのセットアップ
- uses: docker/login-action@v3 # Dockerレジストリへのログイン
- uses: actions/cache@v4 # 依存関係のキャッシュ
- uses: actions/upload-artifact@v4 # ビルド成果物のアップロード
4. マトリックスビルドで複数環境を一気にテスト
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [18, 20, 22]
os: [ubuntu-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
- run: npm ci
- run: npm test
これだけで、6通りの組み合わせでテストが自動実行されます。
5. シークレットと環境変数
APIキーやパスワードなどの機密情報は、GitHubの Settings → Secrets and variables → Actions で設定します。
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: deploy.sh
env:
API_KEY: ${{ secrets.API_KEY }}
DEPLOY_TOKEN: ${{ secrets.DEPLOY_TOKEN }}
絶対にYAMLに直接パスワードを書かないでください!
6. 依存関係のキャッシングで高速化
node_modules や ~/.cache などをキャッシュすると、ワークフローの実行時間を大幅に短縮できます。
- name: Cache Node Modules
uses: actions/cache@v4
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-
7. デプロイの実例(GitHub Pages)
name: Deploy to GitHub Pages
on:
push:
branches: [main]
permissions:
contents: read
pages: write
id-token: write
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
- run: npm ci
- run: npm run build
- uses: actions/configure-pages@v4
- uses: actions/upload-pages-artifact@v3
with:
path: ./out
- uses: actions/deploy-pages@v4
まとめ
GitHub Actionsは .github/workflows/ にYAMLファイルを置くだけで始められる、非常に敷居の低いCI/CDツールです。まずは「プッシュしたらテストが走る」ワークフローから作成してみてください。慣れてきたら、マトリックスビルドやデプロイ自動化にも挑戦してみましょう。
今日も最後までお読みいただき、ありがとうございました!

