تخطَّ إلى المحتوى

مرجع التكوين

يقود ملف التكوين المركزي جميع سلوكيات الإنفاذ والمزامنة والإرسال. ويوجد في .github/config/repo-settings.json في docs-control وتجلبه المستودعات الفرعية في وقت تشغيل سير العمل.

.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"}
]
}
}

إعدادات مستودع 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}/

يتحكم في أذونات سير عمل 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 وإعدادات الحماية المطلوبة. حاليًا، يتم حماية 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 قبل تطبيق حماية الفروع. يتم دائمًا تجريد الحقل 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. يكون الشرط على مستوى الوظيفة آمنًا لأن الوظيفة المتجاوزة لا تزال تبلغ عن فحص ناجح.

مصفوفة من مواضيع GitHub لتطبيقها على المستودع. فارغة حاليًا — لا يتم إنفاذ المواضيع.

تكوين GitHub Pages:

  • enabled: true — يضمن تمكين Pages في كل مستودع مسجل
  • build_type: "workflow" — يستخدم GitHub Actions لبناء Pages (وليس البناء التقليدي المعتمد على الفروع)

يحدد بيان مزامنة الملفات:

  • source_repo — المستودع الذي يحتفظ بالنسخ المعتمدة من الملفات المدارة (f5-sales-demo/docs-control)
  • files — مصفوفة من كائنات {src, dest} تعين مسارات المصدر في docs-control إلى مسارات الوجهة في المستودعات الفرعية

يتنقل سير عمل مزامنة الملفات عبر هذه المصفوفة لاكتشاف الانحراف وتصحيحه. الملفات غير المدرجة هنا (مثل dependabot.yml و README.md) يتم إنشاؤها ديناميكيًا بدلاً من مزامنتها من مصادر ثابتة.