ストーリー
テンプレートリポジトリ
テンプレートの種類
| テンプレート | 対象 | 含まれるもの |
|---|---|---|
| TypeScript Webアプリ | フロントエンドチーム | CI/CD設定、Dockerfile、Helm chart、テスト設定 |
| Python APIサーバー | バックエンドチーム | CI/CD設定、Dockerfile、テスト設定、FastAPI scaffold |
| Go マイクロサービス | バックエンドチーム | CI/CD設定、Dockerfile、テスト設定、gRPC scaffold |
| Terraform モジュール | インフラチーム | CI/CD設定、terratest、ドキュメント生成 |
| データパイプライン | データチーム | CI/CD設定、Airflow DAG テスト、品質チェック |
テンプレートの構成例
org/template-typescript-web/
├── .github/
│ ├── workflows/
│ │ └── ci-cd.yml # 共有ワークフロー呼び出し
│ ├── dependabot.yml # 依存更新設定
│ └── CODEOWNERS # コードオーナー
├── src/ # アプリケーションコード
├── tests/ # テスト
├── Dockerfile # 標準Dockerfile
├── helm/ # Helm chart
├── .eslintrc.js # Lint設定
├── tsconfig.json # TypeScript設定
└── README.md # セットアップガイド
テンプレートの同期(Template Sync)
テンプレートの更新を既存リポジトリに自動的に反映する仕組みです。
同期戦略
| 戦略 | 説明 | メリット | デメリット |
|---|---|---|---|
| 手動同期 | チームが手動でテンプレートの変更を取り込む | チームの自由度が高い | 更新が遅れがち |
| 自動PR | テンプレート更新時にPRを自動作成 | 更新を見逃さない | PRが溜まる可能性 |
| 強制同期 | 特定ファイルは常にテンプレートと同期 | セキュリティ設定を確実に反映 | チームのカスタマイズを制限 |
推奨:ハイブリッド同期
# テンプレート同期設定
sync_config:
# 強制同期(チームは変更不可)
force_sync:
- ".github/workflows/security-scan.yml"
- ".github/dependabot.yml"
- "policies/"
# 自動PR(チームがレビューしてマージ)
auto_pr:
- ".github/workflows/ci-cd.yml"
- "Dockerfile"
- "helm/values-*.yaml"
# 同期対象外(チームが完全に管理)
excluded:
- "src/"
- "tests/"
- "README.md"
ポリシーエンジン
組織ポリシーの自動適用
GitHub Organization の設定とOPAを組み合わせて、ポリシーを自動適用します。
GitHub Organization ルールセット
{
"name": "production-protection",
"target": "branch",
"conditions": {
"ref_name": { "include": ["refs/heads/main"] }
},
"rules": [
{
"type": "required_status_checks",
"parameters": {
"required_status_checks": [
{ "context": "security/sast" },
{ "context": "security/sca" },
{ "context": "test/unit" }
]
}
},
{
"type": "pull_request",
"parameters": {
"required_approving_review_count": 2,
"dismiss_stale_reviews_on_push": true,
"require_code_owner_review": true
}
}
]
}
カスタムポリシーチェック
# ポリシーチェックワークフロー
name: Policy Check
on:
workflow_run:
workflows: ["*"]
types: [completed]
jobs:
policy-check:
runs-on: ubuntu-latest
steps:
- name: Check Workflow Compliance
uses: org/policy-checker@v1
with:
policies: |
- name: "security-scan-required"
rule: "workflow must include security-scan job"
- name: "no-self-hosted-runners"
rule: "runs-on must not be self-hosted"
- name: "pin-action-versions"
rule: "all actions must use SHA pinning"
ポリシー違反の検出と是正
| 違反レベル | 検出タイミング | アクション |
|---|---|---|
| Critical | リアルタイム | パイプラインをブロック、Slack通知 |
| Warning | 日次スキャン | PRを自動作成、チームに通知 |
| Info | 週次レポート | ダッシュボードに表示 |
まとめ
| ポイント | 内容 |
|---|---|
| テンプレート | 5種類の言語/用途別テンプレートで即座にプロジェクト開始 |
| テンプレート同期 | 強制同期 + 自動PR + 除外のハイブリッド |
| ポリシーエンジン | GitHub Ruleset + OPA + カスタムチェック |
| 違反対応 | Critical/Warning/Infoの3レベルで段階的に対応 |
チェックリスト
- テンプレートリポジトリの設計を理解した
- テンプレート同期のハイブリッド戦略を理解した
- ポリシーエンジンの実装方法を理解した
- ポリシー違反の検出と是正の仕組みを理解した
次のステップへ
次は「メトリクスとフィードバックループ」です。ガバナンスの効果を測定し、継続的に改善するための仕組みを学びましょう。
推定読了時間: 30分