Featured image of post GitHub Actionsで始めるCI/CDの基本Featured image of post GitHub Actionsで始めるCI/CDの基本

GitHub Actionsで始めるCI/CDの基本

GitHub Actionsで始めるCI/CDの基本を解説。自動化の最初の一歩として押さえたい内容を整理します。

こんにちは!「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ツールです。まずは「プッシュしたらテストが走る」ワークフローから作成してみてください。慣れてきたら、マトリックスビルドやデプロイ自動化にも挑戦してみましょう。

今日も最後までお読みいただき、ありがとうございました!