🚀 مرجع DevOps و CI/CD بالعربي
أهم عناصر DevOps وCI/CD بالعربي: مفاتيح GitHub Actions، استراتيجيات النشر، أوامر kubectl وTerraform — ماذا يفعل كل عنصر، صياغته، مثال يوضّحه، وأشهر الأخطاء. حاليًا 20 عنصر — والقائمة تكبر.
GitHub Actions المتقدمة
actions/cache
التخزين المؤقت للتبعيات
actions/cache يخزّن مجلداً بمفتاح محدد ويسترجعه في التشغيلات القادمة، فيوفّر وقت تنزيل التبعيات المتكرر في كل تشغيلة.
upload-artifact / download-artifact
القطع الأثرية (Artifacts)
upload-artifact وdownload-artifact ينقلان ملفات بين jobs مختلفة داخل نفس الـ workflow، أو يحتفظان بها بعد انتهاء التشغيلة للتنزيل اليدوي.
workflow_call
Workflow قابل لإعادة الاستخدام
workflow_call يحوّل workflow عادياً إلى workflow قابل للاستدعاء من workflows أخرى بدل تكرار نفس الـ jobs في كل مستودع أو ملف.
runs.using: composite
Composite Action
composite action تحزم عدة خطوات متكررة في action واحد يُستدعى كخطوة واحدة داخل أي job، لتفادي تكرار نفس الخطوات في workflows متعددة.
$/ self-repository syntax
الإشارة لنفس المستودع بصيغة $/
قيمة uses تبدأ بـ $/ تشير مباشرة لـ action أو reusable workflow في نفس المستودع عند نفس الـ commit الجاري تشغيله، دون الحاجة لـ checkout مسبق كما تتطلبه صيغة ./.
case()
دالة case() في تعبيرات GitHub Actions
case() دالة تعبيرات جديدة تقبل أزواجاً من (شرط، قيمة) بالترتيب وتُرجع قيمة أول شرط صحيح، بديلاً أوضح لتكديس && و || عند وجود أكثر من شرطين.
schedule.timezone
جدولة workflow بمنطقة زمنية محددة
حقل timezone اختياري بجانب cron في on.schedule يتيح تحديد منطقة زمنية بمعرّف IANA قياسي، بدل حساب فرق UTC يدوياً وتحديثه مع كل تغيّر بالتوقيت الصيفي.
upload-artifact archive: false
القطع الأثرية غير المضغوطة
مدخل archive في actions/upload-artifact يتيح رفع ملف كما هو دون ضغطه في zip، فيلغي مشكلة الضغط المزدوج ويسمح بفتح الملف مباشرة من واجهة GitHub.
Actions retention (workflow runs / checks / statuses)
توحيد مدة الاحتفاظ لتشمل التشغيلات والفحوصات
اعتباراً من 1 أكتوبر 2026، إعداد الاحتفاظ (retention) المستخدم أصلاً للـ Artifacts والسجلّات يشمل أيضاً تشغيلات الـ workflow وحالات الفحوصات والـ statuses — بدل بقائها 400+ يوم بمعزل عن أي إعداد.
استراتيجيات النشر
Rolling Update
التحديث المتدرج
Rolling Update يستبدل النسخ القديمة من التطبيق بالجديدة تدريجياً واحدة تلو الأخرى بدل استبدالها كلها دفعة واحدة، فلا يحدث توقف في الخدمة.
Blue-Green Deployment
النشر الأزرق-الأخضر
Blue-Green يشغّل بيئتين متطابقتين كاملتين، الإنتاج الحالي (Blue) والإصدار الجديد (Green)، ثم يحوّل كل حركة المرور دفعة واحدة بينهما بلا خليط إصدارات.
Canary Deployment
النشر الكناري
Canary يوجّه نسبة صغيرة فقط من حركة المرور للإصدار الجديد بينما تبقى البقية على القديم، ثم يزيد النسبة تدريجياً بعد التأكد من سلامة الأداء.
Kubernetes
kubectl apply
تطبيق ملف تعريف Kubernetes
kubectl apply ينشئ أو يحدّث موارد Kubernetes (Deployment، Service...) لتطابق ملف YAML المُعطى، بدل الأوامر الحتمية (imperative) خطوة بخطوة.
kubectl rollout
متابعة النشر والتراجع عنه
kubectl rollout يتابع تقدّم تحديث Deployment ويتيح التراجع الفوري للإصدار السابق عند فشل النشر، وهو الأداة الأساسية لأتمتة النشر الآمن في CI/CD.
GitLab CI/CD
.gitlab-ci.yml (stages / jobs)
بنية pipeline في GitLab CI/CD
.gitlab-ci.yml ملف YAML واحد في جذر المستودع يعرّف كل الـ pipeline في GitLab CI/CD عبر stages متسلسلة تحتوي كل واحدة عدة jobs تعمل بالتوازي.
secrets: (GitLab CI/CD)
سحب الأسرار وقت التشغيل في GitLab CI/CD
الكلمة المفتاحية secrets: على مستوى الوظيفة تسحب قيمة سر من مزوّد خارجي (Vault، مدير أسرار سحابي، أو GitLab Secrets Manager) وقت تشغيل الـ job، بدل تخزينها كـ CI/CD Variable ثابتة داخل GitLab.
Terraform
terraform plan
معاينة تغييرات البنية التحتية
terraform plan يعرض التغييرات التي سينفّذها terraform apply على البنية التحتية دون تطبيق أي شيء فعلياً — معاينة آمنة قبل أي تعديل حقيقي.
terraform apply
تطبيق تغييرات البنية التحتية
terraform apply ينفّذ فعلياً التغييرات التي عرضها terraform plan على البنية التحتية الحقيقية، وهو الأمر الوحيد في دورة Terraform الذي ينشئ أو يعدّل أو يحذف موارد فعلية.
أمان GitHub Actions
pull_request_target
أمان pull_request_target وPwn Requests
pull_request_target يشغّل الـ workflow بصلاحيات المستودع الأساسي كاملة (أسرار وGITHUB_TOKEN) حتى لو كان الـ pull request قادماً من fork لا يُوثق به، وهو ما يجعله خطراً إذا شُغِّل كود الـ PR نفسه ضمنه.
persist-credentials
تعطيل بقاء التوكن على الـ Runner
persist-credentials مدخل في actions/checkout يتحكم إن كان GITHUB_TOKEN يبقى معداً في إعدادات git على الـ runner بعد الـ checkout، ليستخدمه أي أمر git لاحق دون إعادة مصادقة.
🎓 تريد التعلم بالترتيب بدل المرجع السريع؟ ابدأ من مسار DEVOPS الكامل بالعربي.