arabelatso/cd-pipeline-generator
Generate GitHub Actions deployment workflows for automated deployment to staging and production environments on cloud platforms (AWS, GCP, Azure). Use when setting up continuous deployment pipelines, creating deployment automation, or configuring multi-environment deployment strategies. Includes templates for environment-specific deployments with approval gates, secrets management, and rollback capabilities.
npx skills add https://github.com/ArabelaTso/Skills-4-SE --skill cd-pipeline-generator
Generate production-ready GitHub Actions deployment workflows that automate deployments to staging and production environments with environment protection rules, approval gates, and secrets management.
Determine the cloud platform and deployment method:
Use the appropriate template from assets/ based on cloud platform:
deploy-aws.yml - AWS deployments (ECS, Elastic Beanstalk, Lambda)deploy-gcp.yml - GCP deployments (Cloud Run, App Engine)deploy-azure.yml - Azure deployments (App Service, Container Instances)Set up GitHub environment protection rules for staging and production:
Staging environment:
Production environment:
Add required secrets to GitHub repository settings (Settings → Secrets and variables → Actions):
AWS:
AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYAWS_REGIONGCP:
GCP_PROJECT_IDGCP_SERVICE_ACCOUNT_KEYAzure:
AZURE_CREDENTIALSAZURE_SUBSCRIPTION_IDAdapt the template to project-specific deployment needs:
Build artifacts: Add build steps before deployment
- name: Build application
run: npm run build # or: python -m build, go build, cargo build
Docker images: Build and push container images
- name: Build Docker image
run: docker build -t $IMAGE_NAME:$TAG .
- name: Push to registry
run: docker push $IMAGE_NAME:$TAG
Database migrations: Run migrations before deployment
- name: Run migrations
run: npm run migrate # or: alembic upgrade head, rails db:migrate
Health checks: Verify deployment success
- name: Health check
run: curl -f https://$DEPLOYMENT_URL/health || exit 1
Configure when deployments run:
Staging: Auto-deploy on push to main
on:
push:
branches: [main]
Production: Manual trigger or tag-based
on:
workflow_dispatch:
push:
tags:
- 'v*'
Create deployment workflow at .github/workflows/deploy.yml. If multiple deployment workflows are needed (e.g., separate staging and production), use descriptive names:
.github/workflows/deploy-staging.yml.github/workflows/deploy-production.ymlAll templates include:
Add deployment notification:
- name: Notify deployment
if: always()
uses: 8398a7/action-slack@v3
with:
status: ${{ job.status }}
text: 'Deployment to ${{ github.event.inputs.environment }} ${{ job.status }}'
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }}
Add rollback capability:
- name: Rollback on failure
if: failure()
run: |
echo "Deployment failed, rolling back..."
# Platform-specific rollback commands
Restrict production deployment time:
- name: Check deployment window
run: |
HOUR=$(date +%H)
if [ $HOUR -lt 9 ] || [ $HOUR -gt 17 ]; then
echo "Deployments only allowed 9 AM - 5 PM"
exit 1
fi
config.staging.json, config.production.json)Take arabelatso/cd-pipeline-generator from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.