<< All versions
Skill v1.0.1
currentAutomated scan100/100majiayu000/claude-skill-registry/cicd-aronpc-ai
3 files
──Details
PublishedMay 14, 2026 at 08:17 PM
Content Hashsha256:7750926d8eeb58a6...
Git SHA63c042456db3
Bump Typepatch
──Files
Files (1 file, 8.7 KB)
SKILL.md8.7 KBactive
SKILL.md · 378 lines · 8.7 KB
version: "1.0.1" name: cicd 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. compatibility: GitHub Actions, Docker, Laravel 11+ metadata: author: aronpc version: 1.0.0 category: devops allowed-tools:
- Read
- Write
- Edit
- Bash
cicd
Resumo
Configura CI/CD com GitHub Actions para Laravel incluindo build Docker e deploy automatizado.
Skills Relacionadas
| Skill | Quando usar junto | |
|---|---|---|
workflow | Para integrar com branches e commits | |
qa | Para pipelines de qualidade | |
testing | Para pipelines de teste | |
docs | Para atualizar docs pós-deploy |
Quando usar
Use esta skill sempre que:
- Configurar CI/CD para projetos Laravel
- Automatizar builds
- Configurar deploy automático
- Criar workflows de teste
- Configurar multi-arch Docker builds
Workflows
| Workflow | Trigger | Função | |
|---|---|---|---|
build-docker.yml | Push para main/develop | Build + push imagens Docker | |
trigger-deploy.yml | Após build sucesso | Webhook para Coolify |
Workflow de Build Docker
Trigger
yaml
on:push:branches:- main- develop
Passos
- Checkout - Código fonte
- Setup Bun - Gerenciador de pacotes JS
- Setup PHP 8.5 - Runtime PHP
- Composer install - Dependências PHP (no-dev)
- Build frontend - Assets React/Inertia
- Build Filament - Assets admin
- Docker buildx - Multi-arch builds
- Push GHCR - Registro container
Setup de Ambiente
yaml
- name: Install NPM/Bunuses: oven-sh/setup-bun@v2- name: Install PHP & Composeruses: shivammathur/setup-php@v2with:php-version: '8.5'extensions: mbstring, dom, fileinfo, pdo, pdo_mysql
Build de Assets
yaml
- name: Install Composer Dependenciesrun: composer install --no-dev --no-interaction --prefer-dist --optimize-autoloader- name: Build Frontend Assetsrun: |bun installbun run buildbun run build:ssr- name: Build Filament Assetsrun: |php artisan filament:assetsphp artisan filament:upgrade --no-interactionphp artisan view:clear
Docker Buildx com Cache
yaml
- name: Set up Docker Buildxuses: docker/setup-buildx-action@v3with:driver: docker-container- name: Cache Docker Layersuses: actions/cache@v5with:path: /tmp/.buildx-cachekey: docker-${{ runner.os }}-${{ github.ref_name }}-${{ github.sha }}restore-keys: |docker-${{ runner.os }}-${{ github.ref_name }}-docker-${{ runner.os }}-main-
Build de Multi-Imagem
yaml
- name: Build & Push FrankenPHP Image (App)uses: docker/build-push-action@v6with:push: truecontext: .file: ./docker/frankenphp/Dockerfilecache-from: type=local,src=/tmp/.buildx-cachecache-to: type=local,dest=/tmp/.buildx-cache-new,mode=maxtags: |ghcr.io/${{ github.repository }}-frankenphp:${{ github.ref_name }}- name: Build & Push FPM/Nginx Image (Workers/Tasks)uses: docker/build-push-action@v6with:push: truecontext: .file: ./docker/php/Dockerfiletarget: citags: |ghcr.io/${{ github.repository }}:${{ github.ref_name }}
Estratégia de Tags
yaml
tags: |ghcr.io/${{ github.repository }}-frankenphp:${{ github.ref_name }}# Latest apenas para main- name: Push Latest FrankenPHPif: github.ref_name == 'main'uses: docker/build-push-action@v6with:tags: |ghcr.io/${{ github.repository }}-frankenphp:latest
Workflow de Trigger Deploy
yaml
name: Trigger Deployon:workflow_run:workflows: ["Docker Build"]types: [completed]branches: [main, develop]jobs:trigger-webhook:runs-on: ubuntu-latestif: ${{ github.event.workflow_run.conclusion == 'success' }}steps:- name: Trigger Deploy Webhookuses: fjogeleit/http-request-action@v1with:url: ${{ vars.DEPLOY_WEBHOOK_URL }}method: GET
Secrets Requeridos
| Secret | Uso | |
|---|---|---|
GHCR_PAT | Token para push imagens | |
DEPLOY_WEBHOOK_URL | URL webhook Coolify |
Estratégia de Branch
| Branch | Tag | Deploy | |
|---|---|---|---|
main | latest, main | Produção | |
develop | develop | Staging |
Solução de Problemas
Cache não funcionando
Verifique se o cache move está no final:
yaml
- name: Move Cacherun: |rm -rf /tmp/.buildx-cachemv /tmp/.buildx-cache-new /tmp/.buildx-cache
Build falhando
bash
# Testar build localmentedocker buildx build \-f docker/frankenphp/Dockerfile \--platform linux/amd64,linux/arm64 \-t test-image .
Deploy não triggerando
Verifique:
build-docker.ymlcompletou com sucessotrigger-deploy.ymltem trigger corretoDEPLOY_WEBHOOK_URLestá configurada
Exemplos de Workflows Completos
Build Docker Workflow Completo
yaml
name: Docker Buildon:push:branches:- main- developjobs:build:runs-on: ubuntu-latestpermissions:contents: readpackages: writesteps:- name: Checkoutuses: actions/checkout@v4- name: Set up Docker Buildxuses: docker/setup-buildx-action@v3with:driver: docker-container- name: Cache Docker Layersuses: actions/cache@v5with:path: /tmp/.buildx-cachekey: docker-${{ runner.os }}-${{ github.ref_name }}-${{ github.sha }}restore-keys: |docker-${{ runner.os }}-${{ github.ref_name }}-docker-${{ runner.os }}-main-- name: Install NPM/Bunuses: oven-sh/setup-bun@v2- name: Install PHP & Composeruses: shivammathur/setup-php@v2with:php-version: '8.5'extensions: mbstring, dom, fileinfo, pdo, pdo_mysql- name: Install Composer Dependenciesrun: composer install --no-dev --no-interaction --prefer-dist --optimize-autoloader- name: Build Frontend Assetsrun: |bun installbun run buildbun run build:ssr- name: Build Filament Assetsrun: |php artisan filament:assetsphp artisan filament:upgrade --no-interactionphp artisan view:clear- name: Build & Push FrankenPHP Imageuses: docker/build-push-action@v6with:push: truecontext: .file: ./docker/frankenphp/Dockerfilecache-from: type=local,src=/tmp/.buildx-cachecache-to: type=local,dest=/tmp/.buildx-cache-new,mode=maxtags: |ghcr.io/${{ github.repository }}-frankenphp:${{ github.ref_name }}- name: Move Cacherun: |rm -rf /tmp/.buildx-cachemv /tmp/.buildx-cache-new /tmp/.buildx-cache- name: Push Latest Tagif: github.ref_name == 'main'uses: docker/build-push-action@v6with:push: truetags: |ghcr.io/${{ github.repository }}-frankenphp:latest
Trigger Deploy Workflow Completo
yaml
name: Trigger Deployon:workflow_run:workflows: ["Docker Build"]types: [completed]branches: [main, develop]jobs:trigger-webhook:runs-on: ubuntu-latestif: ${{ github.event.workflow_run.conclusion == 'success' }}steps:- name: Trigger Deploy Webhookuses: fjogeleit/http-request-action@v1with:url: ${{ vars.DEPLOY_WEBHOOK_URL }}method: GET
Melhores Práticas
✅ FAÇA
- Use cache Docker para builds mais rápidos
- Use multi-arch builds para compatibilidade
- Separe builds de app e workers
- Use tags específicos por branch
- Configure webhooks para deploy automático
- Monitore status dos workflows
- Use secrets para dados sensíveis
- Mantenha workflows documentados
❌ NÃO FAÇA
- Não hardcode credenciais nos workflows
- Não use builds sem cache
- Não skip testes antes do build
- Não push imagens sem tags
- Não use branches instáveis para produção
- Não ignore falhas de build
Checklist de Configuração
Antes de usar CI/CD em produção:
- [ ] GitHub Actions configurado
- [ ] Secrets configurados (GHCR_PAT, DEPLOY_WEBHOOK_URL)
- [ ] Workflows testados localmente
- [ ] Multi-arch builds funcionando
- [ ] Cache Docker configurado
- [ ] Webhooks configurados
- [ ] Deploy automático testado
- [ ] Rollback planejado
Referências
- GitHub Actions Documentation - Documentação oficial
- Docker Build Push Action - Action oficial