- الرئيسية
- منشئ المستندات
- التكامل والنشر المستمر والحوكمة
التكامل والنشر المستمر والحوكمة
يستخدم المستودع أربعة سير عمل من GitHub Actions ونظام قوالب مركزي للحوكمة.
سير العمل
Section titled “سير العمل”| سير العمل | الملف | المُحفِّز | الغرض |
|---|---|---|---|
| نشر GitHub Pages | github-pages-deploy.yml | الدفع إلى main (docs/**)، تشغيل يدوي | بناء ونشر موقع التوثيق على GitHub Pages |
| بناء ونشر صورة Docker | build-image.yml | الدفع إلى main (docker/**، package*.json)، مهمة يومية مجدولة، repository_dispatch | بناء صورة Docker، الدفع إلى GHCR، وإرسال إعادة البناء للمستودعات التابعة |
| طلب ربط مشكلة | require-linked-issue.yml | أحداث طلبات السحب | حظر طلبات السحب التي لا تشير إلى مشكلة في GitHub |
| فرض إعدادات المستودع | enforce-repo-settings.yml | كل 6 ساعات، الدفع إلى ملف تكوين الإعدادات، تشغيل يدوي | تطبيق إعدادات المستودع المعيارية من القالب |
نشر GitHub Pages
Section titled “نشر GitHub Pages”on: push: branches: [main] paths: - 'docs/**' workflow_dispatch:يُفوِّض إلى سير عمل قابل لإعادة الاستخدام في مستودع القالب:
jobs: docs: uses: f5-sales-demo/docs-control/.github/workflows/github-pages-deploy.yml@mainالصلاحيات: contents: read، packages: read، pages: write، id-token: write. يستخدم مجموعة تزامن pages مع cancel-in-progress: true لتجنب عمليات النشر المتقادمة.
يُحفَّز فقط عند الدفع عندما تتغير الملفات ضمن docs/. يمكن أيضًا تشغيله يدويًا عبر workflow_dispatch، وهي الطريقة التي تستخدمها مهمة الإرسال في build-image.yml لتحفيز إعادة البناء في المستودعات التابعة.
بناء ونشر صورة Docker
Section titled “بناء ونشر صورة Docker”on: push: branches: [main] paths: - 'docker/**' - 'package.json' - 'package-lock.json' schedule: - cron: '0 6 * * *' repository_dispatch: types: [rebuild-image]الخطوات:
- سحب الكود
- تسجيل الدخول إلى
ghcr.ioباستخدامdocker/login-action - البناء والدفع باستخدام
docker/build-push-actionمع السياق.والملفdocker/Dockerfile - الوسوم:
ghcr.io/<owner>/<repo>:latestوghcr.io/<owner>/<repo>:<sha>
بعد البناء الناجح، تُحفِّز مهمة الإرسال سير عمل github-pages-deploy.yml عبر workflow_dispatch على كل مستودع تابع مُدرج في ملف تكوين downstream-repos.json الخاص بمستودع القالب. يضمن هذا أن جميع مستودعات المحتوى تعيد بناء توثيقها بصورة البناء المُحدَّثة.
تضمن المهمة اليومية المجدولة بقاء الصورة مُحدَّثة حتى بدون تغييرات في الكود (لالتقاط تحديثات التبعيات). يسمح حدث repository_dispatch للأنظمة الخارجية بتحفيز إعادة البناء.
يُحفَّز فقط عند الدفع عندما تتغير ملفات docker/ أو package*.json. التغييرات المتعلقة بالتوثيق فقط لا تُحفِّز إعادة بناء الصورة.
طلب ربط مشكلة
Section titled “طلب ربط مشكلة”on: pull_request_target: types: [opened, edited, reopened, synchronize]يستخدم nearform-actions/github-action-check-linked-issues@v1 لفرض أن كل طلب سحب يشير إلى مشكلة في GitHub (مثل Closes #42 في الوصف). يتم استبعاد طلبات سحب Dependabot عبر:
exclude-branches: "dependabot/**"تُعرض رسالة مخصصة تُخبر المساهمين بالصيغة المتوقعة إذا فشل الفحص. انظر CONTRIBUTING.md لسير عمل المساهمين الكامل.
فرض إعدادات المستودع
Section titled “فرض إعدادات المستودع”on: schedule: - cron: '0 */6 * * *' push: branches: [main] paths: - '.github/config/repo-settings.json' workflow_dispatch:يُفوِّض إلى سير عمل قابل لإعادة الاستخدام في مستودع القالب:
jobs: enforce: uses: f5-sales-demo/docs-control/.github/workflows/enforce-repo-settings.yml@main secrets: repo-admin-token: ${{ secrets.REPO_ADMIN_TOKEN }}يعمل كل 6 ساعات وعند التغييرات على ملف تكوين الإعدادات. يُطبِّق قواعد حماية الفروع وإعدادات الدمج وتكوينات المستودع الأخرى من .github/config/repo-settings.json.
نموذج الحوكمة
Section titled “نموذج الحوكمة”القالب المركزي
Section titled “القالب المركزي”مستودع f5-sales-demo/docs-control هو المصدر الوحيد للحقيقة لـ:
- تعريفات سير العمل القابلة لإعادة الاستخدام (نشر التوثيق، فرض إعدادات المستودع)
- الملفات المُدارة المُتزامَنة عبر جميع المستودعات في المنظمة
- التكوينات المعيارية وقواعد حماية الفروع
يرث هذا البنّاء وجميع مستودعات المحتوى سلوك التكامل والنشر المستمر من القالب.
مزامنة الملفات المُدارة
Section titled “مزامنة الملفات المُدارة”يمكن لمستودع القالب دفع الملفات المُدارة (مثل تعريفات سير العمل وملفات التكوين) إلى المستودعات التابعة. يحافظ هذا على محاذاة جميع المستودعات دون تحديثات يدوية. تعمل المزامنة عبر سير عمل منفصل في مستودع القالب.
حماية الفروع
Section titled “حماية الفروع”يُطبِّق سير عمل فرض إعدادات المستودع قواعد حماية الفروع من القالب، بما في ذلك:
- فحوصات الحالة المطلوبة قبل الدمج
- فحص ربط المشكلة المطلوب
- تفضيل دمج السحق (Squash merge)
- الحذف التلقائي لفروع الرأس بعد الدمج
الأسرار
Section titled “الأسرار”| السر | المصدر | الغرض |
|---|---|---|
GITHUB_TOKEN | تلقائي (GitHub) | يُستخدم من قبل معظم سير العمل لسحب الكود ونشر الحزم واستدعاءات واجهة برمجة التطبيقات |
REPO_ADMIN_TOKEN | يدوي (سر المستودع) | مطلوب من قبل سير عمل فرض إعدادات المستودع ومهمة الإرسال لتعديل حماية الفروع وإعدادات المستودع وتحفيز سير العمل في المستودعات التابعة (يحتاج صلاحية المسؤول) |