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

schedule.timezone

جدولة workflow بمنطقة زمنية محددة schedule.timezone

حقل timezone اختياري بجانب cron في on.schedule يتيح تحديد منطقة زمنية بمعرّف IANA قياسي، بدل حساب فرق UTC يدوياً وتحديثه مع كل تغيّر بالتوقيت الصيفي.

قبل هذا الحقل، كانت جدولة workflow في وقت محلي محدد (مثل 8 صباحاً بتوقيت مدينة معينة) تتطلب حساب المعادل بتوقيت UTC يدوياً، وإعادة الحساب مرتين سنوياً في المناطق التي تطبّق التوقيت الصيفي — عملية عرضة للخطأ ويسهل نسيانها. حقل timezone الاختياري يُضاف بجانب cron في نفس عنصر الجدولة، بمعرّف منطقة زمنية بصيغة IANA القياسية (نفس الصيغة المستخدمة في أغلب لغات البرمجة)، فيُترجم الوقت المحدد في cron لتوقيت تلك المنطقة تلقائياً بما فيه التوقيت الصيفي إن وُجد.

بدون تحديد timezone، يبقى السلوك القديم كما هو تماماً (UTC)؛ الحقل اختياري بالكامل ولا يغيّر أي قيد آخر مثل أقصر فاصل ممكن بين التشغيلات (5 دقائق).

الصياغة

on:
  schedule:
    - cron: "<تعبير cron>"
      timezone: "<معرّف IANA>"

📄 مثال

on:
  schedule:
    - cron: "0 8 * * 1-5"
      timezone: "Asia/Riyadh"   # 8 صباحاً بتوقيت الرياض فعلياً، وليس UTC

أهم النقاط

العنصرالوظيفة
cronتعبير الجدولة القياسي (دقيقة، ساعة، يوم الشهر، شهر، يوم الأسبوع)
timezoneمعرّف منطقة زمنية بصيغة IANA (مثل Asia/Riyadh)؛ اختياري، افتراضه UTC كما كان دائماً

💡 نصائح عملية

  • استخدم timezone بدل حساب فرق UTC يدوياً لأي جدولة مرتبطة بساعات عمل أو منطقة جغرافية محددة — يوفر عليك إعادة الحساب مع كل تغيّر بالتوقيت الصيفي

⚠️ أخطاء شائعة

  • الاعتقاد أن timezone يغيّر توقيت الطوابع الزمنية الأخرى في سياقات GitHub Actions (مثل github.event.*) — يؤثر فقط على لحظة تشغيل هذا الجدول تحديداً

🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار DEVOPS الكامل بالعربي.

📚 للتعمق التقني الكامل بالإنجليزية: MDN Web Docs