acc-create-deploy-strategy
Deployment Strategy Generator
Generates deployment configurations for zero-downtime deployments.
Blue-Green Deployment
GitHub Actions
# .github/workflows/deploy-blue-green.yml
name: Blue-Green Deploy
on:
push:
tags: ['v*']
workflow_dispatch:
inputs:
environment:
description: 'Target environment'
required: true
type: choice
options: [staging, production]
env:
REGISTRY: ghcr.io
IMAGE_NAME: ${{ github.repository }}
jobs:
build:
runs-on: ubuntu-latest
outputs:
image_tag: ${{ steps.meta.outputs.tags }}
steps:
- uses: actions/checkout@v4
- name: Build and push image
uses: docker/build-push-action@v5
with:
push: true
tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.sha }}
deploy:
needs: build
runs-on: ubuntu-latest
environment:
name: ${{ github.event.inputs.environment || 'production' }}
url: ${{ steps.deploy.outputs.url }}
steps:
- uses: actions/checkout@v4
- name: Determine target environment
id: env
run: |
ACTIVE=$(curl -s https://api.example.com/active-env)
if [ "$ACTIVE" = "blue" ]; then
echo "target=green" >> $GITHUB_OUTPUT
echo "url=https://green.example.com" >> $GITHUB_OUTPUT
else
echo "target=blue" >> $GITHUB_OUTPUT
echo "url=https://blue.example.com" >> $GITHUB_OUTPUT
fi
- name: Deploy to inactive environment
id: deploy
env:
TARGET: ${{ steps.env.outputs.target }}
IMAGE: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.sha }}
run: |
# Deploy to target environment
ssh deploy@${{ secrets.DEPLOY_HOST }} << EOF
docker pull $IMAGE
docker-compose -f docker-compose.$TARGET.yml up -d
EOF
echo "url=${{ steps.env.outputs.url }}" >> $GITHUB_OUTPUT
- name: Health check
run: |
for i in {1..30}; do
if curl -sf "${{ steps.env.outputs.url }}/health"; then
echo "Health check passed"
exit 0
fi
sleep 10
done
echo "Health check failed"
exit 1
- name: Run smoke tests
run: |
npm run test:smoke -- --base-url="${{ steps.env.outputs.url }}"
- name: Switch traffic
if: success()
run: |
curl -X POST https://api.example.com/switch-traffic \
-H "Authorization: Bearer ${{ secrets.DEPLOY_TOKEN }}" \
-d '{"target": "${{ steps.env.outputs.target }}"}'
- name: Rollback on failure
if: failure()
run: |
echo "Deployment failed, keeping traffic on current environment"
curl -X POST https://api.example.com/rollback \
-H "Authorization: Bearer ${{ secrets.DEPLOY_TOKEN }}"
See references/templates.md for: Blue-Green GitLab CI, Canary GitHub Actions, Canary GitLab CI, Rolling Kubernetes, Rolling Docker Swarm configurations.
Health Check Endpoints
<?php
// src/Api/Action/HealthAction.php
declare(strict_types=1);
namespace App\Api\Action;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
final readonly class HealthAction
{
public function __construct(
private DatabaseHealthChecker $database,
private CacheHealthChecker $cache,
private QueueHealthChecker $queue,
) {}
public function ready(ServerRequestInterface $request): ResponseInterface
{
$checks = [
'database' => $this->database->check(),
'cache' => $this->cache->check(),
'queue' => $this->queue->check(),
];
$healthy = !in_array(false, $checks, true);
return new JsonResponse(
[
'status' => $healthy ? 'healthy' : 'unhealthy',
'checks' => $checks,
'timestamp' => (new DateTimeImmutable())->format('c'),
],
$healthy ? 200 : 503
);
}
public function live(ServerRequestInterface $request): ResponseInterface
{
return new JsonResponse([
'status' => 'alive',
'timestamp' => (new DateTimeImmutable())->format('c'),
]);
}
}
Generation Instructions
-
Identify deployment target:
- Kubernetes / Docker Swarm / VMs
- Cloud provider (AWS, GCP, Azure)
- CI platform (GitHub, GitLab)
-
Select strategy:
- Blue-Green: Instant switch, 2x resources
- Canary: Gradual rollout, metrics-based
- Rolling: Gradual replace, minimal resources
-
Configure health checks:
- Readiness probe (can accept traffic)
- Liveness probe (is alive)
- Startup probe (is ready to be probed)
-
Set up monitoring:
- Error rate thresholds
- Latency thresholds
- Custom metrics
-
Define rollback triggers:
- Automatic on health check failure
- Manual option always available
Usage
Provide:
- Deployment target (K8s, Swarm, VMs)
- Strategy (blue-green, canary, rolling)
- CI platform (GitHub, GitLab)
- Health check endpoints
- Rollback criteria
The generator will:
- Create deployment workflow
- Configure health checks
- Set up traffic management
- Add monitoring hooks
- Implement rollback procedures
More from dykyi-roman/awesome-claude-code
psr-overview-knowledge
PHP Standards Recommendations (PSR) overview knowledge base. Provides comprehensive reference for all accepted PSRs including PSR-1,3,4,6,7,11,12,13,14,15,16,17,18,20. Use for PSR selection decisions and compliance audits.
22detect-code-smells
Detects code smells in PHP codebases. Identifies God Class, Feature Envy, Data Clumps, Long Parameter List, Long Method, Primitive Obsession, Message Chains, Inappropriate Intimacy. Generates actionable reports with refactoring recommendations.
15clean-arch-knowledge
Clean Architecture knowledge base. Provides patterns, antipatterns, and PHP-specific guidelines for Clean Architecture and Hexagonal Architecture audits.
15ddd-knowledge
DDD architecture knowledge base. Provides patterns, antipatterns, and PHP-specific guidelines for Domain-Driven Design audits.
14testing-knowledge
Testing knowledge base for PHP 8.4 projects. Provides testing pyramid, AAA pattern, naming conventions, isolation principles, DDD testing guidelines, and PHPUnit patterns.
12bug-root-cause-finder
Root cause analysis methods for PHP bugs. Provides 5 Whys technique, fault tree analysis, git bisect guidance, and stack trace parsing.
12