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.
Install with Tessl CLI
npx tessl i github:ArabelaTso/Skills-4-SE --skill cd-pipeline-generator89
Does it follow best practices?
If you maintain this skill, you can automatically optimize it using the tessl CLI to improve its score:
npx tessl skill review --optimize ./path/to/skillValidation for skill structure
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 buildDocker 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:$TAGDatabase migrations: Run migrations before deployment
- name: Run migrations
run: npm run migrate # or: alembic upgrade head, rails db:migrateHealth checks: Verify deployment success
- name: Health check
run: curl -f https://$DEPLOYMENT_URL/health || exit 1Configure 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 commandsRestrict 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
ficonfig.staging.json, config.production.json)0f00a4f
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.