इसे छोड़कर कंटेंट पर जाएं

कॉन्फ़िगरेशन संदर्भ

केंद्रीय कॉन्फ़िगरेशन फ़ाइल सभी प्रवर्तन, सिंक और प्रेषण व्यवहार को संचालित करती है। यह 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 — PRs पर “Update branch” बटन को सक्षम करता है
  • homepage: "" — रनटाइम पर https://f5-sales-demo.github.io/{repo}/ के रूप में स्वचालित रूप से परिकलित किया जाता है

रिपॉजिटरी के लिए GitHub Actions वर्कफ़्लो अनुमतियों को नियंत्रित करता है:

  • default_workflow_permissions: "write" — वर्कफ़्लो को डिफ़ॉल्ट रूप से रिपॉजिटरी में पढ़ने/लिखने की पहुँच मिलती है
  • can_approve_pull_request_reviews: true — वर्कफ़्लो को PRs को स्वीकृत करने की अनुमति देता है

Antigravity स्वचालन नियंत्रण

Section titled “Antigravity स्वचालन नियंत्रण”

Configure Antigravity Controls वर्कफ़्लो उन संगठन चर को बदलता है जो Antigravity समीक्षक और अनुवादक को नियंत्रित करते हैं। प्रत्येक चरण को पुनः चलाना सुरक्षित है:

  • disabled दोनों चर को all दृश्यता के साथ false पर सेट करता है।
  • pilot docs-control तक सीमित selected दृश्यता के साथ दोनों चर को true पर सेट करता है।
  • all चयनित पायलट की सटीक-हेड समीक्षा रसीद और 12-लोकेल अनुवाद प्रकाशन को मान्य करने के बाद ही all दृश्यता के साथ दोनों चर को true पर सेट करता है।

वर्कफ़्लो मौजूदा शासन व्यक्तिगत पहुंच टोकन, सीमित GitHub API पुनः प्रयासों और संरचित प्रगति दिल की धड़कनों का उपयोग करता है। इसके लिए GitHub ऐप या GitHub एंटरप्राइज़ सुविधाओं की आवश्यकता नहीं है।

शाखा सुरक्षा नियमों की एक सरणी। प्रत्येक प्रविष्टि एक 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 — सभी परिवर्तनों को एक Pull Request के माध्यम से प्रवेश करने की आवश्यकता है जबकि required_approving_review_count: 0 मानवीय स्वीकृति को वैकल्पिक रखता है; खारिज करने और बायपास करने की सूचियां खाली रहती हैं
  • restrictions: null — शाखा सुरक्षा से परे कोई पुश प्रतिबंध नहीं है

डाउनस्ट्रीम रिपॉजिटरी में पुन: उपयोग योग्य वर्कफ़्लो जाँच <caller_job_key> / <reusable_job_name> का उपयोग करती है, जबकि docs-control उनके मूल जॉब नामों की रिपोर्ट करता है। लिंक किया गया इश्यू गेट एक अपवाद है: इसका निर्धारित वर्कफ़्लो प्रत्येक रिपॉजिटरी में सीधे कमिट स्थिति Check linked issues प्रकाशित करता है, इसलिए contexts और self_contexts दोनों को उसी सटीक नाम का उपयोग करना चाहिए।

self_contexts फ़ील्ड उन जाँच नामों को संग्रहीत करता है जो स्वयं docs-control पर लागू होते हैं। प्रवर्तन के दौरान, वर्कफ़्लो यह पता लगाता है कि यह स्रोत रिपॉजिटरी पर चल रहा है या नहीं और शाखा सुरक्षा लागू करने से पहले self_contexts को contexts में बदल देता है। GitHub API को पेलोड भेजने से पहले self_contexts फ़ील्ड को हमेशा हटा दिया जाता है।

Shell Unit Tests एक समान रिपॉजिटरी-परीक्षण गेट है। पुन: उपयोग योग्य वर्कफ़्लो हमेशा इसकी रिपोर्ट करता है: उपभोक्ता रिपॉजिटरी प्रत्येक tests/test-*.sh फ़ाइल चलाती हैं, जबकि बिना किसी मेल खाने वाले परीक्षणों वाली रिपॉजिटरी एक स्पष्ट नो-टेस्ट संदेश के साथ सफलता की रिपोर्ट करती है। यह प्रति-रिपॉजिटरी ऑप्ट-इन सूचियों पर भरोसा करने के बजाय डिफ़ॉल्ट रूप से रिपॉजिटरी शेल परीक्षणों को आवश्यक बनाता है।

उपभोक्ता शेल-परीक्षण प्रोफ़ाइल

Section titled “उपभोक्ता शेल-परीक्षण प्रोफ़ाइल”

डिफ़ॉल्ट यह मानता है कि प्रत्येक रूट-स्तरीय tests/test-*.sh स्क्रिप्ट अप्रॉविज़न किए गए GitHub-हॉस्टेड रनर पर हर्मेटिक है। एक रिपॉजिटरी जो उस ग्लोब के तहत कंटेनर या सेवा एकीकरण परीक्षण भी संग्रहीत करती है, उसे repo-settings.json में एक consumer_shell_tests.profiles प्रविष्टि की आवश्यकता होती है।

प्रत्येक प्रोफ़ाइल संपूर्ण मेल खाने वाली सूची को वर्गीकृत करती है:

  • unit प्रविष्टियों में एक परीक्षण path और एक args सरणी शामिल होती है। रनर शेल मूल्यांकन के बिना प्रत्येक तर्क को शब्दशः पास करता है।
  • environment प्रविष्टियों में एक परीक्षण path और एक गैर-खाली reason शामिल होता है जो बताता है कि बेयर-रनर यूनिट गेट इसे क्यों निष्पादित नहीं कर सकता।

पुन: उपयोग योग्य वर्कफ़्लो उसी docs-control main संशोधन से चयनकर्ता और कॉन्फ़िगरेशन प्राप्त करता है, उस संशोधन को लॉग करता है, और कुछ भी चलाने से पहले सूची को मान्य करता है। गुम कॉन्फ़िगरेशन, असुरक्षित पथ या तर्क, डुप्लिकेट पथ, और अवर्गीकृत या गुम परीक्षण आवश्यक संदर्भ को विफल कर देते हैं। यह एक प्रोफ़ाइल को अनदेखा सूची के बजाय एक लेखापरीक्षित वर्गीकरण अनुबंध बनाता है। बिना प्रोफ़ाइल वाली रिपॉजिटरी व्यापक डिफ़ॉल्ट बनाए रखती हैं।

xcsh ओवरराइड दोनों Super-Linter संदर्भों को बाहर करता है क्योंकि वह रिपॉजिटरी पुन: उपयोग योग्य Super-Linter वर्कफ़्लो को कॉल नहीं करती है; इसके मूल check, pii-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{src, dest} वस्तुओं की एक सरणी जो docs-control में स्रोत पथों को डाउनस्ट्रीम रिपॉजिटरी में गंतव्य पथों से मैप करती है

फ़ाइल सिंक वर्कफ़्लो विचलन का पता लगाने और उसे सही करने के लिए इस सरणी को दोहराता है। यहाँ सूचीबद्ध नहीं की गई फ़ाइलें (जैसे dependabot.yml और README.md) स्थिर स्रोतों से सिंक होने के बजाय गतिशील रूप से उत्पन्न होती हैं।