Agent Skills by ALSEL
Anthropic ClaudeDevOps・インフラ⭐ リポ 0品質スコア 50/100

ci-cd-best-practices

自動化パイプラインの構築、デプロイ戦略、テスト、そして各種プラットフォームにおけるDevOpsワークフローに関するCI/CDのベストプラクティスを提供します。CI/CDの設計や改善を検討している際にトリガーされ、効率的な自動化と安定したデプロイを実現するための具体的な指針を提示します。

description の原文を見る

CI/CD best practices for building automated pipelines, deployment strategies, testing, and DevOps workflows across platforms

SKILL.md 本文

CI/CD ベストプラクティス

あなたは継続的インテグレーション(CI)と継続的デプロイメント(CD)の専門家であり、自動化パイプライン、テスト戦略、デプロイメントパターン、DevOps ワークフローに関する業界標準のベストプラクティスに従っています。

コア原則

  • 自動化できることはすべて自動化する
  • 迅速なフィードバックループで早期に失敗する
  • 1 回のビルド、複数回のデプロイ
  • インフラストラクチャをコードとして実装する
  • 継続的改善を実践する
  • すべてのステージでセキュリティを維持する

パイプライン設計

パイプラインステージ

典型的な CI/CD パイプラインには以下のステージが含まれます:

Build -> Test -> Security -> Deploy (Staging) -> Deploy (Production)

1. ビルドステージ

build:
  stage: build
  script:
    - npm ci --prefer-offline
    - npm run build
  artifacts:
    paths:
      - dist/
    expire_in: 1 day
  cache:
    key: ${CI_COMMIT_REF_SLUG}
    paths:
      - node_modules/

ベストプラクティス:

  • 依存関係のキャッシング を使用してビルドを高速化する
  • 後続ステージ用にビルドアーティファクトを生成する
  • 再現性のために依存関係バージョンを固定する
  • マルチステージ Docker ビルドを使用してイメージサイズを縮小する

2. テストステージ

test:
  stage: test
  parallel:
    matrix:
      - TEST_TYPE: [unit, integration, e2e]
  script:
    - npm run test:${TEST_TYPE}
  coverage: '/Coverage: \d+\.\d+%/'
  artifacts:
    reports:
      junit: test-results.xml
      coverage_report:
        coverage_format: cobertura
        path: coverage/cobertura-coverage.xml

テストレイヤー:

  • ユニットテスト:高速で分離されたテスト、すべてのコミット時に実行
  • 統合テスト:コンポーネント間の相互作用をテスト
  • エンドツーエンドテスト:ユーザーワークフローを検証
  • パフォーマンステスト:回帰をチェック

3. セキュリティステージ

security:
  stage: security
  parallel:
    matrix:
      - SCAN_TYPE: [sast, dependency, secrets]
  script:
    - ./security-scan.sh ${SCAN_TYPE}
  allow_failure: false

セキュリティスキャンの種類:

  • SAST:静的アプリケーションセキュリティテスト
  • DAST:動的アプリケーションセキュリティテスト
  • 依存関係スキャン:脆弱なパッケージをチェック
  • シークレット検出:漏洩した認証情報を検出
  • コンテナスキャン:Docker イメージを分析

4. デプロイステージ

deploy:staging:
  stage: deploy
  environment:
    name: staging
    url: https://staging.example.com
  script:
    - ./deploy.sh staging
  rules:
    - if: $CI_COMMIT_BRANCH == "develop"

deploy:production:
  stage: deploy
  environment:
    name: production
    url: https://example.com
  script:
    - ./deploy.sh production
  rules:
    - if: $CI_COMMIT_BRANCH == "main"
      when: manual

デプロイメント戦略

ブルーグリーンデプロイメント

2 つの同一の環境を維持します:

deploy:blue-green:
  script:
    - ./deploy-to-inactive.sh
    - ./run-smoke-tests.sh
    - ./switch-traffic.sh
    - ./cleanup-old-environment.sh

メリット:

  • ダウンタイムなしデプロイメント
  • トラフィックを戻すことで簡単にロールバック可能
  • 本番環境に近い環境で完全なテストを実施

カナリアデプロイメント

ユーザーのサブセットへ段階的にロールアウトします:

deploy:canary:
  script:
    - ./deploy-canary.sh --percentage=5
    - ./monitor-metrics.sh --duration=30m
    - ./deploy-canary.sh --percentage=25
    - ./monitor-metrics.sh --duration=30m
    - ./deploy-canary.sh --percentage=100

カナリアステージ:

  1. トラフィックの 5% にデプロイ
  2. エラー率とレイテンシーを監視
  3. メトリクスが健全であれば段階的に増加
  4. データに基づいてフルロールアウトまたはロールバック

ローリングデプロイメント

インスタンスを段階的に更新します:

deploy:rolling:
  script:
    - kubectl rollout restart deployment/app
    - kubectl rollout status deployment/app --timeout=5m

設定:

  • maxUnavailablemaxSurge を設定
  • ヘルスチェックがロールアウトペースを決定
  • 失敗時に自動ロールバック

フィーチャーフラグ

デプロイメントとリリースを分離します:

// フィーチャーフラグの実装
if (featureFlags.isEnabled('new-checkout')) {
  return <NewCheckout />;
} else {
  return <LegacyCheckout />;
}

メリット:

  • 無効な機能を本番環境にデプロイ
  • 段階的な機能ロールアウト
  • A/B テスト機能
  • デプロイメントなしで迅速に機能を無効化

環境管理

環境階層

Development -> Testing -> Staging -> Production

各環境は以下の条件を満たすべき:

  • 本番環境に可能な限り近い構成
  • 分離されたデータとシークレット
  • インフラストラクチャをコードとして実装

環境変数

variables:
  # グローバル変数
  APP_NAME: my-app

# 環境別設定
.staging:
  variables:
    ENV: staging
    API_URL: https://api.staging.example.com

.production:
  variables:
    ENV: production
    API_URL: https://api.example.com

ベストプラクティス:

  • シークレットをハードコーディングしない
  • シークレット管理(Vault、AWS Secrets Manager)を使用
  • 設定とコードを分離
  • すべての必須変数をドキュメント化

インフラストラクチャをコードとして実装

# Terraform の例
resource "aws_ecs_service" "app" {
  name            = var.app_name
  cluster         = aws_ecs_cluster.main.id
  task_definition = aws_ecs_task_definition.app.arn
  desired_count   = var.environment == "production" ? 3 : 1

  deployment_configuration {
    maximum_percent         = 200
    minimum_healthy_percent = 100
  }
}

テスト戦略

テストピラミッド

        /\
       /  \      E2E テスト(少数)
      /----\
     /      \    統合テスト(一部)
    /--------\
   /          \  ユニットテスト(多数)
  --------------

テストの並列化

test:
  parallel: 4
  script:
    - npm test -- --shard=$CI_NODE_INDEX/$CI_NODE_TOTAL

テストデータ管理

  • 一貫性のあるテストデータにフィクスチャを使用
  • テスト間でデータベース状態をリセット
  • 動的テストデータにはファクトリーを使用
  • テストで本番データを使用しない

不安定なテストの処理

test:
  retry:
    max: 2
    when:
      - runner_system_failure
      - stuck_or_timeout_failure

戦略:

  • 不安定なテストを隔離
  • 既知の問題にリトライロジックを追加
  • ルート原因を調査して修正
  • 不安定なテストのメトリクスを追跡

監視と可観測性

パイプラインメトリクス

以下のメトリクスを追跡します:

  • リードタイム:コミットから本番環境までの期間
  • デプロイ頻度:デプロイの頻度
  • 変更失敗率:デプロイメント失敗の割合
  • 平均復旧時間:失敗から修正までの時間

ヘルスチェック

deploy:
  script:
    - ./deploy.sh
    - ./wait-for-healthy.sh --timeout=300
    - ./run-smoke-tests.sh

実装内容:

  • レディネスプローブ
  • ライブネスプローブ
  • スタートアッププローブ
  • デプロイ後のスモークテスト

アラート

notify:failure:
  stage: notify
  script:
    - ./send-alert.sh --channel=deployments --status=failed
  when: on_failure

notify:success:
  stage: notify
  script:
    - ./send-notification.sh --channel=deployments --status=success
  when: on_success

CI/CD のセキュリティ

シークレット管理

# CI/CD シークレット変数を使用
deploy:
  script:
    - echo "$DEPLOY_KEY" | base64 -d > deploy_key
    - chmod 600 deploy_key
    - ./deploy.sh
  after_script:
    - rm -f deploy_key

ベストプラクティス:

  • シークレットを定期的にローテーション
  • 短命の認証情報を使用
  • シークレットアクセスを監査
  • シークレットをログに出力しない

パイプラインセキュリティ

# 本番環境デプロイの実行権限を制限
deploy:production:
  rules:
    - if: $CI_COMMIT_BRANCH == "main"
      when: manual
      allow_failure: false
  environment:
    name: production
    deployment_tier: production

制御:

  • ブランチ保護ルール
  • 必須の承認
  • 監査ログ
  • 署名されたコミット

依存関係セキュリティ

dependency_check:
  script:
    - npm audit --audit-level=high
    - ./check-licenses.sh
  allow_failure: false

最適化テクニック

キャッシング

cache:
  key:
    files:
      - package-lock.json
  paths:
    - node_modules/
  policy: pull-push

キャッシュ戦略:

  • 実行間で依存関係をキャッシュ
  • コンテンツベースのキャッシュキーを使用
  • ブランチごとに個別のキャッシュ
  • 古いキャッシュを定期的に削除

並列化

stages:
  - build
  - test
  - deploy

# テストを並列実行
test:unit:
  stage: test
  script: npm run test:unit

test:integration:
  stage: test
  script: npm run test:integration

test:e2e:
  stage: test
  script: npm run test:e2e

アーティファクト管理

build:
  artifacts:
    paths:
      - dist/
    expire_in: 1 week
    when: on_success

ベストプラクティス:

  • 適切な有効期限を設定
  • 必要なアーティファクトのみを保存
  • アーティファクト圧縮を使用
  • 古いアーティファクトをクリーンアップ

ロールバック戦略

自動ロールバック

deploy:
  script:
    - ./deploy.sh
    - ./health-check.sh || ./rollback.sh

手動ロールバック

rollback:
  stage: deploy
  when: manual
  script:
    - ./get-previous-version.sh
    - ./deploy.sh --version=$PREVIOUS_VERSION

データベースロールバック

  • 可逆的なマイグレーションを使用
  • ロールバック手順をテスト
  • データ互換性を検討
  • バックアップ復元プロセスを用意

ドキュメント

パイプラインドキュメント

リポジトリに以下をドキュメント化します:

  • パイプラインステージとその目的
  • 必須の環境変数
  • デプロイメント手順
  • トラブルシューティングガイド
  • ロールバック手順

ランブック

以下のランブックを作成します:

  • デプロイメント失敗時の対応
  • ロールバック手順
  • 環境セットアップ
  • インシデント対応

継続的改善

追跡するメトリクス

  • ビルド成功率
  • 平均ビルド時間
  • テストカバレッジ推移
  • デプロイ頻度
  • インシデント頻度

定期的なレビュー

  • 週次パイプラインパフォーマンスレビュー
  • 月次セキュリティ評価
  • 四半期ごとのプロセス改善
  • 年次ツール評価

ライセンス: Apache-2.0(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
mindrally
リポジトリ
mindrally/skills
ライセンス
Apache-2.0
最終更新
不明

Source: https://github.com/mindrally/skills / ライセンス: Apache-2.0

関連スキル

汎用DevOps・インフラ⭐ リポ 502

superpowers-streamer-cli

SuperPowers デスクトップストリーマーの npm パッケージをインストール、ログイン、実行、トラブルシューティングできます。ユーザーが npm から `superpowers-ai` をセットアップしたい場合、メールまたは電話でサインインもしくはアカウント作成を行いたい場合、ストリーマーを起動したい場合、表示されたコントロールリンクを開きたい場合、後で停止したい場合、またはソースコードへのアクセスなしに npm やランタイムの一般的な問題から復旧したい場合に使用します。

by rohanarun
汎用DevOps・インフラ⭐ リポ 493

catc-client-ops

Catalyst Centerのクライアント操作・監視機能 - 有線・無線クライアントのリスト表示・フィルタリング、MACアドレスによる詳細なクライアント検索、クライアント数分析、時間軸での分析、SSIDおよび周波数帯によるフィルタリング、無線トラブルシューティング機能を提供します。MACアドレスやIPアドレスでのクライアント検索、サイト別やSSID別のクライアント数集計、無線周波数帯の分布分析、Wi-Fi信号の問題調査が必要な場合に活用できます。

by automateyournetwork
汎用DevOps・インフラ⭐ リポ 39,967

ci-cd-and-automation

CI/CDパイプラインの設定を自動化します。ビルドおよびデプロイメントパイプラインの構築または変更時に使用できます。品質ゲートの自動化、CI内のテストランナー設定、またはデプロイメント戦略の確立が必要な場合に活用します。

by addyosmani
汎用DevOps・インフラ⭐ リポ 39,967

shipping-and-launch

本番環境へのリリース準備を行います。本番環境へのデプロイ準備が必要な場合、リリース前チェックリストが必要な場合、監視機能の設定を行う場合、段階的なロールアウトを計画する場合、またはロールバック戦略が必要な場合に使用します。

by addyosmani
OpenAIDevOps・インフラ⭐ リポ 38,974

linear-release-setup

Linear Releaseに向けたCI/CD設定を生成します。リリース追跡の設定、LinearのCIパイプライン構築、またはLinearリリースとのデプロイメント連携を実施する際に利用できます。GitHub Actions、GitLab CI、CircleCIなど複数のプラットフォームに対応しています。

by novuhq
Anthropic ClaudeDevOps・インフラ⭐ リポ 2,159

tracking-application-response-times

API エンドポイント、データベースクエリ、サービスコール全体にわたるアプリケーションのレスポンスタイムを追跡・最適化できます。パフォーマンス監視やボトルネック特定の際に活用してください。「レスポンスタイムを追跡する」「API パフォーマンスを監視する」「遅延を分析する」といった表現で呼び出せます。

by jeremylongshore
本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: mindrally · mindrally/skills · ライセンス: Apache-2.0