Command Palette

Search for a command to run...

مدقق YAML: لماذا لا تزال YAML الصالحة تنشر الشيء الخطأ

مدقق YAML: لماذا لا تزال YAML الصالحة تنشر الشيء الخطأ

T
Toolz Team
|Jul 5, 2026|19 دقيقة قراءة

جزء من مجموعة برمجة مطبوعة

السلوك الذي يعض هنا محدد، وليس عرضيًا: مواصفات YAML 1.2 يحدد كيفية حل العدد القياسي غير المقتبس إلى نوع ما.

لقد قمت ذات مرة بشحن عملية نشر قامت بتثبيت الخدمة على الإصدار 1.1 عندما قال ملف التكوين بوضوح 1.10. ليس خطأ مطبعي. ليس البحث والاستبدال سيئًا. ملف YAML، الذي قرأته أربع مرات، قال هذا:

image_tag: 1.10

وقام المحلل اللغوي بتسليم رقم البرنامج النصي للنشر الخاص بي 1.1. لأن 1.10 isn&#39؛t سلسلة إصدار إلى YAML - it&#39؛s أ تعويم حرفي، ويطفو دون &#39؛ يستمر في تتبع الأصفار. عشرة يصبح نقطة واحدة. كان الملف صالحًا بنسبة 100% YAML. كان الوبر سعيدًا. كان CI أخضر. خرجت الحاوية الخاطئة.

هذا &#39؛ هو الشيء الذي لا يخبرك به أحد عن التحقق من صحة YAML: &quot؛ صالح وquot؛ ليس هو نفسه &quot؛صحيح.&quot؛ مدقق بناء الجملة الذي يجيب فقط بنعم/لا هو الإجابة على السؤال السهل. السؤال الصعب - الذي يتم نشره بالفعل - هو إلى ماذا تحول YAML الخاص بي؟ نظرًا لأن YAML ليس تنسيق تكوين، فهو &#39؛s محرك لاستدلال النوع يرتدي ملابس بتنسيق التكوين &#39؛s، ويتخذ قرارات بشأن بياناتك لم تطلب منه أبدًا اتخاذها.

ال مدقق يمل على Toolz.dev يجيب على كلا السؤالين. يخبرك ما إذا كان المستند يوزع أم لا، ثم يعرض لك النتيجة التي تم تحليلها كـ JSON - بنية البيانات الفعلية التي ستتلقاها أدواتك. هذا النصف الثاني هو ما كان سينقذني. "image_tag": 1.1 من المستحيل أن تخطئ القراءة في جزء الإخراج.

ليرة تركية؛DR: لصق YAML الخاص بك في مدقق يمل وقراءة إخراج JSON، وليس فقط علامة الاختيار الخضراء. That&#39؛s حيث يظهر نوع الإكراه نفسه: 1.101.1، 0123123، القيم غير المقتبسة تصبح بصمت أرقامًا أو قيمًا منطقية أو فارغة. يتم تشغيله على js-yaml (YAML 1.2) بالكامل في متصفحك، لذلك لا تترك أسرار Kubernetes وبيانات اعتماد قاعدة البيانات جهازك أبدًا. اقتبس أي شيء يجب أن يظل سلسلة. إذا كنت بحاجة إلى مقارنة النتيجة بتكوين JSON، فإن تنسيق JSON و فرق JSON التقط من هناك.


ما الذي يتحقق منه مدقق YAML فعليًا؟

شيئان مختلفان، وit&#39؛s يستحقان فصلهما لأنهما يفشلان بشكل مختلف.

التحقق من صحة بناء الجملة يسأل: هل يمكن تحليل هذا النص على الإطلاق؟ علامات التبويب التي تنتمي إليها المسافات، والمسافة المفقودة بعد النقطتين، وكتلة عددية يكون جسمها &#39؛ مسافة بادئة، اقتباس غير مغلق. هؤلاء هم بصوت عال فشل. يرمي المحلل اللغوي الخاص بك، ويتحول خط الأنابيب الخاص بك إلى اللون الأحمر، وتقوم بإصلاحه في دقيقتين. مزعج، وليس خطيرا.

التفتيش الدلالي يسأل: ماذا حللت في؟ هذا هو المكان الذي تعيش فيه الإخفاقات الهادئة. الوثيقة صالحة. خط الأنابيب أخضر. القيمة ببساطة ليست كما اعتقدت أنك كتبته. لا أحد يكتشف ذلك حتى يتصرف الإنتاج بشكل غريب، وبحلول ذلك الوقت لا أحد &#39؛ ينظر إلى ملف التكوين، لأن ملف التكوين هو &quot؛fine.&quot؛

معظم أدوات التحقق من YAML عبر الإنترنت تقوم بالأولى فقط. يقوم أداة التحقق من صحة Toolz.dev بالأولى ثم يسلمك الثانية - المستند الذي تم تحليله، والذي يتم تقديمه كـ JSON، بجوار مدخلاتك مباشرةً. اعتد على قراءة هذا الجزء. It&#39؛s الفرق بين &quot؛ الملف جيد التكوين والاقتباس؛ و &quot؛ الملف يعني ما قصدته.&quot؛

ما هي أخطاء YAML التي تؤدي إلى كسر الإنشاءات بالفعل؟

هنا &#39؛s ما يظهر حقًا، مرتبة حسب مقدار تكلفة حياتي لكل منها. كل سلوك أدناه قمت بالتحقق منه شبيبة-يامل 4، وهو المحلل اللغوي الذي يقوم بتشغيل أداة التحقق من صحة Toolz.dev والذي ينفذ يامل 1.2 المواصفات.

1. علامات التبويب. علامات التبويب دائما.

يحظر YAML أحرف علامة التبويب للمسافة البادئة. لا & اقتباس؛ يثبط ويقتبس؛ - يمنع. المواصفات صريحة، ورسالة الخطأ مباشرة بشكل منعش

tab characters must not be used in indentation

السبب وراء استمرار حدوث ذلك هو أن علامات التبويب غير مرئية. يعرض لك المحرر الخاص بك ملفًا محاذاة بشكل جيد؛ يرى المحلل اللغوي حرف تحكم. إصلاحه من المصدر: قم بتعيين المحرر الخاص بك لإدراج المسافات، وقم بتشغيل &quot؛ عرض مسافة بيضاء وquot؛ لملفات YAML. مسافتان لكل مستوى، وهو التقليد الذي استقر عليه كل نظام بيئي رئيسي لـ YAML.

2. المفاتيح المكررة

database:
  host: localhost
  port: 5432
  host: production-db.example.com

host يظهر مرتين. ماذا يحدث؟ يعتمد الأمر كليًا على المحلل اللغوي الخاص بك، وهي جملة مرعبة للكتابة عن تنسيق التكوين.

شبيبة-يامل رميات: duplicated mapping key. جيد. هذا &#39؛s السلوك الذي تريده، وهو &#39؛s ما سيظهره لك أداة التحقق من صحة Toolz.dev. لكن PyYAML - وهو ما يجلس عليه Ansible، والكثير من أدوات Python - يأخذ بصمت أخير القيمة والمضي قدما. لا تحذير. أصبح مضيف قاعدة البيانات الخاص بك الآن هو ما قالته النسخة المكررة الأخيرة، والتي قمت بدمجها بشكل سيئ في ملف طويل قد تكون على بعد ثلاثمائة سطر من المكان الذي تبحث فيه &#39؛re.

هذه هي أفضل وسيطة منفردة لتشغيل التكوينات من خلال أداة التحقق الصارمة حتى عندما تقبلها أدوات الإنتاج الخاصة بك. أداة التحقق من الصحة that&#39؛s أكثر صرامة من وقت التشغيل الخاص بك هو أداة التحقق من الصحة التي تجد الأخطاء.

3. اكتب الإكراه - الذي أصابني

يستنتج YAML الأنواع من الكميات القياسية غير المقتبسة. إنه واثق جدًا وغالبًا ما يكون خاطئًا بشأن نيتك

انت كتبت كنت تقصد YAML 1.2 يعطيك
version: 1.10 السلسلة &quot؛1.10&quot؛ تعويم 1.1
pin: 0123 السلسلة &quot؛0123&quot؛ العدد الصحيح 123
port: "8080" الرقم 8080 السلسلة "8080"
enabled: true منطقية منطقية true - صحيح
value: سلسلة فارغة، ربما؟ null
value: ~ تيلدا null

الذي - التي 0123 الصف هو وشم I&#39؛d على الأشخاص. الرموز البريدية، وأرقام التعريف الشخصية، وأرقام الحسابات، والمعرفات المبطنة صفر - كل صفر بادئ كتبته لسبب ما يتم تناوله. اقتبس منهم.

القاعدة التي لم تخذلني أبدًا: إذا كانت القيمة عبارة عن معرف أو إصدار أو رمز أو أي شيء أنت &#39؛ ولم تقم مطلقًا بإجراء العمليات الحسابية عليه، فضعه بين علامتي اقتباس. يمكن أن تظل المنافذ وعدد النسخ المتماثلة عارية. كل ما هو مجرد يبدو يجب أن يكون الرقم "quoted".

4. القيم المنطقية المعتمدة على الإصدار (ويعرف أيضًا باسم مشكلة النرويج)

هذا سيء السمعة حقًا، والتفاصيل أكثر أهمية من الميم.

في يامل 1.1، يقبل النوع المنطقي yes، no، on، off، y، n، والأحرف الكبيرة الخاصة بهم، بالإضافة إلى true و false. لذا country: NO - النرويج &#39؛ رمز البلد ISO - يوزع على أنه منطقي خطأ. في يامل 1.2الذي نظف هذا فقط true و false هي منطقية؛ NO هو مجرد سلسلة "NO".

مما يعني نفس الملف يعني أشياء مختلفة في أدوات مختلفة:

country: NO
feature_flag: on
  • js-yaml 4 (YAML 1.2، وما يستخدمه هذا المدقق): {"country": "NO", "feature_flag": "on"} - سلاسل.
  • بيامل (يامل 1.1): {"country": False, "feature_flag": True} - القيم المنطقية.

نفس البايتات. بيانات مختلفة. إذا قام CI الخاص بك بتشغيل Python linter عبر التكوين الذي تستهلكه خدمة العقدة، فلديك محللان يختلفان حول ملفك ولا يخطئ أي منهما.

وهذا أيضًا هو أصل GitHub Actions&#39؛ أغرب غرابة: on: المفتاح الذي يبدأ به كل سير عمل هو منطقية إلى محلل YAML 1.1، لذلك تجد البرامج النصية التي تحدد ملفات سير العمل في Python مفتاحًا يسمى True بدلا من on. اقتباس ("on":) قانوني ويصلحه.

الحركة الدفاعية هي نفسها كما كانت من قبل: اقتبسها. country: "NO" وسائل "NO" في كل محلل كان موجودا على الإطلاق.

5. كتلة المسافة البادئة العددية

description: |
This is not indented

ال | (حرفي) و > تحتاج الكميات القياسية للكتلة (المطوي) إلى وضع مسافة بادئة للمحتوى الخاص بها بالنسبة للمفتاح. ينهي المحتوى غير ذي المسافة البادئة الكتلة على الفور ويبدأ المحلل اللغوي في قراءة نثرك كمفاتيح YAML، مما ينتج رسائل خطأ يبدو أنها لا علاقة لها بالخطأ الفعلي.

يستحق معرفة مؤشرات القضم أثناء تواجدك &#39؛إليك هنا: | يحتفظ بخط جديد واحد، |- يجردها، |+ يحتفظ بهم جميعا. إذا كنت &#39؛ إعادة تضمين مفتاح خاص أو برنامج نصي وشيء ما يشكو من سطر جديد لاحق، هذا هو مقبضك.

6. الشخصيات الخاصة غير المقتبسة

تؤدي مسافة النقطتين داخل قيمة غير مسعرة إلى إنهاء القيمة وبدء تشغيل مفتاح جديد. يؤدي هذا إلى ظهور رسائل الخطأ وعناوين URL

message: Error: file not found   # parse error
regex: [a-z]+                    # parsed as a LIST, not a string
time: "22:22"                    # quote it — in YAML 1.1 this was base-60!

[، {، #، &، *، !، |، >، %، @ في بداية العدد، كل ذلك يعني شيئًا ما. اقتبس أولاً، ثم اطرح الأسئلة لاحقًا.


كيف يمكنني التحقق من صحة YAML على Toolz.dev؟

  1. افتح ال مدقق يمل. لا يوجد حساب، لا تحميل.
  2. لصق المستند الخاص بك. ملف قيم Helm، وتأليف عامل الإرساء، وسير العمل - أيًا كان &#39؛ سوء التصرف.
  3. ضرب التحقق من الصحة. تعود الأخطاء بالدقة الخط والعمود من المحلل اللغوي، بالإضافة إلى المحلل اللغوي &#39؛ سلسلة الأسباب الخاصة (bad indentation of a mapping entry، duplicated mapping key، وهكذا).
  4. اقرأ جزء إخراج JSON. هذه هي الخطوة التي يتخطاها الأشخاص وهي الخطوة المهمة &#39؛s. قم بمسحها ضوئيًا بحثًا عن القيم التي تهتم بها. يكون image_tag سلسلة أم رقم؟ هل هذا المنفذ مقتبس؟ هل أصبحت القيمة فارغة null؟
  5. إصلاح، إعادة التحقق من الصحة. يمكن للأخطاء أن تخفي بعضها البعض - يتوقف المحلل اللغوي عند أول خطأ يمكنه &#39؛ يتعافى منه، لذا فإن إصلاح أحدهما يكشف أحيانًا عن اثنين آخرين. هذا & #39؛ طبيعي، وليس علامة على أن الأمور تزداد سوءًا.

أحد القيود المعروفة، مذكور بوضوح

يقوم المدقق حاليًا بتوزيع أ وثيقة YAML واحدة. إذا قمت بلصق ملف متعدد المستندات - فسيتم فصل عدة بيانات Kubernetes بواسطة --- في ملف واحد، وهو نمط شائع للغاية - سيتم الإبلاغ عنه

expected a single document in the stream, but found more

That&#39؛s أن يكون المحلل اللغوي صحيحًا، وليس الملف معطلاً. الحل البديل اليوم هو التحقق من صحة كل مستند على حدة: لصق كل شيء فوق ---تحقق من ذلك، ثم الصق الجزء التالي. دعم المستندات المتعددة موجود في قائمتي على وجه التحديد لأن مستخدمي Kubernetes يضغطون على هذا على الفور، وI&#39؛ أفضل أن أخبرك عن الفجوة بدلاً من السماح لك باكتشافها في منتصف الحادث.


YAML vs JSON: متى يجب أن أستخدم أي منها؟

YAML 1.2 عبارة عن مجموعة شاملة صارمة من JSON - كل مستند JSON صالح هو YAML صالح، ولهذا السبب يمكن للمدقق أن يسلمك مخرجات JSON على الإطلاق. لكن التنسيقات لها شخصيات متعارضة.

YAML JSON
الهيكل المحدد بواسطة المسافة البادئة (المسافة البيضاء-مهمة) الأقواس والأقواس (صريحة)
تعليقات نعم (#) لا
اكتب الاستدلال عدوانية - يستنتج الأرقام والمنطقية والفارغة والتواريخ لا شيء - علامات الاقتباس تعني سلسلة، دائمًا
متعدد المستندات نعم (--- فاصل) لا
إعادة استخدام المراسي (&)، الأسماء المستعارة (*)، دمج المفاتيح (<<) لا أحد
وضع الفشل سوء تفسير صامت خطأ تحليل بصوت عال
الأفضل في الملفات التي يكتبها البشر ويحررونها تبادل آلات البيانات

التجارة حقيقية وتسير في كلا الاتجاهين. YAML&#39؛ إن سهولة القراءة والتعليقات هي بالضبط سبب وجود تكوين البنية التحتية هناك - لا أحد يريد الحفاظ على بيان Kubernetes المكون من 400 سطر في JSON بدون تعليقات. JSON&#39؛ إن الافتقار التام للذكاء هو بالضبط سبب استخدام واجهات برمجة التطبيقات له "1.10" يكون "1.10" وليس هناك ما يمكن مناقشته.

قاعدتي: YAML للملفات التي يقوم الأشخاص بتحريرها، وJSON لأجهزة البيانات يمررها. وعندما يتم إنشاء ملف YAML بواسطة برنامج بدلاً من كتابته بواسطة شخص ما، فإن ذلك &#39؛s رائحة - التكوين الذي تم إنشاؤه آليًا لا يحصل على أي من فوائد YAML&#39؛s وجميع مخاطرها.

إذا كنت &#39؛ أنت تتحرك بين الاثنين، فإن محول JSON إلى YAML يعالج التحول، و تنسيق JSON سوف يرتب الجانب الآخر.

ما هي المراسي والأسماء المستعارة، وهل يجب أن أستخدمها؟

يتيح لك YAML تحديد الكتلة مرة واحدة وإعادة استخدامها. مرساة مع &، مرجع مع *، دمج في الخريطة مع <<:

defaults: &defaults
  adapter: postgres
  host: localhost
  port: 5432

development:
  <<: *defaults
  database: myapp_dev

test:
  <<: *defaults
  database: myapp_test

كلاهما development و test اخرج مع دمج المحول والمضيف والمنفذ. It&#39؛s مفيد حقًا، ويتعامل معه js-yaml - لقد تحققت من أن الدمج يتم حله بشكل صحيح.

تحذيرين، رغم ذلك.

أولاً، مفاتيح الدمج هي امتداد YAML 1.1، ليس جزءًا من YAML 1.2 الأساسي. الدعم واسع النطاق ولكنه ليس عالميًا، وهو الذي يجذب الناس - إجراءات GitHub لا تدعمها. لن تفعل المراسي الموجودة في ملف سير العمل ما تريد. تحقق من المستهلك الخاص بك قبل الاعتماد على هذا.

ثانيًا، تجعل المراسي قراءة الملف أكثر صعوبة بالنسبة للشخص التالي، وفي التكوين، عادةً ما يكون الشخص التالي هو أنت في الساعة 2 صباحًا، وأنا أستخدمها للكتل المتكررة حقًا وليس للذكاء أبدًا.

بينما نحن &#39؛على الجانب الخطير من YAML: يدعم التنسيق العلامات المخصصة التي يستخدمها بعض المحللين لإنشاء كائنات عشوائية. بايثون &#39؛س yaml.load() كان من المعروف أنه قابل للاستغلال بهذه الطريقة، ولهذا السبب yaml.safe_load() موجود ولماذا يجب عليك استخدامه - دائمًا - على أي YAML يأتي من خارج فريقك. شبيبة-يامل &#39؛س load() يعد الإصدار 4 آمنًا افتراضيًا (لقد فاز &#39؛ وقم بإنشاء أنواع عشوائية)، وهو أمر أقل مما يدعو للقلق هنا.

كيف أتوقف عن كتابة YAML المكسور في المقام الأول؟

تتفوق الوقاية على التحقق من الصحة، ومعظمها عبارة عن تكوين محرر

  • مسافتان، لا توجد علامات تبويب أبدًا. اضبطه على كل نوع ملف حتى تتمكن من &#39؛t ننسى.
  • قم بتشغيل عرض المسافات البيضاء ل .yml/.yaml. إذا تمكنت من رؤية علامة التبويب، فستفوز بـ &#39؛t قم بتنفيذ علامة التبويب.
  • قم بتثبيت خادم لغة YAML. يؤدي التحقق من صحة المخطط في الوقت الفعلي مقابل Kubernetes وGitHub Actions ومخططات تكوين عامل الإرساء إلى اكتشاف فئة كاملة من الأخطاء التي يمكن التحقق من صحة بناء الجملة &#39؛t: YAML صالح بمفتاح به خطأ إملائي.
  • الاقتباس بشكل افتراضي عندما تكون في شك. تكلفة عرض الأسعار غير الضروري هي صفر. تكلفة العرض المفقود هي النشر.
  • التحقق من الصحة قبل الدفع، ليس بعد فشل CI. يستغرق اللصق في علامة تبويب المتصفح ثماني ثوانٍ؛ يستغرق خط الأنابيب الفاشل ثماني دقائق.
  • بالنسبة لـ Kubernetes، قم بوضع طبقات من الشيكات. التحقق من صحة بناء الجملة يمسك بالهيكل؛ kubectl apply --dry-run=client مخطط المصيد. يجدون أخطاء مختلفة وتريد كليهما.

والعادة التي غيرت الأمور بالنسبة لي: عندما تقوم عملية النشر المستندة إلى التكوين بشيء لا يمكن تفسيره انظر إلى المخرجات التي تم تحليلها قبل أن تنظر إلى أي شيء آخر. ليس الملف. الإخراج الذي تم تحليله. الملف عبارة عن قصة عما قصدته. الإخراج الذي تم تحليله هو ما حدث بالفعل.

That&#39؛s نفس الغريزة التي تحكم كل شيء في بلدي تصحيح أخطاء API لسير العمل - اقرأ البيانات، وليس التعليمات البرمجية - وينطبق ذلك أيضًا على التكوينات كما ينطبق على الاستجابات. إذا كنت تريد جولة أوسع لما يعيش في صندوق الأدوات هذا، فإن دليل أدوات الترميز يغطيه.


الأسئلة الشائعة

لماذا يتحقق YAML الخاص بي من صحة النشر الخاص بي ولكنه لا يزال يكسره؟

لأن صحة بناء الجملة والصحة الدلالية شيئان مختلفان. يستنتج YAML الأنواع من القيم غير المقتبسة، لذلك 1.10 يصبح تعويم 1.1، 0123 يصبح العدد الصحيح 123، وتصبح قيمة فارغة null - كل ذلك في مستند صالح تمامًا. اقرأ مخرجات JSON التي تم تحليلها، وليس فقط نتيجة النجاح/الفشل، واذكر أي قيمة يجب أن تظل سلسلة.

لماذا تقوم YAML بتحويل رقم الإصدار الخاص بي إلى رقم مختلف؟

1.10 هو تعويم حرفي لـ YAML، ولا تحافظ العوامات على الأصفار الزائدة، لذلك يتم حلها 1.1. يجب ذكر أي إصدار أو رقم بناء أو معرف مبطن صفر version: "1.10". يعد هذا أحد أغلى أخطاء YAML لأن الملف يبدو صحيحًا وينجح التحليل.

ما هي مشكلة النرويج في YAML؟

في YAML 1.1، القيم no، NO، off، و yes هي منطقية، لذا فإن رمز البلد الخاص بالنرويج &#39؛s NO يوزع كما false. YAML 1.2 أصلح هذا - فقط true و false هي قيم منطقية - ولكن العديد من الأدوات (لا سيما PyYAML، التي يستخدمها Ansible) لا تزال تنفذ 1.1. وبالتالي فإن نفس الملف يمكن أن يعني أشياء مختلفة في أدوات مختلفة. اقتباس القيمة (country: "NO") يجعلها سلسلة في كل مكان.

هل يمكنني استخدام علامات التبويب للمسافة البادئة في YAML؟

رقم تحظر مواصفات YAML أحرف علامة التبويب في المسافة البادئة، ويرفضها المحللون اللغويون مع وجود خطأ مثل &quot؛ لا ينبغي استخدام أحرف علامة التبويب في المسافة البادئة.&quot؛ قم بتكوين المحرر الخاص بك لإدراج مسافات لملفات YAML - مسافتان لكل مستوى هي الاتفاقية القياسية.

هل يدعم Toolz.dev YAML Validator ملفات المستندات المتعددة؟

ليس حاليا. إنه يتحقق من صحة مستند واحد، لذلك يظهر ملف يحتوي على عدة Kubernetes مفصولة بـ --- المرتجعات &quot؛ من المتوقع وجود مستند واحد في الدفق.&quot؛ التحقق من صحة كل مستند على حدة كحل بديل. تم التخطيط لدعم المستندات المتعددة.

هل المفاتيح المكررة مسموح بها في YAML؟

تقول المواصفات أن مفاتيح التعيين يجب أن تكون فريدة من نوعها، لكن المحللين يختلفون في الممارسة العملية. js-yaml - الذي يستخدمه المدقق هذا - يلقي &quot؛ مفتاح واقتباس التعيين المكرر؛ خطأ. يحتفظ PyYAML بالقيمة الأخيرة بصمت، مما يعني أن النسخة المكررة يمكنها تجاوز التكوين بهدوء دون أي تحذير على الإطلاق. يؤدي تشغيل التكوين الخاص بك من خلال أداة التحقق الصارمة إلى اكتشاف ذلك قبل أن يقبله وقت التشغيل بصمت.

هل من الآمن التحقق من صحة أسرار Kubernetes وبيانات اعتمادها عبر الإنترنت؟

باستخدام أداة التحقق من صحة Toolz.dev، نعم - يحدث التحليل بالكامل في متصفحك عبر JavaScript ولا يتم نقل أي شيء إلى أي خادم. يمكنك تأكيد ذلك بنفسك عن طريق فتح علامة التبويب "الشبكة" للمتصفح &#39؛s أثناء التحقق من صحة أي طلب وملاحظته. قم بتطبيق نفس التحقق على أي أداة عبر الإنترنت قبل لصق تكوين البنية التحتية فيها.

ما الفرق بين .yml و.yaml؟

لا يوجد شيء وظيفي - يتم التعرف على كلا الامتدادين بواسطة كل محلل YAML. التوصية الرسمية هي .yaml؛ .yml بقي من عصر الامتدادات المكونة من ثلاثة أحرف ويظل شائعًا للغاية (يعد كل من Docker Compose وGitHub Actions افتراضيًا عليه). اختر واحدًا وحافظ على ثباتك داخل المشروع.

كيف يمكنني تحويل YAML إلى JSON؟

الصق YAML في أداة التحقق من الصحة واقرأ جزء الإخراج - فهو يعرض المستند الذي تم تحليله كـ JSON، وهو التحويل. نظرًا لأن YAML 1.2 عبارة عن مجموعة شاملة من JSON، فإن كل مستند YAML صالح له مكافئ JSON، ولكن يتم تطبيق استنتاج النوع أولاً، لذا فهو غير مقتبس 1.10 يصل كما 1.1 و 0123 مثل 123. اقتبس هذه القيم أولاً إذا كنت بحاجة إلى الاحتفاظ بها كسلاسل.

كيف يمكنني التحقق من صحة YAML مقابل المخطط؟

يتحقق أداة التحقق هذه من بناء الجملة ويعرض النتيجة التي تم تحليلها، ولكنها لا تتحقق من الصحة مقابل المخطط - وهو فحص منفصل يؤكد أن مفاتيحك وأنواع القيم الخاصة بك تتطابق مع ما تتوقعه أداة مثل Kubernetes أو GitHub Actions. للتحقق من صحة المخطط، استخدم خادم لغة YAML في المحرر الخاص بك، أو واجهة سطر الأوامر المدركة للمخطط مثل kubeconform لكوبرنيت أو kubectl apply --dry-run=client. يؤدي التحقق من صحة بناء الجملة والمخطط إلى اكتشاف أخطاء مختلفة، لذا قم بتشغيل كليهما.


Comments

0 comments

0/2000 characters

No comments yet. Be the first to share your thoughts!