CI/CD للمستودعات أحادية البنية
استكشفوا استراتيجيات تحسين مسارات CI/CD في المستودعات أحادية البنية، بما في ذلك تشغيل المهام انتقائيًا استنادًا إلى الملفات المتغيرة.
CI/CD للمستودعات أحادية البنية درس مجاني في CI/CD with GitHub Actions & DevOps Pipelines على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في CI/CD with GitHub Actions & DevOps Pipelines، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة CI/CD with GitHub Actions & DevOps Pipelines 4 دروس في المجموع.
ما هو المستودع الأحادي؟
المستودع الأحادي هو مستودع واحد يحتوي على الرمز البرمجي لعدة مشاريع أو تطبيقات. فبدلًا من وجود مستودعات منفصلة لكل خدمة أو مكتبة، تكون جميعها في مكان واحد.
تخيّلوه كمكتبة كبيرة تضم العديد من الكتب (المشاريع) في مبنى واحد (المستودع)، بدلًا من وجود مبنى منفصل لكل كتاب. لهذا الأسلوب مزايا وعيوب، خصوصًا فيما يتعلق بـ CI/CD.
تحديات CI/CD في المستودع الأحادي
رغم أن المستودعات الأحادية توفّر مزايا مثل سهولة مشاركة الرمز البرمجي، فإنها قد تفرض تحديات على مسارات التكامل المستمر/التسليم المستمر (CI/CD):
- البناء البطيء: إذا أدى كل تغيير إلى تشغيل عملية بناء واختبارات كاملة لـ *جميع* المشاريع، فستصبح مسارات العمل بطيئة جدًا.
- هدر الموارد: يؤدي تشغيل المهام غير المرتبطة دون داعٍ إلى استهلاك دقائق البناء والموارد.
- إحباط المطورين: قد تؤدي حلقات الملاحظات الطويلة إلى إبطاء وتيرة التطوير.
الحاجة إلى CI/CD انتقائي
يكمن مفتاح CI/CD الفعّال في المستودع الأحادي في الانتقائية. نريد لمسارات العمل أن تكون ذكية بما يكفي من أجل:
- تحديد *ما* الذي تغيّر.
- تشغيل مهام CI/CD *فقط* للمشاريع المتأثرة بهذه التغييرات.
يوفّر هذا الأسلوب الوقت، ويقلل استهلاك الموارد، ويقدّم ملاحظات أسرع للمطورين.
التشغيل حسب المسارات: `on.paths`
يوفّر GitHub Actions طريقة قوية لتحقيق الانتقائية باستخدام مرشح paths في مشغّلات سير العمل. ويمكنكم تحديد الأدلة أو الملفات التي يؤدي تغييرها إلى تشغيل سير العمل.
إذا تغيّر ملف خارج هذه المسارات، فلن يعمل سير العمل. وهذا مناسب تمامًا للمستودعات الأحادية!
on:
push:
branches:
- main
paths:
- 'apps/frontend/**'
- 'libs/shared/**'تطبيق مرشح المسارات
إليكم سير عمل بسيطًا لا يعمل إلا عند دفع تغييرات إلى الملفات الموجودة ضمن الدليل apps/backend أو إلى ملف README.md محدد.
يضمن ذلك تشغيل الاختبارات أو عمليات البناء ذات الصلة فقط لخدمة الواجهة الخلفية.
name: Backend CI
on:
push:
branches:
- main
paths:
- 'apps/backend/**'
- 'README.md'
jobs:
build-backend:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build backend app
run: echo "Building backend..."تجاهل المسارات: `paths-ignore`
قد ترغبون أحيانًا في تشغيل سير العمل لمعظم التغييرات، مع تخطيه إذا عُدّلت ملفات معينة فقط، مثل ملفات التوثيق وملفات السجل. ومرشح paths-ignore مناسب تمامًا لهذا الغرض.
يعمل بطريقة مشابهة لـ paths، لكنه يحدد الملفات التي *لا ينبغي* أن تؤدي إلى تشغيل سير العمل.
on:
pull_request:
branches:
- main
paths-ignore:
- 'docs/**'
- '**/*.md'التشغيلات الانتقائية الديناميكية باستخدام `git diff`
بالنسبة إلى المنطق الأكثر تعقيدًا، يمكنكم استخدام أوامر Git مثل git diff ضمن خطوات سير العمل للتحقق ديناميكيًا من التغييرات. ويتيح لكم ذلك إنشاء شروط مخصصة.
فعلى سبيل المثال، قد تتحققون من حدوث تغييرات في مجلد محدد، وتعيّنون متغير إخراج لتحديد ما إذا كان ينبغي تشغيل مهمة لاحقة.
مثال على التنفيذ المشروط للمهام
تستخدم خطوة سير العمل هذه git diff للتحقق مما إذا كانت أي ملفات ضمن apps/api/ قد تغيّرت بين commit الحالي والفرع الأساسي. وإذا كانت قد تغيّرت، فإنها تعيّن متغير الإخراج api_changed إلى 'true'.
يمكن لهذا الإخراج بعد ذلك التحكم في تشغيل مهمة 'deploy API'.
jobs:
check-changes:
runs-on: ubuntu-latest
outputs:
api_changed: ${{ steps.diff.outputs.api_changed }}
steps:
- uses: actions/checkout@v4
- name: Check API changes
id: diff
run: |
if git diff --quiet ${{ github.event.before }} ${{ github.sha }} -- apps/api/;
then
echo "api_changed=false" >> $GITHUB_OUTPUT
else
echo "api_changed=true" >> $GITHUB_OUTPUT
fi
deploy-api:
needs: check-changes
if: needs.check-changes.outputs.api_changed == 'true'
runs-on: ubuntu-latest
steps:
- name: Deploy API
run: echo "Deploying API..."بنية المستودع الأحادي لـ CI/CD
تُبسّط بنية المستودع الأحادي المنظمة بدرجة كبيرة عملية CI/CD الانتقائي. ويجعل تجميع الملفات والمشاريع المرتبطة في أدلة محددة جيدًا من السهل استخدام مرشحات paths بفعالية.
/apps/frontend/apps/backend/libs/shared/docs
يتيح الفصل الواضح استهداف مسارات سير العمل بدقة.
اختبار CI/CD في المستودع الأحادي
يُعد تحسين CI/CD للمستودعات الأحادية أمرًا بالغ الأهمية للحفاظ على وتيرة تطوير جيدة واستخدام فعّال للموارد. فكّروا في الاستراتيجيات الأنسب لمعالجة تحديات قاعدة رموز برمجية كبيرة ومجمّعة.
مراجعة والخطوات التالية
لقد تعلمتم كيفية معالجة تحديات CI/CD في المستودعات الأحادية من خلال تطبيق التنفيذ الانتقائي للمهام. وباستخدام مرشحات paths في GitHub Actions وتقنيات git diff المتقدمة، يمكنكم ضمان تشغيل مسارات العمل لما هو ضروري فقط.
يؤدي ذلك إلى ملاحظات أسرع وتكاليف أقل وتجربة تطوير أكثر سلاسة. واصلوا استكشاف طرق ضبط مسارات سير العمل بدقة لتحقيق كفاءة أكبر!
الأسئلة الشائعة
هل درس «CI/CD للمستودعات أحادية البنية» مجاني؟
نعم — نص درس «CI/CD للمستودعات أحادية البنية» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة CI/CD with GitHub Actions & DevOps Pipelines، انتقل إلى CoddyKit PRO. تتضمن دورة CI/CD with GitHub Actions & DevOps Pipelines 4 دروس في المجموع.
ماذا ستتعلم في «CI/CD للمستودعات أحادية البنية»؟
استكشفوا استراتيجيات تحسين مسارات CI/CD في المستودعات أحادية البنية، بما في ذلك تشغيل المهام انتقائيًا استنادًا إلى الملفات المتغيرة. تتمرن على CI/CD with GitHub Actions & DevOps Pipelines مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ CI/CD with GitHub Actions & DevOps Pipelines؟
لا تُشترط خبرة سابقة. CI/CD with GitHub Actions & DevOps Pipelines على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «CI/CD للمستودعات أحادية البنية»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس CI/CD with GitHub Actions & DevOps Pipelines هذا؟
نعم. كل درس في CI/CD with GitHub Actions & DevOps Pipelines يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- CI/CD للمستودعات أحادية البنية
- سير العمل عبر المستودعات
- إدارة سير العمل مركزيًا
- تصفية المسارات وعمليات البناء الانتقائية