deployment-engineer について
デプロイ自動化、CI/CD パイプライン、リリース、インフラ設定を計画するスキルです。本番変更の承認境界を定め、設定の生成・検証スクリプトも含みます。
主な機能
- 01CI/CD パイプラインの計画
- 02ブルーグリーン・ローリング・カナリア方式
- 03環境設定のガイダンス
- 04ヘルスチェックとロールバック例
- 05デプロイ設定の生成と検証
活用シーン
- 01リリースパイプラインの計画
- 02デプロイ方式の選定
- 03デプロイ設定の確認
- 04ロールバックとヘルスチェックの準備
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ zhaono1/ agent-playbook --skill deployment-engineerインストール後、Claude Code で/deployment-engineerを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
README.mdreferences/kubernetes.mdmonitoring.mdpipelines.mdscripts/generate_deploy.pyvalidate_deploy.py詳細
デプロイエンジニア
デプロイの自動化、CI/CD パイプライン、インフラストラクチャ管理を専門とします。
権限の境界
計画、設定の生成、読み取り専用の検証の実行は、デプロイの許可を意味しません。該当する操作と対象についてユーザーから明示的な承認を得ていない限り、プッシュ、デプロイ、ロールバック、本番インフラストラクチャの変更、リモートリリース状態の変更を行わないでください。承認された変更を行う前に、環境、コマンド、想定される影響、検証方法、ロールバック手順を明示してください。対象または権限が曖昧な場合は中止してください。
このスキルが有効になる場合
次の場合に有効になります。
- デプロイパイプラインを設定する
- CI/CD を構成する
- リリースを管理する
- インフラストラクチャを自動化する
CI/CD パイプライン
パイプラインのステージ
stages:
- lint
- test
- build
- security
- deploy-dev
- deploy-staging
- deploy-production
GitHub Actions の例
name: CI/CD
on:
push:
branches: [main, develop]
pull_request:
branches: [main]
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '20'
- run: npm ci
- run: npm run lint
test:
runs-on: ubuntu-latest
needs: lint
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
- run: npm ci
- run: npm test
build:
runs-on: ubuntu-latest
needs: test
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
- run: npm ci
- run: npm run build
- uses: actions/upload-artifact@v4
with:
name: build
path: dist/
deploy-production:
runs-on: ubuntu-latest
needs: build
if: github.ref == 'refs/heads/main'
environment: production
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
name: build
path: dist/
- run: npm run deploy
デプロイ戦略
1. ブルーグリーンデプロイ
┌─────────┐
│ Load │
│ Balancer│
└────┬────┘
│
┌────────┴────────┐
│ Switch │
├────────┬────────┤
▼ ▼ ▼
┌─────┐ ┌─────┐ ┌─────┐
│Blue │ │Green│ │ │
└─────┘ └─────┘ └─────┘
2. ローリングデプロイ
┌─────────────────────────────────────┐
│ v1 v1 v1 v1 v1 v1 v1 v1 v1 │ → Old
│ v2 v2 v2 v2 v2 v2 v2 v2 v2 │ → New
└─────────────────────────────────────┘
▲ ▲
│ │
Start End
3. カナリアデプロイ
┌──────────────────────────────────────┐
│ v1 v1 v1 v1 v1 v1 v1 v1 v1 v1 │ → Old
│ v2 v2 v2 v2 │ → Canary (5%)
└──────────────────────────────────────┘
Monitor metrics, then:
│ v1 v1 v1 v1 │ → Old (50%)
│ v2 v2 v2 v2 v2 v2 v2 v2 v2 v2 │ → New (50%)
環境設定
環境変数
# Production
NODE_ENV=production
DATABASE_URL=postgresql://...
API_KEY=${API_KEY}
SENTRY_DSN=https://example.com/123
# Development
NODE_ENV=development
DATABASE_URL=postgresql://localhost:5432/dev
構成管理
// config/production.ts
export default {
database: {
url: process.env.DATABASE_URL,
poolSize: 20,
},
redis: {
url: process.env.REDIS_URL,
},
};
ヘルスチェック
// GET /health
app.get('/health', (req, res) => {
const health = {
status: 'ok',
timestamp: new Date().toISOString(),
checks: {
database: 'ok',
redis: 'ok',
external_api: 'ok',
},
};
if (Object.values(health.checks).some(v => v !== 'ok')) {
health.status = 'degraded';
return res.status(503).json(health);
}
res.json(health);
});
ロールバック戦略
# Kubernetes
kubectl rollout undo deployment/app
# Docker
docker-compose down
docker-compose up -d --scale app=<previous-version>
# Git
git revert HEAD
git push
モニタリングとログ
追跡するメトリクス
- デプロイ頻度
- 変更のリードタイム
- 平均復旧時間(MTTR)
- 変更失敗率
ログ
// Structured logging
logger.info('Deployment started', {
version: process.env.VERSION,
environment: process.env.NODE_ENV,
timestamp: new Date().toISOString(),
});
スクリプト
デプロイ設定を生成:
python3 scripts/generate_deploy.py --env <environment> --name <service-name>
デプロイを検証:
python3 scripts/validate_deploy.py --input deploy-plan.md
参考資料
references/pipelines.md- CI/CD パイプラインの例references/kubernetes.md- K8s のデプロイ設定references/monitoring.md- モニタリングの設定
コメント
Markdown 対応