Design multi-stage CI/CD pipelines with approval gates, security checks, and deployment orchestration. Used when designing deployment workflow architecture, setting up continuous delivery, or implementing GitOps practices.
English | 日本語
承認ゲートとデプロイメント戦略を備えたマルチステージCI/CDパイプラインのアーキテクチャパターン。
適切なステージ構成と承認ワークフローを通じて、スピードと安全性のバランスを取る堅牢で安全なデプロイメントパイプラインを設計する。
┌─────────┐ ┌──────┐ ┌─────────┐ ┌────────┐ ┌──────────┐
│ ビルド │ → │テスト│ → │ステージ │ → │承認 │ → │本番環境 │
└─────────┘ └──────┘ └─────────┘ └────────┘ └──────────┘
# GitHub Actions
production-deploy:
needs: staging-deploy
environment:
name: production
url: https://app.example.com
runs-on: ubuntu-latest
steps:
- name: Deploy to production
run: |
# デプロイメントコマンド
# GitLab CI
deploy:production:
stage: deploy
script:
- deploy.sh production
environment:
name: production
when: delayed
start_in: 30 minutes
only:
- main
# Azure Pipelines
stages:
- stage: Production
dependsOn: Staging
jobs:
- deployment: Deploy
environment:
name: production
resourceType: Kubernetes
strategy:
runOnce:
preDeploy:
steps:
- task: ManualValidation@0
inputs:
notifyUsers: 'team-leads@example.com'
instructions: '承認前にステージングメトリクスを確認'
参照: assets/approval-gate-template.ymlを参照
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 10
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 2
maxUnavailable: 1
特性:
# Blue(現行)
kubectl apply -f blue-deployment.yaml
kubectl label service my-app version=blue
# Green(新規)
kubectl apply -f green-deployment.yaml
# Green環境をテスト
kubectl label service my-app version=green
# 必要に応じてロールバック
kubectl label service my-app version=blue
特性:
apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata:
name: my-app
spec:
replicas: 10
strategy:
canary:
steps:
- setWeight: 10
- pause: {duration: 5m}
- setWeight: 25
- pause: {duration: 5m}
- setWeight: 50
- pause: {duration: 5m}
- setWeight: 100
特性:
from flagsmith import Flagsmith
flagsmith = Flagsmith(environment_key="API_KEY")
if flagsmith.has_feature("new_checkout_flow"):
# 新しいコードパス
process_checkout_v2()
else:
# 既存のコードパス
process_checkout_v1()
特性:
name: Production Pipeline
on:
push:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build application
run: make build
- name: Build Docker image
run: docker build -t myapp:${{ github.sha }} .
- name: Push to registry
run: docker push myapp:${{ github.sha }}
test:
needs: build
runs-on: ubuntu-latest
steps:
- name: Unit tests
run: make test
- name: Security scan
run: trivy image myapp:${{ github.sha }}
deploy-staging:
needs: test
runs-on: ubuntu-latest
environment:
name: staging
steps:
- name: Deploy to staging
run: kubectl apply -f k8s/staging/
integration-test:
needs: deploy-staging
runs-on: ubuntu-latest
steps:
- name: Run E2E tests
run: npm run test:e2e
deploy-production:
needs: integration-test
runs-on: ubuntu-latest
environment:
name: production
steps:
- name: Canary deployment
run: |
kubectl apply -f k8s/production/
kubectl argo rollouts promote my-app
verify:
needs: deploy-production
runs-on: ubuntu-latest
steps:
- name: Health check
run: curl -f https://app.example.com/health
- name: Notify team
run: |
curl -X POST ${{ secrets.SLACK_WEBHOOK }} \
-d '{"text":"本番デプロイメント成功!"}'
deploy-and-verify:
steps:
- name: Deploy new version
run: kubectl apply -f k8s/
- name: Wait for rollout
run: kubectl rollout status deployment/my-app
- name: Health check
id: health
run: |
for i in {1..10}; do
if curl -sf https://app.example.com/health; then
exit 0
fi
sleep 10
done
exit 1
- name: Rollback on failure
if: failure()
run: kubectl rollout undo deployment/my-app
# リビジョン履歴を一覧表示
kubectl rollout history deployment/my-app
# 前のバージョンにロールバック
kubectl rollout undo deployment/my-app
# 特定のリビジョンにロールバック
kubectl rollout undo deployment/my-app --to-revision=3
- name: Post-deployment verification
run: |
# メトリクスの安定化を待つ
sleep 60
# エラー率をチェック
ERROR_RATE=$(curl -s "$PROMETHEUS_URL/api/v1/query?query=rate(http_errors_total[5m])" | jq '.data.result[0].value[1]')
if (( $(echo "$ERROR_RATE > 0.01" | bc -l) )); then
echo "エラー率が高すぎます: $ERROR_RATE"
exit 1
fi
references/pipeline-orchestration.md - 複雑なパイプラインパターンassets/approval-gate-template.yml - 承認ワークフローテンプレートgithub-actions-templates - GitHub Actions実装用gitlab-ci-patterns - GitLab CI実装用secrets-management - シークレット処理用npx skills add amurata/deployment-pipeline-design下载完整 Skill 目录,包含 SKILL.md 及所有相关文件
Search for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer