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.yml | main/developへのプッシュ | Dockerイメージのビルドとプッシュ |
trigger-deploy.yml | ビルド成功後 | Coolifyへのウェブフック |
Dockerビルドワークフロー
トリガー
on:
push:
branches:
- main
- develop
ステップ
- Checkout - ソースコード
- Setup Bun - JSパッケージマネージャー
- Setup PHP 8.5 - PHPランタイム
- Composer install - PHPの依存関係(no-dev)
- Build frontend - React/Inertiaアセット
- Build Filament - 管理画面アセット
- Docker buildx - マルチアーキテクチャビルド
- 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_URL | Coolifyウェブフック URL |
ブランチ戦略
| ブランチ | タグ | デプロイ |
|---|---|---|
main | latest, main | 本番環境 |
develop | develop | ステージング環境 |
トラブルシューティング
キャッシュが機能しない
キャッシュの移動が最後にあることを確認してください:
- 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 .
デプロイがトリガーされない
確認項目:
build-docker.ymlが正常に完了したかtrigger-deploy.ymlに正しいトリガーがあるか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キャッシュが設定されている
- ウェブフックが設定されている
- 自動デプロイがテスト済み
- ロールバック計画が立てられている
参考資料
- GitHub Actions Documentation - 公式ドキュメント
- Docker Build Push Action - 公式アクション
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- majiayu000
- ライセンス
- MIT
- 最終更新
- 2026/5/4
Source: https://github.com/majiayu000/claude-skill-registry / ライセンス: MIT