- ホーム
- ドキュメントビルダー
- CI/CD とガバナンス
CI/CD とガバナンス
このリポジトリでは、4つの GitHub Actions ワークフローと集中型テンプレートシステムをガバナンスに使用しています。
ワークフロー
Section titled “ワークフロー”| ワークフロー | ファイル | トリガー | 目的 |
|---|---|---|---|
| GitHub Pages デプロイ | github-pages-deploy.yml | main への Push(docs/**)、手動ディスパッチ | ドキュメントサイトをビルドし GitHub Pages にデプロイする |
| Docker イメージのビルドと公開 | build-image.yml | main への Push(docker/**、package*.json)、日次 cron、repository_dispatch | Docker イメージをビルドし、GHCR にプッシュし、下流リポジトリへリビルドをディスパッチする |
| リンクされた Issue の必須化 | require-linked-issue.yml | プルリクエストイベント | GitHub Issue を参照していない PR をブロックする |
| リポジトリ設定の適用 | enforce-repo-settings.yml | 6時間ごと、設定ファイルへの Push、手動ディスパッチ | テンプレートから標準化されたリポジトリ設定を適用する |
GitHub Pages デプロイ
Section titled “GitHub Pages デプロイ”on: push: branches: [main] paths: - 'docs/**' workflow_dispatch:テンプレートリポジトリ内の再利用可能なワークフローに委譲します:
jobs: docs: uses: f5-sales-demo/docs-control/.github/workflows/github-pages-deploy.yml@mainパーミッション: contents: read、packages: read、pages: write、id-token: write。古いデプロイを避けるため、cancel-in-progress: true を設定した pages 同時実行グループを使用します。
docs/ 配下のファイルが変更された場合のみ Push でトリガーされます。workflow_dispatch による手動トリガーも可能で、これは build-image.yml のディスパッチジョブが下流のリビルドをトリガーする方法でもあります。
Docker イメージのビルドと公開
Section titled “Docker イメージのビルドと公開”on: push: branches: [main] paths: - 'docker/**' - 'package.json' - 'package-lock.json' schedule: - cron: '0 6 * * *' repository_dispatch: types: [rebuild-image]ステップ:
- コードのチェックアウト
docker/login-actionを使用してghcr.ioにログインdocker/build-push-actionでコンテキスト.とファイルdocker/Dockerfileを使用してビルドおよびプッシュ- タグ:
ghcr.io/<owner>/<repo>:latestとghcr.io/<owner>/<repo>:<sha>
ビルドが成功した後、dispatch ジョブはテンプレートリポジトリの downstream-repos.json 設定にリストされたすべての下流リポジトリに対して workflow_dispatch 経由で github-pages-deploy.yml をトリガーします。これにより、すべてのコンテンツリポジトリが更新されたビルダーイメージでドキュメントをリビルドすることが保証されます。
日次 cron により、コード変更がなくてもイメージが最新の状態に保たれます(依存関係の更新を取り込みます)。repository_dispatch イベントにより、外部システムからリビルドをトリガーできます。
docker/ ファイルまたは package*.json が変更された場合のみ Push でトリガーされます。ドキュメントのみの変更ではイメージのリビルドはトリガーされません。
リンクされた Issue の必須化
Section titled “リンクされた Issue の必須化”on: pull_request_target: types: [opened, edited, reopened, synchronize]nearform-actions/github-action-check-linked-issues@v1 を使用して、すべての PR が GitHub Issue を参照していること(例: 説明に Closes #42 と記載)を強制します。Dependabot の PR は以下の設定で除外されます:
exclude-branches: "dependabot/**"チェックに失敗した場合、コントリビューターに期待されるフォーマットを示すカスタムメッセージが表示されます。コントリビューターワークフローの詳細については CONTRIBUTING.md を参照してください。
リポジトリ設定の適用
Section titled “リポジトリ設定の適用”on: schedule: - cron: '0 */6 * * *' push: branches: [main] paths: - '.github/config/repo-settings.json' workflow_dispatch:テンプレートリポジトリ内の再利用可能なワークフローに委譲します:
jobs: enforce: uses: f5-sales-demo/docs-control/.github/workflows/enforce-repo-settings.yml@main secrets: repo-admin-token: ${{ secrets.REPO_ADMIN_TOKEN }}6時間ごと、および設定ファイルへの変更時に実行されます。.github/config/repo-settings.json からブランチ保護ルール、マージ設定、その他のリポジトリ設定を適用します。
ガバナンスモデル
Section titled “ガバナンスモデル”集中型テンプレート
Section titled “集中型テンプレート”f5-sales-demo/docs-control リポジトリは以下の唯一の信頼できるソースです:
- 再利用可能なワークフロー定義(ドキュメントデプロイ、リポジトリ設定の適用)
- 組織内のすべてのリポジトリに同期されるマネージドファイル
- 標準設定およびブランチ保護ルール
このビルダーおよびすべてのコンテンツリポジトリは、テンプレートから CI/CD の動作を継承します。
マネージドファイル同期
Section titled “マネージドファイル同期”テンプレートリポジトリは、マネージドファイル(ワークフロー定義や設定ファイルなど)を下流リポジトリにプッシュできます。これにより、手動更新なしですべてのリポジトリの整合性が保たれます。同期はテンプレートリポジトリ内の別ワークフローで実行されます。
ブランチ保護
Section titled “ブランチ保護”リポジトリ設定適用ワークフローは、テンプレートからブランチ保護ルールを適用します。これには以下が含まれます:
- マージ前の必須ステータスチェック
- リンクされた Issue チェックの必須化
- スカッシュマージの優先
- マージ後のヘッドブランチの自動削除
シークレット
Section titled “シークレット”| シークレット | ソース | 目的 |
|---|---|---|
GITHUB_TOKEN | 自動(GitHub) | ほとんどのワークフローでチェックアウト、パッケージ公開、API 呼び出しに使用 |
REPO_ADMIN_TOKEN | 手動(リポジトリシークレット) | リポジトリ設定適用およびディスパッチジョブで、ブランチ保護やリポジトリ設定の変更、下流ワークフローのトリガーに必要(admin スコープが必要) |