GitHub Actions

GitHub に統合された CI/CD プラットフォームで、ワークフローを YAML で定義して自動実行する

CI/CD自動化

GitHub Actions とは

GitHub Actions は、GitHub に統合された CI/CD プラットフォームで、プッシュ、プルリクエスト、スケジュールなどのイベントをトリガーにワークフローを自動実行する。YAML でワークフローを定義し、.github/workflows/ に配置する。

基本構造

ワークフローは YAML ファイルで定義し、on でトリガー (push、pull_request など) を指定する。jobs 内に実行環境とステップを記述し、各ステップでは公式アクション (actions/checkout など) やシェルコマンドを実行する。

name: CI
on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 22
          cache: npm
      - run: npm ci
      - run: npm test

トリガー

トリガーを以下にまとめる。

トリガー用途
pushブランチへのプッシュ
pull_requestPR の作成・更新
schedulecron スケジュール
workflow_dispatch手動実行
releaseリリースの作成

マトリックスビルド

マトリックスビルドの例を示す。

jobs:
  test:
    strategy:
      matrix:
        node-version: [20, 22]
        os: [ubuntu-latest, macos-latest]
    runs-on: ${{ matrix.os }}
    steps:
      - uses: actions/setup-node@v4
        with:
          node-version: ${{ matrix.node-version }}
      - run: npm test

AWS へのデプロイ

AWS への デプロイの例を示す。

jobs:
  deploy:
    runs-on: ubuntu-latest
    permissions:
      id-token: write
      contents: read
    steps:
      - uses: actions/checkout@v4
      - uses: aws-actions/configure-aws-credentials@v4
        with:
          role-to-assume: arn:aws:iam::123456789012:role/github-actions
          aws-region: ap-northeast-1
      - run: sam deploy --no-confirm-changeset

OIDC で IAM ロールを引き受け、アクセスキーを使わずに AWS にデプロイする。

シークレット管理

シークレット管理の例を示す。

env:
  DATABASE_URL: ${{ secrets.DATABASE_URL }}

Settings > Secrets and variables > Actions でシークレットを設定。ログにマスクされる。

キャッシュ

キャッシュの例を示す。

- uses: actions/cache@v4
  with:
    path: ~/.npm
    key: npm-${{ hashFiles('package-lock.json') }}

Jenkins / CircleCI との比較

Jenkins / CircleCI との主な違いを以下に比較する。

観点GitHub ActionsJenkinsCircleCI
ホスティングGitHub 統合セルフホストSaaS
設定YAMLGroovy (Jenkinsfile)YAML
再利用部品Marketplace で公開された ActionプラグインOrbs
無料枠Free プランで標準ランナー 2,000 分/月 (パブリックリポジトリの標準ランナーは無料)なし (自前)6,000 分/月

無料枠の数字は 2026 年 8 月時点の各社公表値である。GitHub 側の 2,000 分はプライベートリポジトリでの標準ランナー利用分で、上位プランでは 3,000 分以上に増える。CircleCI の 6,000 分は small Docker リソースクラス換算である。見落としやすいのは、GitHub の大型ランナー (larger runners) がパブリックリポジトリでも常に課金対象になる点で、無料枠を前提に組んだワークフローでも、ランナーを変更した時点で課金が始まる。

GitHub Actions の関連書籍も参考になる。

この記事は役に立ちましたか?

関連用語

関連する記事