Agent Skills by ALSEL
Anthropic ClaudeDevOps・インフラ⭐ リポ 299品質スコア 89/100

cicd

GitHub ActionsとDockerを使用したCI/CDの構築と自動デプロイを設定します。Laravelプロジェクトのパイプライン構築、Docker設定、デプロイ自動化が必要な場合に利用できます。

description の原文を見る

Configura CI/CD com GitHub Actions, Docker e deploy automatizado. Use quando precisar criar pipelines de CI/CD, configurar Docker, ou automatizar deploys de projetos Laravel.

SKILL.md 本文

cicd

概要

GitHub Actionsを使用したLaravelのCI/CD、Dockerビルド、自動デプロイを設定します。

関連スキル

スキル一緒に使う場合
workflowブランチとコミットと統合する場合
qa品質パイプラインの場合
testingテストパイプラインの場合
docsデプロイ後にドキュメントを更新する場合

使用する場合

このスキルは以下の場合に使用します:

  • Laravelプロジェクト用のCI/CDを設定する
  • ビルドを自動化する
  • 自動デプロイを設定する
  • テストワークフローを作成する
  • マルチアーキテクチャDockerビルドを設定する

ワークフロー

ワークフロートリガー機能
build-docker.ymlmain/developへのプッシュDockerイメージのビルドとプッシュ
trigger-deploy.ymlビルド成功後Coolifyへのウェブフック

Dockerビルドワークフロー

トリガー

on:
  push:
    branches:
      - main
      - develop

ステップ

  1. Checkout - ソースコード
  2. Setup Bun - JSパッケージマネージャー
  3. Setup PHP 8.5 - PHPランタイム
  4. Composer install - PHPの依存関係(no-dev)
  5. Build frontend - React/Inertiaアセット
  6. Build Filament - 管理画面アセット
  7. Docker buildx - マルチアーキテクチャビルド
  8. Push GHCR - コンテナレジストリ

環境セットアップ

- name: Install NPM/Bun
  uses: oven-sh/setup-bun@v2

- name: Install PHP & Composer
  uses: shivammathur/setup-php@v2
  with:
    php-version: '8.5'
    extensions: mbstring, dom, fileinfo, pdo, pdo_mysql

アセットビルド

- name: Install Composer Dependencies
  run: composer install --no-dev --no-interaction --prefer-dist --optimize-autoloader

- name: Build Frontend Assets
  run: |
    bun install
    bun run build
    bun run build:ssr

- name: Build Filament Assets
  run: |
    php artisan filament:assets
    php artisan filament:upgrade --no-interaction
    php artisan view:clear

Dockerビルドキャッシュ

- name: Set up Docker Buildx
  uses: docker/setup-buildx-action@v3
  with:
    driver: docker-container

- name: Cache Docker Layers
  uses: actions/cache@v5
  with:
    path: /tmp/.buildx-cache
    key: docker-${{ runner.os }}-${{ github.ref_name }}-${{ github.sha }}
    restore-keys: |
      docker-${{ runner.os }}-${{ github.ref_name }}-
      docker-${{ runner.os }}-main-

マルチイメージビルド

- name: Build & Push FrankenPHP Image (App)
  uses: docker/build-push-action@v6
  with:
    push: true
    context: .
    file: ./docker/frankenphp/Dockerfile
    cache-from: type=local,src=/tmp/.buildx-cache
    cache-to: type=local,dest=/tmp/.buildx-cache-new,mode=max
    tags: |
      ghcr.io/${{ github.repository }}-frankenphp:${{ github.ref_name }}

- name: Build & Push FPM/Nginx Image (Workers/Tasks)
  uses: docker/build-push-action@v6
  with:
    push: true
    context: .
    file: ./docker/php/Dockerfile
    target: ci
    tags: |
      ghcr.io/${{ github.repository }}:${{ github.ref_name }}

タグ戦略

tags: |
  ghcr.io/${{ github.repository }}-frankenphp:${{ github.ref_name }}

# mainのみの場合はlatest
- name: Push Latest FrankenPHP
  if: github.ref_name == 'main'
  uses: docker/build-push-action@v6
  with:
    tags: |
      ghcr.io/${{ github.repository }}-frankenphp:latest

デプロイトリガーワークフロー

name: Trigger Deploy

on:
  workflow_run:
    workflows: ["Docker Build"]
    types: [completed]
    branches: [main, develop]

jobs:
  trigger-webhook:
    runs-on: ubuntu-latest
    if: ${{ github.event.workflow_run.conclusion == 'success' }}
    steps:
      - name: Trigger Deploy Webhook
        uses: fjogeleit/http-request-action@v1
        with:
          url: ${{ vars.DEPLOY_WEBHOOK_URL }}
          method: GET

必須シークレット

シークレット用途
GHCR_PATイメージプッシュ用のトークン
DEPLOY_WEBHOOK_URLCoolifyウェブフック URL

ブランチ戦略

ブランチタグデプロイ
mainlatest, main本番環境
developdevelopステージング環境

トラブルシューティング

キャッシュが機能しない

キャッシュの移動が最後にあることを確認してください:

- name: Move Cache
  run: |
    rm -rf /tmp/.buildx-cache
    mv /tmp/.buildx-cache-new /tmp/.buildx-cache

ビルドが失敗する

# ローカルでビルドをテストする
docker buildx build \
  -f docker/frankenphp/Dockerfile \
  --platform linux/amd64,linux/arm64 \
  -t test-image .

デプロイがトリガーされない

確認項目:

  1. build-docker.yml が正常に完了したか
  2. trigger-deploy.yml に正しいトリガーがあるか
  3. DEPLOY_WEBHOOK_URL が設定されているか

完全なワークフロー例

完全なDockerビルドワークフロー

name: Docker Build

on:
  push:
    branches:
      - main
      - develop

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

    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v3
        with:
          driver: docker-container

      - name: Cache Docker Layers
        uses: actions/cache@v5
        with:
          path: /tmp/.buildx-cache
          key: docker-${{ runner.os }}-${{ github.ref_name }}-${{ github.sha }}
          restore-keys: |
            docker-${{ runner.os }}-${{ github.ref_name }}-
            docker-${{ runner.os }}-main-

      - name: Install NPM/Bun
        uses: oven-sh/setup-bun@v2

      - name: Install PHP & Composer
        uses: shivammathur/setup-php@v2
        with:
          php-version: '8.5'
          extensions: mbstring, dom, fileinfo, pdo, pdo_mysql

      - name: Install Composer Dependencies
        run: composer install --no-dev --no-interaction --prefer-dist --optimize-autoloader

      - name: Build Frontend Assets
        run: |
          bun install
          bun run build
          bun run build:ssr

      - name: Build Filament Assets
        run: |
          php artisan filament:assets
          php artisan filament:upgrade --no-interaction
          php artisan view:clear

      - name: Build & Push FrankenPHP Image
        uses: docker/build-push-action@v6
        with:
          push: true
          context: .
          file: ./docker/frankenphp/Dockerfile
          cache-from: type=local,src=/tmp/.buildx-cache
          cache-to: type=local,dest=/tmp/.buildx-cache-new,mode=max
          tags: |
            ghcr.io/${{ github.repository }}-frankenphp:${{ github.ref_name }}

      - name: Move Cache
        run: |
          rm -rf /tmp/.buildx-cache
          mv /tmp/.buildx-cache-new /tmp/.buildx-cache

      - name: Push Latest Tag
        if: github.ref_name == 'main'
        uses: docker/build-push-action@v6
        with:
          push: true
          tags: |
            ghcr.io/${{ github.repository }}-frankenphp:latest

完全なデプロイトリガーワークフロー

name: Trigger Deploy

on:
  workflow_run:
    workflows: ["Docker Build"]
    types: [completed]
    branches: [main, develop]

jobs:
  trigger-webhook:
    runs-on: ubuntu-latest
    if: ${{ github.event.workflow_run.conclusion == 'success' }}

    steps:
      - name: Trigger Deploy Webhook
        uses: fjogeleit/http-request-action@v1
        with:
          url: ${{ vars.DEPLOY_WEBHOOK_URL }}
          method: GET

ベストプラクティス

✅ すること

  • ビルドを高速化するためにDockerキャッシュを使用する
  • 互換性を確保するためにマルチアーキテクチャビルドを使用する
  • アプリとワーカーのビルドを分離する
  • ブランチごとに特定のタグを使用する
  • 自動デプロイ用のウェブフックを設定する
  • ワークフローステータスを監視する
  • 機密データにはシークレットを使用する
  • ワークフローをドキュメント化しておく

❌ しないこと

  • ワークフローに認証情報をハードコーディングしない
  • キャッシュなしのビルドを使用しない
  • ビルド前のテストをスキップしない
  • タグなしでイメージをプッシュしない
  • 不安定なブランチを本番環境に使用しない
  • ビルド失敗を無視しない

設定チェックリスト

CI/CDを本番環境で使用する前に:

  • GitHub Actionsが設定されている
  • シークレットが設定されている(GHCR_PAT、DEPLOY_WEBHOOK_URL)
  • ワークフローがローカルでテスト済み
  • マルチアーキテクチャビルドが機能している
  • Dockerキャッシュが設定されている
  • ウェブフックが設定されている
  • 自動デプロイがテスト済み
  • ロールバック計画が立てられている

参考資料

ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
majiayu000
リポジトリ
majiayu000/claude-skill-registry
ライセンス
MIT
最終更新
2026/5/4

Source: https://github.com/majiayu000/claude-skill-registry / ライセンス: MIT

本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: majiayu000 · majiayu000/claude-skill-registry · ライセンス: MIT