コンテンツにスキップ

設定リファレンス

中央設定ファイルは、すべての強制、同期、およびディスパッチ動作を制御します。このファイルは docs-control の .github/config/repo-settings.json に配置され、ワークフロー実行時にダウンストリームリポジトリによって取得されます。

.github/config/repo-settings.json
{
"_comment": "Central repo-settings config — enforced by enforce-repo-settings.yml",
"repository": {
"private": false,
"has_issues": true,
"has_projects": false,
"has_wiki": false,
"is_template": false,
"allow_squash_merge": true,
"allow_merge_commit": true,
"allow_rebase_merge": true,
"allow_auto_merge": false,
"delete_branch_on_merge": true,
"web_commit_signoff_required": false,
"squash_merge_commit_title": "COMMIT_OR_PR_TITLE",
"squash_merge_commit_message": "COMMIT_MESSAGES",
"merge_commit_title": "MERGE_MESSAGE",
"merge_commit_message": "PR_TITLE",
"allow_update_branch": true,
"homepage": ""
},
"actions_permissions": {
"default_workflow_permissions": "write",
"can_approve_pull_request_reviews": true
},
"branch_protection": [
{
"branch": "main",
"enforce_admins": true,
"required_status_checks": {
"strict": true,
"contexts": [
"Check linked issues",
"lint / Lint Code Base",
"lint / Shell Unit Tests"
],
"self_contexts": ["Check linked issues", "Lint Code Base", "Shell Unit Tests"]
},
"required_pull_request_reviews": {
"dismiss_stale_reviews": false,
"require_code_owner_reviews": false,
"required_approving_review_count": 0,
"require_last_push_approval": false,
"dismissal_restrictions": {
"users": [],
"teams": []
},
"bypass_pull_request_allowances": {
"users": [],
"teams": [],
"apps": []
}
},
"restrictions": null,
"required_linear_history": false,
"allow_force_pushes": false,
"allow_deletions": false,
"block_creations": false,
"required_conversation_resolution": false,
"lock_branch": false,
"allow_fork_syncing": false
}
],
"topics": [],
"pages": {
"enabled": true,
"build_type": "workflow"
},
"managed_files": {
"source_repo": "f5-sales-demo/docs-control",
"files": [
{"src": "workflows/github-pages-deploy.yml", "dest": ".github/workflows/github-pages-deploy.yml"},
{"src": "workflows/enforce-repo-settings.yml", "dest": ".github/workflows/enforce-repo-settings.yml"},
{"src": "workflows/require-linked-issue.yml", "dest": ".github/workflows/require-linked-issue.yml"},
{"src": "workflows/antigravity-review.yml", "dest": ".github/workflows/antigravity-review.yml"},
{"src": "workflows/antigravity-translate.yml", "dest": ".github/workflows/antigravity-translate.yml"},
{"src": ".github/PULL_REQUEST_TEMPLATE.md", "dest": ".github/PULL_REQUEST_TEMPLATE.md"},
{"src": ".github/ISSUE_TEMPLATE/bug_report.md", "dest": ".github/ISSUE_TEMPLATE/bug_report.md"},
{"src": ".github/ISSUE_TEMPLATE/feature_request.md", "dest": ".github/ISSUE_TEMPLATE/feature_request.md"},
{"src": ".github/ISSUE_TEMPLATE/documentation.md", "dest": ".github/ISSUE_TEMPLATE/documentation.md"},
{"src": ".github/ISSUE_TEMPLATE/config.yml", "dest": ".github/ISSUE_TEMPLATE/config.yml"},
{"src": "CONTRIBUTING.md", "dest": "CONTRIBUTING.md"},
{"src": "CLAUDE.md", "dest": "CLAUDE.md"},
{"src": "AGENTS.md", "dest": "AGENTS.md"},
{"src": ".agents/skills/demo-components/SKILL.md", "dest": ".agents/skills/demo-components/SKILL.md"},
{"src": ".agents/skills/i18n-translate/SKILL.md", "dest": ".agents/skills/i18n-translate/SKILL.md"},
{"src": ".editorconfig", "dest": ".editorconfig"},
{"src": ".gitignore", "dest": ".gitignore"},
{"src": "LICENSE", "dest": "LICENSE"},
{"src": ".pre-commit-config.yaml", "dest": ".pre-commit-config.yaml"}
]
}
}

PATCH /repos/{owner}/{repo} 経由で適用される標準的な GitHub リポジトリ設定。各キーは GitHub API フィールドに直接マッピングされます。強制ワークフロー は各キーをリポジトリの現在の値と比較し、乖離しているキーのみをパッチ適用します。

主な設定:

  • delete_branch_on_merge: true — マージされた PR ブランチを自動的にクリーンアップします
  • allow_update_branch: true — PR 上の “Update branch” ボタンを有効にします
  • homepage: "" — 実行時に https://f5-sales-demo.github.io/{repo}/ として自動計算されます

リポジトリの GitHub Actions ワークフロー権限を制御します:

  • default_workflow_permissions: "write" — ワークフローはデフォルトでリポジトリへの読み取り/書き込みアクセス権を取得します
  • can_approve_pull_request_reviews: true — ワークフローによる PR の承認を許可します

Configure Antigravity Controls ワークフローは、Antigravity レビュアーおよびトランスレーターを 制御する組織変数を変更します。各フェーズは安全に再実行できます:

  • disabled は、両方の変数を false に設定し、all 可視性を指定します。
  • pilot は、両方の変数を true に設定し、selected 可視性を docs-control に限定します。
  • all は、選択されたパイロットの exact-head レビュー受領書と 12 ロケールの翻訳公開を検証した後にのみ、両方の変数を true に設定し、all 可視性を指定します。

このワークフローは、既存のガバナンス個人アクセス トークン、制限付き GitHub API 再試行、および 構造化された進行状況ハートビートを使用します。GitHub アプリや GitHub Enterprise 機能は必要ありません。

ブランチ保護ルールの配列。各エントリは branch 名と目的の保護設定を指定します。現在、main のみが保護されています。

主要フィールド:

  • enforce_admins: true — 保護ルールはリポジトリ管理者にも適用されます
  • required_status_checks.strict: true — ブランチはマージ前に最新の状態である必要があります
  • required_status_checks.contexts — ダウンストリームリポジトリが合格する必要があるチェック名(例: Check linked issues および lint / Shell Unit Tests
  • required_status_checks.self_contexts — docs-control 自体が合格する必要があるチェック名(例: Check linked issues および Shell Unit Tests
  • required_pull_request_reviews — すべての変更がプルリクエスト経由で入力されることを要求しますが、 required_approving_review_count: 0 により手動承認はオプションのままとなり、却下およびバイパスリストは 空のままです
  • restrictions: null — ブランチ保護以外のプッシュ制限はありません

ダウンストリームリポジトリの再利用可能なワークフローチェックでは <caller_job_key> / <reusable_job_name> が使用され、docs-control はベアジョブ名を報告します。リンクされた Issue のゲートは例外で、そのスケジュールされたワークフローはコミットステータス Check linked issues をすべてのリポジトリに直接発行するため、contextsself_contexts の両方でその正確な名前を使用する必要があります。

self_contexts フィールドは、docs-control 自体に適用されるチェック名を格納します。強制 の際、ワークフローはソースリポジトリで実行されているかどうかを検出し、ブランチ保護を適用する前に self_contextscontexts に置き換えます。self_contexts フィールドは、ペイロードを GitHub API に送信する前に常に削除されます。

Shell Unit Tests は、統一されたリポジトリテストゲートです。再利用可能なワークフローは常にこれを報告します。コンシューマーリポジトリはすべての tests/test-*.sh ファイルを実行し、一致するテストがないリポジトリは明示的なテストなしメッセージで成功を報告します。これにより、リポジトリごとのオプトインリストに頼るのではなく、リポジトリのシェルテストがデフォルトで必須になります。

コンシューマーシェルテストプロファイル

Section titled “コンシューマーシェルテストプロファイル”

デフォルトでは、ルートレベルの各 tests/test-*.sh スクリプトが、プロビジョニングされていない GitHub ホストランナー上で密閉(hermetic)状態であると想定されます。そのグロブの下にコンテナまたはサービスの統合テストも保存するリポジトリには、repo-settings.json 内に consumer_shell_tests.profiles エントリが必要です。

各プロファイルは、一致する完全なインベントリを分類します:

  • unit エントリには、テストの pathargs 配列が含まれます。ランナーはシェル評価を行わずに、各引数を文字通り渡します。
  • environment エントリには、テストの path と、ベアランナーのユニットゲートがそれを実行できない理由を説明する空でない reason が含まれます。

再利用可能なワークフローは、同じ docs-control の main リビジョンからセレクターと設定を取得し、そのリビジョンを記録して、実行前にインベントリを検証します。設定の欠落、安全でないパスまたは引数、重複するパス、未分類または欠落しているテストは、必須のコンテキストを失敗させます。これにより、プロファイルは無視リストではなく、監査された分類契約になります。プロファイルのないリポジトリは、広範なデフォルトを維持します。

xcsh のオーバーライドは、そのリポジトリが再利用可能な Super-Linter ワークフローを呼び出さないため、両方の Super-Linter コンテキストを除外します。ネイティブの checkpii-guard、および test コンテキストは引き続き必須です。除外が追加される前に、実機検証によって除外が必要であることを証明する必要があります。

paths または paths-ignore フィルターを持つワークフローからのコンテキストを必須にしないでください。ワークフローが開始されない場合、GitHub はそのコンテキストを保留状態のままにします。広範なセキュリティツールは、フィルタリングされていないプルリクエストワークフロー、またはスケジュールされたフルツリー監査で実行する必要があります。管理されたワークフローセキュリティ監査では、zizmor に後者のモデルを使用します。スキップされたジョブは引き続き成功したチェックを報告するため、ジョブレベルの条件は安全です。

リポジトリに適用する GitHub トピックの配列。現在は空です — トピックは強制されません。

GitHub Pages 設定:

  • enabled: true — 登録されたすべてのリポジトリで Pages が有効になっていることを確認します
  • build_type: "workflow" — Pages のビルドに GitHub Actions を使用します(従来のブランチベースのビルドではありません)

ファイル同期マニフェストを定義します:

  • source_repo — 管理対象ファイルの正規バージョンを保持するリポジトリ (f5-sales-demo/docs-control)
  • files — docs-control 内のソースパスをダウンストリームリポジトリ内の送信先パスにマッピングする {src, dest} オブジェクトの配列

ファイル同期ワークフロー はこの配列を反復処理してドリフトを検出および修正します。ここにリストされていないファイル(dependabot.ymlREADME.md など)は、静的ソースから同期されるのではなく、動的に生成されます。