- الرئيسية
- Docs Control
- مرجع التكوين
مرجع التكوين
يقود ملف التكوين المركزي جميع سلوكيات الإنفاذ والمزامنة والإرسال. ويوجد في .github/config/repo-settings.json في docs-control وتجلبه المستودعات الفرعية في وقت تشغيل سير العمل.
{ "_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"} ] }}مرجع الحقول
Section titled “مرجع الحقول”repository
Section titled “repository”إعدادات مستودع GitHub القياسية المطبقة عبر PATCH /repos/{owner}/{repo}. ينطبق كل مفتاح مباشرة على حقل GitHub API. يقارن سير عمل الإنفاذ كل مفتاح بالقيمة الحالية للمستودع ويقوم بتعديل المفاتيح التي انحرفت فقط.
إعدادات بارزة:
delete_branch_on_merge: true— ينظف تلقائيًا فروع PR المدمجةallow_update_branch: true— يمكن زر “Update branch” في طلبات السحب (PRs)homepage: ""— يُحسب تلقائيًا في وقت التشغيل كـhttps://f5-sales-demo.github.io/{repo}/
actions_permissions
Section titled “actions_permissions”يتحكم في أذونات سير عمل GitHub Actions للمستودع:
default_workflow_permissions: "write"— تحصل سيور العمل على وصول للقراءة/الكتابة إلى المستودع بشكل افتراضيcan_approve_pull_request_reviews: true— يسمح لسيور العمل بالموافقة على طلبات السحب (PRs)
عناصر تحكم أتمتة Antigravity
Section titled “عناصر تحكم أتمتة Antigravity”يغير سير عمل Configure Antigravity Controls متغيرات المؤسسة التي تتحكم في
مراجع ومترجم Antigravity. كل مرحلة آمنة للإعادة:
- يحدد
disabledكلا المتغيرين علىfalseمع رؤيةall. - يحدد
pilotكلا المتغيرين علىtrueمع رؤيةselectedمقتصرة على docs-control. - يحدد
allكلا المتغيرين علىtrueمع رؤيةallفقط بعد التحقق من إيصال المراجعة exact-head للطيار المحدد ونشر الترجمة في 12 لغة.
يستخدم سير العمل رمز الوصول الشخصي للحوكمة الحالي، وإعادات المحاولة المحدودة لـ GitHub API، و نبضات التقدم المهيكلة. لا يتطلب تطبيق GitHub App أو ميزات GitHub Enterprise.
branch_protection
Section titled “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
Section titled “contexts مقابل self_contexts”تستخدم فحوصات سير العمل القابلة لإعادة الاستخدام في المستودعات الفرعية <caller_job_key> / <reusable_job_name>، بينما يبلغ docs-control عن أسماء الوظائف المجردة الخاصة به. يُعد بواب القضايا المرتبطة استثناءً: ينشر سير عمله المجدول حالة الإيداع Check linked issues مباشرة في كل مستودع، لذا يجب أن يستخدم كل من contexts و self_contexts هذا الاسم بالضبط.
يخزن الحقل self_contexts أسماء الفحوصات التي تنطبق على docs-control نفسه. أثناء الإنفاذ، يكتشف سير العمل ما إذا كان يعمل على المستودع المصدر ويستبدل self_contexts بـ contexts قبل تطبيق حماية الفروع. يتم دائمًا تجريد الحقل self_contexts قبل إرسال الحمولة إلى GitHub API.
Shell Unit Tests هو بواب اختبار المستودع الموحد. يبلغ سير العمل القابل لإعادة الاستخدام عنه دائمًا: تنفذ المستودعات المستهلكة كل ملف tests/test-*.sh، بينما يبلغ المستودع الذي لا يحتوي على فحوصات مطابقة عن النجاح مع رسالة صريحة تذكر عدم وجود فحوصات. هذا يجعل اختبارات شل المستودع مطلوبة افتراضيًا بدلاً من الاعتماد على قوائم الاشتراك حسب المستودع.
ملفات تعريف اختبار شل المستهلك
Section titled “ملفات تعريف اختبار شل المستهلك”يفترض الافتراضي أن كل برنامج نصي 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. يكون الشرط على مستوى الوظيفة آمنًا لأن الوظيفة المتجاوزة لا تزال تبلغ عن فحص ناجح.
topics
Section titled “topics”مصفوفة من مواضيع GitHub لتطبيقها على المستودع. فارغة حاليًا — لا يتم إنفاذ المواضيع.
تكوين GitHub Pages:
enabled: true— يضمن تمكين Pages في كل مستودع مسجلbuild_type: "workflow"— يستخدم GitHub Actions لبناء Pages (وليس البناء التقليدي المعتمد على الفروع)
managed_files
Section titled “managed_files”يحدد بيان مزامنة الملفات:
source_repo— المستودع الذي يحتفظ بالنسخ المعتمدة من الملفات المدارة (f5-sales-demo/docs-control)files— مصفوفة من كائنات{src, dest}تعين مسارات المصدر في docs-control إلى مسارات الوجهة في المستودعات الفرعية
يتنقل سير عمل مزامنة الملفات عبر هذه المصفوفة لاكتشاف الانحراف وتصحيحه. الملفات غير المدرجة هنا (مثل dependabot.yml و README.md) يتم إنشاؤها ديناميكيًا بدلاً من مزامنتها من مصادر ثابتة.