- หน้าแรก
- Docs Control
- เอกสารอ้างอิงการกำหนดค่า
เอกสารอ้างอิงการกำหนดค่า
ไฟล์การกำหนดค่าส่วนกลางทำหน้าที่ควบคุมพฤติกรรมการบังคับใช้ การซิงค์ และการจัดส่งทั้งหมด ไฟล์นี้อยู่ที่ .github/config/repo-settings.json ใน docs-control และจะถูกดึงโดยคลังเก็บบริวาร (downstream repositories) ในขณะที่เวิร์กโฟลว์ทำงาน
{ "_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"} ] }}อ้างอิงฟิลด์
หัวข้อที่มีชื่อว่า “อ้างอิงฟิลด์”repository
หัวข้อที่มีชื่อว่า “repository”การตั้งค่าคลังเก็บ GitHub มาตรฐานที่นำไปใช้ผ่าน PATCH /repos/{owner}/{repo} แต่ละคีย์จะแมปโดยตรงกับฟิลด์ GitHub API เวิร์กโฟลว์การบังคับใช้ จะเปรียบเทียบแต่ละคีย์กับค่าปัจจุบันของคลังเก็บและจะแก้ไขเฉพาะคีย์ที่มีการเปลี่ยนแปลงเท่านั้น
การตั้งค่าที่สำคัญ:
delete_branch_on_merge: true— ทำความสะอาดแบรนช์ PR ที่รวมแล้วโดยอัตโนมัติallow_update_branch: true— เปิดใช้งานปุ่ม “Update branch” บน PRhomepage: ""— คำนวณโดยอัตโนมัติในขณะทำงานเป็นhttps://f5-sales-demo.github.io/{repo}/
actions_permissions
หัวข้อที่มีชื่อว่า “actions_permissions”ควบคุมสิทธิ์เวิร์กโฟลว์ GitHub Actions สำหรับคลังเก็บ:
default_workflow_permissions: "write"— เวิร์กโฟลว์จะได้รับสิทธิ์อ่าน/เขียนคลังเก็บโดยเริ่มต้นcan_approve_pull_request_reviews: true— อนุญาตให้เวิร์กโฟลว์อนุมัติการรีวิว PR ได้
การควบคุมระบบอัตโนมัติ Antigravity
หัวข้อที่มีชื่อว่า “การควบคุมระบบอัตโนมัติ Antigravity”เวิร์กโฟลว์ Configure Antigravity Controls จะเปลี่ยนตัวแปรองค์กรที่ควบคุม
ผู้รีวิวและผู้แปล Antigravity แต่ละเฟสสามารถรันซ้ำได้อย่างปลอดภัย:
disabledจะตั้งค่าตัวแปรทั้งสองเป็นfalseพร้อมระดับการมองเห็นแบบallpilotจะตั้งค่าตัวแปรทั้งสองเป็นtrueพร้อมระดับการมองเห็นแบบselectedซึ่งจำกัดไว้เฉพาะ docs-controlallจะตั้งค่าตัวแปรทั้งสองเป็นtrueพร้อมระดับการมองเห็นแบบallหลังจากที่ได้ตรวจสอบใบรับรองการรีวิว exact-head ของไพลอตที่เลือก และการเผยแพร่การแปลใน 12 ภาษาแล้วเท่านั้น
เวิร์กโฟลว์นี้ใช้โทเค็นการเข้าถึงส่วนบุคคลสำหรับการกำกับดูแลที่มีอยู่ การพยายามใหม่ของ GitHub API ที่มีการจำกัดขอบเขต และ การส่งสัญญาณความคืบหน้าที่เป็นโครงสร้าง ไม่จำเป็นต้องใช้แอป GitHub หรือฟีเจอร์ GitHub Enterprise
branch_protection
หัวข้อที่มีชื่อว่า “branch_protection”อาร์เรย์ของกฎการปกป้องแบรนช์ แต่ละรายการจะระบุชื่อ 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—ไม่มีข้อจำกัดในการพุชนอกเหนือจากการปกป้องแบรนช์
contexts กับ self_contexts
หัวข้อที่มีชื่อว่า “contexts กับ self_contexts”การตรวจสอบเวิร์กโฟลว์ที่ใช้ซ้ำได้ในคลังเก็บบริวารจะใช้ <caller_job_key> / <reusable_job_name> ในขณะที่ docs-control จะรายงานชื่องานดั้งเดิม ด่านตรวจประเด็นที่เชื่อมโยง (linked-issue gate) เป็นข้อยกเว้น: เวิร์กโฟลว์ตามกำหนดเวลาจะเผยแพร่สถานะคอมมิต Check linked issues โดยตรงในทุกคลังเก็บ ดังนั้นทั้ง contexts และ self_contexts ต้องใช้ชื่อที่ถูกต้องตรงกันนั้น
ฟิลด์ self_contexts จะจัดเก็บชื่อการตรวจสอบที่มีผลกับ docs-control เอง ในระหว่าง การบังคับใช้ เวิร์กโฟลว์จะตรวจจับว่ากำลังทำงานอยู่บนคลังเก็บต้นทางหรือไม่ และจะสลับ self_contexts เข้าไปใน contexts ก่อนที่จะนำการปกป้องแบรนช์ไปใช้ ฟิลด์ self_contexts จะถูกลบออกเสมอก่อนที่จะส่งส่วนข้อมูลไปยัง GitHub API
Shell Unit Tests คือด่านตรวจการทดสอบคลังเก็บแบบเดียวกัน เวิร์กโฟลว์ที่ใช้ซ้ำได้จะรายงานสิ่งนี้เสมอ: คลังเก็บผู้บริโภคจะรันทุกไฟล์ tests/test-*.sh ในขณะที่คลังเก็บที่ไม่มีการทดสอบที่ตรงกันจะรายงานความสำเร็จพร้อมข้อความระบุว่าไม่มีการทดสอบ สิ่งนี้ทำให้การทดสอบเชลล์ของคลังเก็บเป็นสิ่งจำเป็นโดยเริ่มต้น แทนที่จะพึ่งพาการเลือกเข้าร่วมเป็นรายคลังเก็บ
โปรไฟล์การทดสอบเชลล์ของผู้บริโภค
หัวข้อที่มีชื่อว่า “โปรไฟล์การทดสอบเชลล์ของผู้บริโภค”ค่าเริ่มต้นจะสมมติว่าสคริปต์ tests/test-*.sh ทุกตัวในระดับรากมีความเป็นอิสระ (hermetic) บนตัวรันที่โฮสต์โดย GitHub ที่ไม่ได้จัดเตรียมไว้ คลังเก็บที่จัดเก็บการทดสอบการรวมคอนเทนเนอร์หรือบริการภายใต้รูปแบบนั้นด้วย จำเป็นต้องมีรายการ consumer_shell_tests.profiles ใน repo-settings.json
แต่ละโปรไฟล์จะจัดหมวดหมู่รายการที่ตรงกันทั้งหมด:
- รายการ
unitจะมีpathการทดสอบและอาร์เรย์argsตัวรันจะส่งแต่ละอาร์กิวเมนต์ตามตัวอักษรโดยไม่มีการประเมินเชลล์ - รายการ
environmentจะมีpathการทดสอบและreasonที่ไม่ว่างเปล่าเพื่ออธิบายว่าเหตุใดด่านตรวจยูนิตตัวรันดั้งเดิมจึงไม่สามารถประมวลผลได้
เวิร์กโฟลว์ที่ใช้ซ้ำได้จะดึงตัวเลือกและการกำหนดค่าจากเวอร์ชัน main เดียวกันของ docs-control บันทึกเวอร์ชันนั้น และตรวจสอบรายการก่อนที่จะรันสิ่งใดก็ตาม การกำหนดค่าที่หายไป เส้นทางหรืออาร์กิวเมนต์ที่ไม่ปลอดภัย เส้นทางที่ซ้ำกัน และการทดสอบที่ไม่ได้รับการจัดหมวดหมู่หรือหายไป จะทำให้บริบทที่จำเป็นล้มเหลว สิ่งนี้ทำให้โปรไฟล์เป็นสัญญาการจัดหมวดหมู่ที่ได้รับการตรวจสอบแทนที่จะเป็นรายการละเว้น คลังเก็บที่ไม่มีโปรไฟล์จะคงค่าเริ่มต้นที่กว้างไว้
การเขียนทับ xcsh จะยกเว้นบริบท Super-Linter ทั้งสอง เนื่องจากคลังเก็บนั้นไม่ได้เรียกใช้เวิร์กโฟลว์ Super-Linter ที่ใช้ซ้ำได้ บริบทดั้งเดิม check, pii-guard และ test ยังคงเป็นสิ่งจำเป็น การยืนยันสดต้องพิสูจน์ว่าจำเป็นต้องได้รับการยกเว้นก่อนที่จะเพิ่มเข้าไป
อย่ากำหนดบริบทจากเวิร์กโฟลว์ที่มีตัวกรอง paths หรือ paths-ignore GitHub จะปล่อยให้บริบทนั้นค้างอยู่เมื่อเวิร์กโฟลว์ไม่เริ่มต้น เครื่องมือความปลอดภัยในวงกว้างต้องทำงานในเวิร์กโฟลว์คำขอดึงที่ไม่ผ่านการกรอง หรือในการตรวจสอบทรีเต็มรูปแบบตามกำหนดเวลา การตรวจสอบความปลอดภัยเวิร์กโฟลว์ที่จัดการจะใช้รูปแบบหลังสำหรับ zizmor เงื่อนไขระดับงานจะปลอดภัยเนื่องจากงานที่ถูกข้ามยังคงรายงานการตรวจสอบที่สำเร็จ
อาร์เรย์ของหัวข้อ GitHub ที่จะนำไปใช้กับคลังเก็บ ในปัจจุบันว่างเปล่า — ไม่มีการบังคับใช้หัวข้อ
การกำหนดค่า GitHub Pages:
enabled: true— รับประกันว่า Pages เปิดใช้งานอยู่ในทุกคลังเก็บที่ลงทะเบียนbuild_type: "workflow"— ใช้ GitHub Actions สำหรับการบิลด์ Pages (ไม่ใช่การบิลด์ตามแบรนช์แบบเก่า)
managed_files
หัวข้อที่มีชื่อว่า “managed_files”กำหนดไฟล์รายการซิงค์ (file synchronization manifest):
source_repo— คลังเก็บที่มีเวอร์ชันตามรูปแบบมาตรฐานของไฟล์ที่จัดการ (f5-sales-demo/docs-control)files— อาร์เรย์ของออบเจกต์{src, dest}ที่แมปเส้นทางต้นทางใน docs-control ไปยังเส้นทางปลายทางในคลังเก็บบริวาร
เวิร์กโฟลว์การซิงค์ไฟล์ จะวนซ้ำอาร์เรย์นี้เพื่อตรวจจับและแก้ไขการเบี่ยงเบน ไฟล์ที่ไม่ได้รับการระบุไว้ที่นี่ (เช่น dependabot.yml และ README.md) จะถูกสร้างขึ้นแบบไดนามิกแทนที่จะซิงค์จากแหล่งข้อมูลคงที่