محتويات الدورة

Jenkins / أسس التنفيذ والمصدر / الدرس 5

المعلمات ونصوص البيئة والتحقق من المدخل

افصل اختيار المستدعي وبيئة العملية وتفويض الإصدار.

وقت القراءة التقريبي: 4 دقيقةتاريخ مراجعة المحتوى
في هذه الصفحة

أهداف الدرس

  • تمييز قيم params عن نصوص env.
  • التحقق من اختيار تجهيز ضيق قبل التنفيذ.

يختار المدخل سلوكاً ضمن عقد

تعرض المعلمات خيارات معلنة للاستدعاء ولا تثبت سلطة المستدعي على كل عملية ناتجة. يمكن لـ Parcel عرض plain وunicode دون قبول نص تنفيذي أو عنوان هدف اعتباطي. ضيق الواجهة وصف الافتراض صراحة. تختلف القيمة المنطقية عن نص false. قد تتغير المعلمات بتغير المهمة، فاحفظ القيم الفعلية مع الأدلة واستبعد الأسرار والحمولات الحساسة. لا يكفي الرجوع إلى التعريف الحالي لمعرفة اختيار تشغيل قديم إن تغيرت الخيارات أو القيم الافتراضية بعده.

البيئة قناة أخرى

يعرض Jenkins القيم عبر env ويقصر الإضافات بتوجيه environment أو withEnv. متغيرات البيئة نصوص للعمليات وليست بديلاً عن تحقق معلمة ذات نوع. يهم النطاق: لا تفترض وجود قيمة مرحلة خارجها، ولا أن تعيين صدفة يحدث بيئة Pipeline لاحقاً. تحتاج الأسرار ربطاً مخصصاً وأقل صلاحية لا حقول معلمات عادية. لا تطبع env كاملاً فقد يشمل إعداداً حساساً وقيماً مربوطة. افصل المكان الذي تُعلن فيه القيمة عن المكان الذي يفسرها؛ فقد يستقبل المستهلك نصاً رغم أن واجهة أخرى عرضت خياراً منطقياً.

أعلن واجهة عامة محدودة

يعرف المقطع خيار تجهيز وطلباً منطقياً في Declarative ولا ينفذ الفعل المطلوب. تحتاج المهمة الحقيقية تفويضاً وتحقق مدخل مناسباً وعقد أدلة. تحسن القائمة الواجهة ولا تصبح حد الثقة الوحيد لنصوص وواجهات لاحقة. لا تُنشأ معلمة على متحكم هنا ولا تصف الافتراضات تركيباً قائماً. تسمية REQUEST_RELEASE طلباً توضح أن اختيار true يطلب مراجعة مستقلة، ولا يعوض هوية المرشح أو صلاحية الهدف. لا يحتوي المثال سراً أو نقطة خدمة أو أمراً يغير حالة تشغيل.

groovy مقطع مدخلات Declarative
parameters {
    choice(name: "FORMAT", choices: ["plain", "unicode"], description: "Synthetic fixture mode")
    booleanParam(name: "REQUEST_RELEASE", defaultValue: false, description: "Request review only")
}
environment {
    PARCEL_COMPONENT = "label"
}

ينتمي المقطع لسير مناسب ويبقى غير قابل للتشغيل. REQUEST_RELEASE طلب لقرار مراجع مستقل لا تفويض أو نشر. لا يمثل سراً.

تحقق من المجال لا تخمّن النص الخطر

يقبل البرنامج الكامل صيغة مدعومة وطلباً منطقياً حقيقياً، ويرفض نص false بدلاً من تحويله بصمت لقيمة صادقة. يمثل عقد مجال في Python لا تحليل معلمات Jenkins أو تحويل Groovy. يجب أن يستخدم الفعلي أنواعه وواجهاته المدعومة. إذا أصبح المدخل مساراً أو وسيط صدفة أو حقل API، فاحفظ حد البيانات وتحقق من مجال المستهلك أيضاً. يسهل تدقيق لغة ضيقة مسموحة أكثر من قائمة منع متنامية. لا يثبت نجاح المثال أن أي سلسلة تحمل اسم خيار معروف آمنة لكل موضع لاحق.

python عقد طلب افتراضي ذو أنواع
def validate(mode, requested):
    if mode not in {"plain", "unicode"} or type(requested) is not bool:
        raise ValueError("invalid fixture request")
    return mode, requested
print(validate("plain", False))
try:
    validate("plain", "false")
except ValueError as error:
    print(error)
الناتج المتوقع
('plain', False)
invalid fixture request

لا يقرأ المثال params أو env. يثبت قاعدة محلية فقط ولا يمنح سلطة إصدار.

افصل الصحة عن السلطة

تختار الصيغة الصحيحة تجهيزاً معروفاً وتعبر القيمة المنطقية عن نية. لا يثبت الاثنان مصدر ثقة أو مرشحاً موافقاً أو بيئة مسموحة. ابن الشرط من أدلة وتفويض مستقلين لا معلمة اسمها APPROVED. اجعل الافتراض آمناً وصريحاً خاصة للجدولة والاستدعاء الآلي بلا تفاعل. عند التشخيص سجل القيم ومنشأها دون أسرار. قد يفسر السلوك تعريف معلمة قديم أو تجاوز بيئة أو افتراض نوع، وليس إخفاق اختبار. تحديد هذه القنوات يمنع تغيير التطبيق لمعالجة مشكلة اختيار في طبقة التنسيق.

الأخطاء الشائعة وإصلاحها

يُعامل نص false كقيمة منطقية كاذبة دائماً.

لماذا يحدث؟
اختلطت المعلمة ذات النوع بنص البيئة.
كيف تصلحه؟
تحقق وقارن وفق دلالات نوع القناة الفعلية.
كيف تتجنب تكراره؟
اختبر الكاذب والفارغ والغائب والتالف صراحة.

تمنح معلمة APPROVED سلطة الإنتاج.

لماذا يحدث؟
حلت نية المستدعي محل تفويض موثق.
كيف تصلحه؟
اشترط أدلة المصدر والمرشح والبيئة والموافقة مستقلة.
كيف تتجنب تكراره؟
سمّ حقول الطلب كطلبات ووثق حدودها.

يُقبل سر كمعلمة عادية ويُطبع.

لماذا يحدث؟
تجاوزت الراحة نطاق الاعتماد وحماية السجل.
كيف تصلحه؟
استخدم ربط الاعتماد المناسب ونسق تدوير المكشوف.
كيف تتجنب تكراره؟
أبعد الحساس عن المعلمات العامة وطباعة التشخيص.

اختبر فهمك

1. اختار المستخدم unicode وREQUEST_RELEASE=true. ماذا يثبت؟

اعرض الحل المشروح

يثبت الاختيار المعلن فقط. ما زال الإصدار يحتاج مصدراً موثوقاً ومرشحاً متحققاً وهدفاً مسموحاً وقراراً مخولاً. لا يجوز لطلب منطقي تجاوز هذه الشروط المستقلة.

2. عيّنت الصدفة PARCEL_MODE=plain. هل ترث التالية التعيين؟

اعرض الحل المشروح

ليس تلقائياً. يخص التعيين العملية ما لم تحمله آلية بيئة مدعومة قصداً. صرح بالنطاق ولا تستنتج بقاء المتغير من مشاركة مجلد الملفات.

أهم ما تعلمته

  • المدخل ذو النوع ونص البيئة والسلطة منفصلة.
  • تحقق من اختيارات ضيقة واحفظ المدخلات الآمنة.

المراجع الرسمية