يتيح لك إجراء GitHub التحقق من صحة العمليات المستخدمة في تطبيق العميل مقابل مخطط GraphQL. سيقوم الإجراء بالتحقق من جميع مستندات التشغيل في دليل محدد في مشروعك للتأكد من أن الاستعلامات/الطفرات واختيارات الحقل الخاصة بها يمكن تنفيذها بأمان مقابل مخطط GraphQL معين.
شاهد هذا الإجراء المستخدم هنا: Mandiwise/GraphQL-Operation-E-Edaction-Demo
قد لا يكون من الممكن كتابة وصيانة اختبارات لجميع عمليات GraphQL في تطبيق العميل ، بحيث يمكن أن يوفر هذا الإجراء مقياسًا للتأكيد على أنه سيكون صالحًا عند تنفيذه. إنه يعمل عن طريق إرسال استعلام الاستبداد إلى مخطط ، والبحث في دليل محدد في مشروعك لجميع مستندات تشغيل GraphQL (إما في ملفات .graphql أو .js ) ، والتحقق من صحة هذه العمليات مقابل نتيجة الاستعلام الاستبدادي.
تحت الغطاء ، يستخدم هذا المشروع أدوات GraphQL.js و GraphQL لتحميل المخطط ، والحصول على المستندات ، والتحقق من صحة العمليات.
مهم! نظرًا لأن الاستعلام الاستباقي مطلوب للحصول على المخطط ، يجب تشغيل التأمل في واجهة برمجة تطبيقات GraphQL التي ترغب في التحقق من عملياتك ضدها. لهذا السبب ، ربما يكون الإجراء أكثر ملاءمة للاستخدام مع واجهة برمجة تطبيقات GraphQL العامة ، في بيئة التطوير المحلية الخاصة بك ، أو عندما يتم توظيف ملف المخطط مع تطبيق العميل الخاص بك.
ستحتاج أولاً إلى إنشاء ملف yaml لوصف سير العمل في مشروعك (على سبيل المثال .github/workflows/operations.yml ).
بعد ذلك ، أضف مهمة إلى الملف الذي يستخدم حزمة الإجراءات/الخروج للتحقق من ملفات المستودع (إضافتها إلى $GITHUB_WORKSPACE ). يمكنك بعد ذلك تشغيل إجراء التحقق من الصحة على الملفات التي تم فحصها كخطوة ثانية للوظيفة.
يدعم هذا الإجراء المدخلات التالية:
base_dir (مطلوب): الدليل الأساسي للبحث عن العمليات (نسبة إلى دليل repo)schema_location (مطلوب): عنوان URL نقطة النهاية أو مسار ملف .json / .graphql (نسبة إلى دليل repo)excluded_paths : مسارات الدليل/الملفات المفصلية في base_dir لاستبعادها (نسبة إلى base_dir )token : الرمز المميز لاستخدامه مع رأس إذن (فقط مخطط حامله مدعوم) يوضح المثال التالي كيف يمكنك التحقق من صحة عمليات GraphQL كلما قمت بالدفع أو تقديم طلب سحب إلى الفرع main لمستودع. يشير الإجراء إلى ملف مخطط محلي في المستودع في swapi/schema.graphql ، ويبحث عن العمليات في دليل swapi ، ويستبعد ملف swapi/schema.graphql عند البحث عن مستندات العمليات (لأن هذا سيؤدي إلى خطأ):
name : Validate GraphQL Operations
on :
pull_request :
push :
branches :
- main
jobs :
operations :
runs-on : ubuntu-latest
steps :
- name : Checkout repo
uses : actions/checkout@v2
- name : Validate SWAPI operations
uses : mandiwise/graphql-operation-validation-action@v1
with :
schema_location : ${{ github.workspace }}/swapi/schema.graphql
base_dir : ${{ github.workspace }}/swapi
excluded_paths : schema.graphql على الأقل ، يجب عليك تحديد ${{ github.workspace }} كمدخلات base_dir الخاصة بك ، ولكن قد ترغب في تضييق نطاق البحث إلى دليل فرعي معين في المشروع أن جميع العمليات متداخلة أدناه. يتم تجاهل دليل node_modules تلقائيًا عند البحث عن العمليات ، لذلك لا تحتاج إلى تضمينه في إدخال excluded_paths اختياري.
الآن عندما تدفع إلى الفرع main أو يتم تقديم العلاقات العامة ، يمكنك التحقق من علامة تبويب الإجراءات الخاصة بمستودعك على Github لمعرفة النتيجة. إذا كانت أي عمليات غير صالحة ، فسيتم ملاحظة ذلك في السجل.
إذا كنت بحاجة إلى التحقق من صحة عملياتك مقابل مخطط يتطلب رمزًا في رأس Authorization ، فيمكنك إضافتها كقيمة إدخال token :
# ...
- name : Validate GitHub GraphQL API operations
uses : mandiwise/graphql-operation-validation-action@v1
with :
schema_location : https://api.github.com/graphql
base_dir : ${{ github.workspace }}/github
token : ${{ secrets.ACCESS_TOKEN }} سيتم إرسال الرأس باستخدام Authorization: Bearer token... مخطط فقط. يرجى الاطلاع على وثائق Github حول استخدام الأسرار المشفرة في سير العمل.
هل تريد التحقق من صحة عملياتك في بيئة التطوير الخاصة بك أو دون الضغط على مستودعك؟ لا مشكلة!
يمكنك استخدام ACT لتشغيل هذا الإجراء محليًا.
تثبيت التبعيات:
npm iقم بإجراء الاختبارات:
npm testحزمة للتوزيع:
npm run prepareاستند هذا المشروع في الأصل إلى الإجراءات/javaScript-action.
يتم إصدار البرامج النصية والوثائق في هذا المشروع بموجب ترخيص MIT.