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

التكامل والنشر المستمر والحوكمة

يستخدم المستودع أربعة سير عمل من GitHub Actions ونظام قوالب مركزي للحوكمة.

سير العملالملفالمُحفِّزالغرض
نشر GitHub Pagesgithub-pages-deploy.ymlالدفع إلى main (docs/**)، تشغيل يدويبناء ونشر موقع التوثيق على GitHub Pages
بناء ونشر صورة Dockerbuild-image.ymlالدفع إلى main (docker/**، package*.json)، مهمة يومية مجدولة، repository_dispatchبناء صورة Docker، الدفع إلى GHCR، وإرسال إعادة البناء للمستودعات التابعة
طلب ربط مشكلةrequire-linked-issue.ymlأحداث طلبات السحبحظر طلبات السحب التي لا تشير إلى مشكلة في GitHub
فرض إعدادات المستودعenforce-repo-settings.ymlكل 6 ساعات، الدفع إلى ملف تكوين الإعدادات، تشغيل يدويتطبيق إعدادات المستودع المعيارية من القالب
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 لتحفيز إعادة البناء في المستودعات التابعة.

on:
push:
branches: [main]
paths:
- 'docker/**'
- 'package.json'
- 'package-lock.json'
schedule:
- cron: '0 6 * * *'
repository_dispatch:
types: [rebuild-image]

الخطوات:

  1. سحب الكود
  2. تسجيل الدخول إلى ghcr.io باستخدام docker/login-action
  3. البناء والدفع باستخدام docker/build-push-action مع السياق . والملف docker/Dockerfile
  4. الوسوم: ghcr.io/<owner>/<repo>:latest و ghcr.io/<owner>/<repo>:<sha>

بعد البناء الناجح، تُحفِّز مهمة الإرسال سير عمل github-pages-deploy.yml عبر workflow_dispatch على كل مستودع تابع مُدرج في ملف تكوين downstream-repos.json الخاص بمستودع القالب. يضمن هذا أن جميع مستودعات المحتوى تعيد بناء توثيقها بصورة البناء المُحدَّثة.

تضمن المهمة اليومية المجدولة بقاء الصورة مُحدَّثة حتى بدون تغييرات في الكود (لالتقاط تحديثات التبعيات). يسمح حدث repository_dispatch للأنظمة الخارجية بتحفيز إعادة البناء.

يُحفَّز فقط عند الدفع عندما تتغير ملفات docker/ أو package*.json. التغييرات المتعلقة بالتوثيق فقط لا تُحفِّز إعادة بناء الصورة.

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 لسير عمل المساهمين الكامل.

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.

مستودع f5-sales-demo/docs-control هو المصدر الوحيد للحقيقة لـ:

  • تعريفات سير العمل القابلة لإعادة الاستخدام (نشر التوثيق، فرض إعدادات المستودع)
  • الملفات المُدارة المُتزامَنة عبر جميع المستودعات في المنظمة
  • التكوينات المعيارية وقواعد حماية الفروع

يرث هذا البنّاء وجميع مستودعات المحتوى سلوك التكامل والنشر المستمر من القالب.

مزامنة الملفات المُدارة

Section titled “مزامنة الملفات المُدارة”

يمكن لمستودع القالب دفع الملفات المُدارة (مثل تعريفات سير العمل وملفات التكوين) إلى المستودعات التابعة. يحافظ هذا على محاذاة جميع المستودعات دون تحديثات يدوية. تعمل المزامنة عبر سير عمل منفصل في مستودع القالب.

يُطبِّق سير عمل فرض إعدادات المستودع قواعد حماية الفروع من القالب، بما في ذلك:

  • فحوصات الحالة المطلوبة قبل الدمج
  • فحص ربط المشكلة المطلوب
  • تفضيل دمج السحق (Squash merge)
  • الحذف التلقائي لفروع الرأس بعد الدمج
السرالمصدرالغرض
GITHUB_TOKENتلقائي (GitHub)يُستخدم من قبل معظم سير العمل لسحب الكود ونشر الحزم واستدعاءات واجهة برمجة التطبيقات
REPO_ADMIN_TOKENيدوي (سر المستودع)مطلوب من قبل سير عمل فرض إعدادات المستودع ومهمة الإرسال لتعديل حماية الفروع وإعدادات المستودع وتحفيز سير العمل في المستودعات التابعة (يحتاج صلاحية المسؤول)