mcpField
C
ci-workflows

ci-workflows

github.com/laurigatesクラウド・DevOps5959 回インストール1 日前に更新
リポジトリ

ci-workflows について

GitHub Actions の規約と CI/CD ワークフローテンプレートを定めるリファレンススキルです。コンテナビルド、リリース、テストや、任意の自動化ワークフローの確認・実装に使えます。

主な機能

  1. 01GHCR 向けコンテナビルド規約
  2. 02Release Please ワークフローのガイダンス
  3. 03テストワークフローの推奨事項
  4. 04任意の ArgoCD 自動マージワークフロー
  5. 05任意の Claude CI 自動修正ワークフロー
  6. 06アクションのバージョンと権限の規約

活用シーン

  1. 01既存ワークフローファイルの規約適合確認
  2. 02コンテナビルド用 GitHub Actions の計画
  3. 03リリースとテストの自動化設定
  4. 04ワークフロー権限とアクションのバージョン確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/laurigates/claude-plugins --skill ci-workflows

インストール後、Claude Code で/ci-workflowsを入力して読み込まれたか確認します。

詳細

CI ワークフロー標準

このスキルを使用する場面

次の場合にこのスキルを使用してください…次の場合は代わりに関連スキルを使用してください…
標準的な GitHub Actions ワークフローの構成(コンテナのビルド、テスト、リリース)が必要な場合インタラクティブなワークフローとして、ワークフローを最初から最後まで監査またはインストールする場合 — configure-workflows を使用してください
既存の .github/workflows/*.yml が文書化された規約に準拠しているか確認する場合事前構築済みの再利用可能な呼び出し元を組み込みたい場合 — configure-reusable-workflows を使用してください
別のスキルで標準的なワークフロー構造を参照する必要がある場合ユーザーから CI ワークフローの作成または修復を依頼された場合

バージョン:2025.1

CI/CD 自動化のための標準的な GitHub Actions ワークフローです。

表示名の規約

すべてのワークフローの name: は <Domain>: <Action> [<target>] に従います。これにより、GitHub Actions のサイドバーで関連するワークフローがアルファベット順にまとまります。引用符で囲んでください。YAML では、引用符で囲まれていないスカラー値内の : がキーの区切り文字として扱われるためです。標準ルール、有効なドメインの一覧、ワークフロー間で名前を変更する手順については、.claude/rules/workflow-naming.md を参照してください。ここでひな形を作成するワークフローにも、このパターンを適用してください。

必須ワークフロー

1. コンテナビルドワークフロー

ファイル:.github/workflows/container-build.yml

GHCR への公開を伴うマルチプラットフォームのコンテナビルド:

name: "Container: Build"

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]
  release:
    types: [published]

env:
  REGISTRY: ghcr.io
  IMAGE_NAME: ${{ github.repository }}

jobs:
  build:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      packages: write

    steps:
      - uses: actions/checkout@v6

      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v4

      - name: Log in to Container Registry
        if: github.event_name != 'pull_request'
        uses: docker/login-action@v4
        with:
          registry: ${{ env.REGISTRY }}
          username: ${{ github.actor }}
          password: ${{ secrets.GITHUB_TOKEN }}

      - name: Extract metadata
        id: meta
        uses: docker/metadata-action@v6
        with:
          images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
          tags: |
            type=ref,event=branch
            type=ref,event=pr
            type=semver,pattern={{version}}
            type=semver,pattern={{major}}.{{minor}}

      - name: Build and push
        uses: docker/build-push-action@v7
        with:
          context: .
          platforms: linux/amd64,linux/arm64
          push: ${{ github.event_name != 'pull_request' }}
          tags: ${{ steps.meta.outputs.tags }}
          labels: ${{ steps.meta.outputs.labels }}
          cache-from: type=gha
          cache-to: type=gha,mode=max
          build-args: |
            SENTRY_AUTH_TOKEN=${{ secrets.SENTRY_AUTH_TOKEN }}

主な機能:

  • マルチプラットフォームビルド(amd64、arm64)
  • GitHub Container Registry(GHCR)
  • セマンティックバージョンタグ付け
  • GitHub Actions キャッシュによるビルドキャッシュ
  • ソースマップの Sentry 統合
2. Release Please ワークフロー

ファイル:.github/workflows/release-please.yml

詳細については、configure-release-please を参照してください(その REFERENCE.md には、標準的なワークフロー、トークン、設定のテンプレートが含まれています)。

3. ArgoCD 自動マージワークフロー(任意)

ファイル:.github/workflows/argocd-automerge.yml

ArgoCD Image Updater のブランチからの PR を自動マージします:

name: "Image Updater: Auto-merge"

on:
  push:
    branches:
      - 'image-updater-**'

permissions:
  contents: write
  pull-requests: write

jobs:
  create-and-merge:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6

      - name: Create Pull Request
        id: create-pr
        env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: |
          PR_URL=$(gh pr create \
            --base main \
            --head "${{ github.ref_name }}" \
            --title "chore(deps): update container image" \
            --body "Automated image update by argocd-image-updater.

          Branch: \`${{ github.ref_name }}\`" \
            2>&1) || true

          if echo "$PR_URL" | grep -q "already exists"; then
            PR_URL=$(gh pr view "${{ github.ref_name }}" --json url -q .url)
          fi

          echo "pr_url=$PR_URL" >> "$GITHUB_OUTPUT"

      - name: Approve PR
        env:
          GH_TOKEN: ${{ secrets.AUTO_MERGE_PAT || secrets.GITHUB_TOKEN }}
        run: gh pr review --approve "${{ github.ref_name }}"
        continue-on-error: true

      - name: Enable auto-merge
        env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: gh pr merge --auto --squash "${{ github.ref_name }}"

主な機能:

  • ArgoCD Image Updater の image-updater-** ブランチでトリガー
  • PR が存在しない場合は自動作成
  • 任意の PAT による自己承認(GitHub の制限を回避する場合)
  • 自動マージを有効にしたスカッシュマージ

前提条件:

  • リポジトリの設定で自動マージを有効にする
  • 任意:自己承認用の AUTO_MERGE_PAT シークレット
4. テストワークフロー(推奨)

ファイル:.github/workflows/test.yml

name: "Test: Suite"

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

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6

      - name: Setup Node.js
        uses: actions/setup-node@v6
        with:
          node-version: '22'
          cache: 'npm'

      - name: Install dependencies
        run: npm ci

      - name: Run linter
        run: npm run lint

      - name: Run type check
        run: npm run typecheck

      - name: Run tests
        run: npm run test:coverage

      - name: Upload coverage
        uses: codecov/codecov-action@v6
        with:
          files: ./coverage/lcov.info
5. Claude 自動修正ワークフロー(任意)

ファイル:.github/workflows/claude-auto-fix.yml

Claude Code Action を使用した、CI 失敗の自動分析と修正:

name: "Auto-fix: CI failures"

on:
  workflow_run:
    # Customize: list the CI workflow display names to monitor.
    # The strings here must match the target workflows' `name:` values exactly.
    workflows: ["Test: Suite"]
    types: [completed]
  workflow_dispatch:
    inputs:
      run_id:
        description: "Failed workflow run ID to analyze"
        required: true
        type: string

concurrency:
  group: auto-fix-${{ github.event.workflow_run.head_branch || github.ref_name }}
  cancel-in-progress: false

主な機能:

  • 監視対象のワークフローが完了すると workflow_run でトリガー
  • 失敗ログとコンテキストを自動収集
  • 重複防止:自動修正 PR のオープン数を 3 件までに制限
  • ループ防止:fix(auto): で始まるコミットをスキップ
  • 自動修正可能な失敗には修正 PR を作成し、複雑な失敗には GitHub Issue を作成
  • スコープを限定したツール権限で anthropics/claude-code-action@v1 を使用

前提条件:

  • リポジトリの設定で CLAUDE_CODE_OAUTH_TOKEN シークレットを構成
  • 監視対象となる CI ワークフローを少なくとも 1 つ用意(workflows: の一覧をカスタマイズ)

完全なテンプレートについては、configure-workflows の Claude 自動修正ワークフローテンプレート を参照してください。

ワークフロー標準

アクションのバージョン
アクションバージョン用途
actions/checkoutv6リポジトリのチェックアウト
docker/setup-buildx-actionv4マルチプラットフォームビルド
docker/login-actionv4レジストリ認証
docker/metadata-actionv6イメージのタグ付け
docker/build-push-actionv7コンテナのビルド/プッシュ
actions/setup-nodev6Node.js のセットアップ
googleapis/release-please-actionv5リリースの自動化
権限

必要最小限の権限:

permissions:
  contents: read      # Default for most jobs
  packages: write     # For container push to GHCR
  pull-requests: write  # For release-please PR creation
トリガー

標準的なトリガーパターン:

# Build on push and PR to main
on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

# Also build on release
on:
  release:
    types: [published]
ビルドキャッシュ

Docker レイヤーには GitHub Actions キャッシュを使用します:

cache-from: type=gha
cache-to: type=gha,mode=max
マルチプラットフォームビルド

amd64 と arm64 の両方を対象にビルドします:

platforms: linux/amd64,linux/arm64

準拠要件

必須ワークフロー
ワークフロー目的必須
container-buildコンテナーのビルドはい(Dockerfile がある場合)
release-pleaseリリースの自動化はい
testテストとリンティング推奨
argocd-automergeイメージ更新の自動マージ任意(ArgoCD Image Updater を使用する場合)
claude-auto-fixCI 失敗の自動修復任意
必須要素
要素要件
checkout actionv6
build-push actionv7
マルチプラットフォームamd64 + arm64
キャッシュGHA キャッシュを有効化
権限明示的かつ最小限

ステータスレベル

ステータス条件
PASSすべての必須ワークフローが存在し、準拠した設定になっている
WARNワークフローは存在するが、古いアクションバージョンを使用している
FAIL必須ワークフローが不足している
SKIP該当しない(Dockerfile がない場合は container-build なし)

必要なシークレット

シークレット目的必須
GITHUB_TOKENコンテナーレジストリの認証自動的に提供
SENTRY_AUTH_TOKENソースマップのアップロードSentry を使用する場合
MY_RELEASE_PLEASE_TOKENリリース PR の作成release-please 用
CLAUDE_CODE_OAUTH_TOKENClaude Code Action の認証claude-auto-fix 用

トラブルシューティング

ビルドが失敗する場合
  • Dockerfile の構文を確認します
  • ビルド引数が正しく渡されていることを確認します
  • キャッシュ無効化の問題を確認します
マルチプラットフォームの問題
  • Dockerfile がプラットフォームに依存しないことを確認します
  • 公式のマルチアーキテクチャ対応ベースイメージを使用します
  • アーキテクチャ固有のバイナリを避けます
キャッシュが機能しない場合
  • cache-from と cache-to が設定されていることを確認します
  • GitHub Actions のキャッシュ上限(10GB)を確認します
  • 大きなイメージにはレジストリベースのキャッシュを検討します

コメント