يمكنك تشغيل اختبارات Apidog CLI API داخل Drone CI بإضافة خطوة Docker تستخدم صورة Node، ثم تثبيت apidog-cli وتشغيل apidog run ضد بيئة محددة. خزّن رمز وصول Apidog كسرّ في Drone، ومرّره إلى الخطوة باستخدام from_secret. في هذا الدليل ستجهّز ملف .drone.yml قابلًا للنسخ، وتضبط الأسرار، وشروط التشغيل حسب الفرع، وخيارات عرض التقارير في Drone.
ما هو Drone CI وكيف يعمل؟
Drone هو نظام CI/CD مفتوح المصدر ومبني على الحاويات، وهو الآن جزء من Harness. إذا كنت تريد مراجعة المفهوم العام للتكامل المستمر والتسليم المستمر، اقرأ ما هو CI/CD.
الفكرة الأساسية في Drone: كل خطوة في المسار تعمل داخل حاوية Docker مستقلة. بدل الاعتماد على وكيل بناء يحتوي أدوات مثبتة مسبقًا، تختار صورة Docker لكل خطوة، ثم تشغّل أوامرك داخلها. هذا يجعل المسارات قابلة للتكرار وأسهل في التصحيح.
يتم تعريف المسار في ملف .drone.yml داخل جذر المستودع:
kind: pipeline
type: docker
name: api-tests
steps:
- name: greeting
image: alpine
commands:
- echo hello
- echo world
يشغّل Drone أوامر commands كسكريبت shell مع set -e وset -x، لذلك يفشل البناء عند أول أمر يرجع رمز خروج غير صفري، ويطبع الأوامر قبل تنفيذها. دليل العمل الافتراضي هو جذر المستودع.
لماذا تشغّل اختبارات API داخل خطوة حاوية؟
اختبارات API تمنع تغييرات غير مقصودة في العقود: رمز حالة مختلف، حقل مفقود، أو شكل استجابة تغيّر بدون تنبيه. تشغيلها مع كل push أو pull_request يساعدك على اكتشاف الانحدارات قبل النشر.
يتناسب Apidog مع هذا النمط لأنك تبني سيناريوهات الاختبار بصريًا داخل Apidog، ثم تشغّل نفس السيناريوهات من CI باستخدام Apidog CLI. لا تحتاج إلى إعادة كتابة الاختبارات كسكريبتات منفصلة. لمزيد من السياق حول ربط اختبارات API بمسارات CI/CD، راجع أفضل ممارسات CI/CD لاختبار API.
أمر Apidog CLI المستخدم في Drone
ثبّت CLI عبر npm، ثم شغّل سيناريو الاختبار باستخدام معرف السيناريو ومعرف البيئة:
npm install -g apidog-cli
apidog run --access-token $APIDOG_ACCESS_TOKEN -t 1234567 -e 89012 -r cli
شرح الأعلام الأساسية:
-
--access-token: يمرّر رمز وصول Apidog. خزّنه دائمًا كسرّ ولا تضعه في المستودع. -
-t: معرف سيناريو الاختبار. -
-e: معرف البيئة، ويحدد المتغيرات مثل base URL والقيم البيئية. -
-r: نوع التقرير. القيم المدعومة تشملcliوhtmlوjsonوjunit.
أعلام مفيدة عند الحاجة:
-
-nأو--iteration-count: تكرار التشغيل عددًا محددًا من المرات. -
-dأو--iteration-data: تشغيل مدفوع بالبيانات من ملف CSV/JSON أو معرف مجموعة بيانات مخزنة. -
--out-dir: تحديد مجلد إخراج التقارير. -
--upload-report: رفع ملخص التقرير إلى سحابة Apidog لعرضه داخل التطبيق. -
--on-error: التحكم بسلوك الفشل باستخدامcontinueأوendأوignore. -
--project <id>و--branch <name>: استهداف مشروع أو فرع محدد.
للتفاصيل الكاملة حول الأوامر، راجع الدليل الكامل لـ Apidog CLI واختبار REST API من سطر الأوامر.
ملف .drone.yml كامل لاختبارات Apidog
ضع الملف التالي في جذر المستودع:
kind: pipeline
type: docker
name: apidog-api-tests
steps:
- name: run-api-tests
image: node:20-alpine
environment:
APIDOG_ACCESS_TOKEN:
from_secret: apidog_access_token
commands:
- npm install -g apidog-cli
- apidog run --access-token $APIDOG_ACCESS_TOKEN -t 1234567 -e 89012 -r cli
trigger:
branch:
- main
event:
- push
- pull_request
عدّل القيم التالية:
- استبدل
1234567بمعرف سيناريو الاختبار في Apidog. - استبدل
89012بمعرف البيئة. - تأكد من إنشاء سر باسم
apidog_access_tokenفي Drone.
باستخدام reporter من نوع cli، ستظهر تفاصيل النجاح والفشل مباشرة داخل سجل بناء Drone.
تخزين الأسرار في Drone CI
لا تضع رمز Apidog داخل .drone.yml. استخدم أسرار Drone ثم اربطها بمتغير بيئة داخل الخطوة:
environment:
APIDOG_ACCESS_TOKEN:
from_secret: apidog_access_token
إنشاء السر من واجهة Drone
- افتح المستودع في Drone.
- انتقل إلى Settings.
- افتح Secrets.
- أضف سرًا باسم:
apidog_access_token
- ضع رمز وصول Apidog كقيمة.
إنشاء السر باستخدام Drone CLI
drone secret add \
--repository your-org/your-repo \
--name apidog_access_token \
--data your-apidog-token
قد تختلف أعلام Drone CLI حسب الإصدار، لذلك راجع وثائق إصدارك عند الحاجة.
يدعم Drone أيضًا الأسرار المشفرة داخل المستودع عبر drone encrypt وتعريف YAML من نوع kind: secret، لكن أسرار المستودع عبر الواجهة أو CLI هي الخيار الأبسط لمعظم الفرق.
لمزيد من التفاصيل حول المصادقة في CLI، راجع مصادقة Apidog CLI.
تحديد شروط التشغيل حسب الفرع والحدث
في Drone لديك مستويان للتحكم في وقت التشغيل:
-
trigger: يحدد هل يعمل المسار بالكامل أم لا. -
when: يحدد هل تعمل خطوة معينة أم لا.
تشغيل المسار فقط على main
trigger:
branch:
- main
event:
- push
- pull_request
في هذا المثال يعمل المسار فقط عند push أو pull_request على الفرع main.
تشغيل خطوة الاختبار فقط في حالات محددة
steps:
- name: run-api-tests
image: node:20-alpine
environment:
APIDOG_ACCESS_TOKEN:
from_secret: apidog_access_token
commands:
- npm install -g apidog-cli
- apidog run --access-token $APIDOG_ACCESS_TOKEN -t 1234567 -e 89012 -r cli
when:
branch:
- main
event:
- push
استخدم when إذا كان لديك خطوات أخرى تريد تشغيلها على كل الفروع، لكن اختبارات API الثقيلة تريد حصرها على main.
يدعم Drone أحداثًا مثل:
pushpull_requesttagpromoterollbackcroncustom
كما يدعم أنماط glob ومفاتيح التضمين والاستبعاد.
عرض تقارير الاختبار بدون متجر تحف مدمج
Drone لا يوفر استضافة تحف مدمجة. أمامك خياران عمليان.
الخيار الأول: عرض النتائج في سجل البناء
استخدم reporter من نوع cli:
apidog run --access-token $APIDOG_ACCESS_TOKEN -t 1234567 -e 89012 -r cli
هذا يكفي في معظم الحالات، لأن نتائج الاختبار والتأكيدات الفاشلة تظهر مباشرة في سجل Drone.
الخيار الثاني: إنشاء تقرير HTML ورفعه إلى S3
استخدم html مع --out-dir، ثم أضف خطوة رفع باستخدام plugins/s3:
steps:
- name: run-api-tests
image: node:20-alpine
environment:
APIDOG_ACCESS_TOKEN:
from_secret: apidog_access_token
commands:
- npm install -g apidog-cli
- apidog run --access-token $APIDOG_ACCESS_TOKEN -t 1234567 -e 89012 -r cli,html --out-dir reports
- name: upload-report
image: plugins/s3
settings:
bucket: my-bucket
region: us-east-1
source: reports/**/*
target: /apidog-reports
access_key:
from_secret: aws_access_key
secret_key:
from_secret: aws_secret_key
ما يحدث هنا:
-
reports/**/*يحدد الملفات التي سيتم رفعها. -
targetيحدد بادئة المسار داخل التخزين. - بيانات اعتماد AWS تُقرأ من أسرار Drone بنفس طريقة رمز Apidog.
للتعمق في محتوى التقارير وكيفية قراءتها، راجع تقارير اختبار Apidog CLI.
إضافة اختبارات مدفوعة بالبيانات
إذا كان السيناريو يحتاج إلى التشغيل على عدة مدخلات، استخدم -d مع ملف CSV أو JSON:
commands:
- npm install -g apidog-cli
- apidog run --access-token $APIDOG_ACCESS_TOKEN -t 1234567 -e 89012 -d ./data.csv -r cli
مثال بسيط لملف data.csv:
userId,expectedStatus
1001,200
1002,200
9999,404
كل صف يصبح تكرارًا مستقلًا، ويمكن ربط قيم الأعمدة بمتغيرات السيناريو داخل Apidog.
للنمط الكامل، راجع اختبار Apidog CLI المدفوع بالبيانات.
مقارنة النمط مع أدوات CI الأخرى
نمط التشغيل نفسه يعمل تقريبًا في أي نظام CI:
- استخدم صورة تحتوي Node.
- ثبّت
apidog-cli. - مرّر رمز الوصول من secrets.
- شغّل
apidog run.
الاختلاف يكون فقط في صياغة YAML الخاصة بالأداة. إذا كنت تستخدم أدوات أخرى بجانب Drone، راجع أدلة GitHub Actions وAzure Pipelines.
ملاحظة مهمة: Apidog CLI مخصص لاختبارات وظيفية واختبارات عقود API، وليس لاختبار تحميل واسع النطاق. إذا كنت تحتاج آلاف المستخدمين الافتراضيين المتزامنين، استخدم أداة متخصصة لاختبار التحميل.
بناء الاختبارات بصريًا وتشغيلها من CI
سير العمل العملي يكون كالتالي:
- صمّم نقاط النهاية داخل Apidog.
- أنشئ سيناريوهات اختبار.
- أضف التأكيدات على status code وحقول الاستجابة.
- اربط السيناريو ببيئة تحتوي base URL والمتغيرات.
- احصل على معرف السيناريو ومعرف البيئة.
- ضع أمر
apidog runداخل.drone.yml.
عند تحديث اختبار داخل تطبيق Apidog، سيستخدم تشغيل Drone التالي النسخة المحدثة مباشرة. لا تحتاج إلى الحفاظ على نسخة ثانية من الاختبارات داخل المستودع.
قم بتنزيل Apidog مجانًا لبناء أول سيناريو اختبار، ثم أضف ملف .drone.yml أعلاه لتشغيله مع كل عملية دفع.
الأسئلة المتكررة
ما هو Drone CI؟
Drone هو نظام CI/CD مفتوح المصدر ومبني على الحاويات. يعرّف المسارات داخل ملف .drone.yml، ويشغّل كل خطوة داخل حاوية Docker مستقلة، مما يجعل البناء قابلًا للتكرار وأسهل في العزل.
هل Drone CI مجاني؟
مشروع Drone الأساسي مفتوح المصدر ومجاني للاستضافة الذاتية. بعد استحواذ Harness، أصبح Drone هو Harness CI Community Edition، مع توفر مستويات مؤسسية مدفوعة.
هل Drone CI مفتوح المصدر؟
نعم. Drone من أدوات CI المبنية على الحاويات، ولا يزال بإمكانك استضافته ذاتيًا واستخدامه كمشروع مفتوح المصدر.
كيف تستخدم Drone CI؟
تضع ملف .drone.yml في المستودع. عند حدوث push أو pull_request، يقرأ Drone الملف ويشغّل الخطوات المحددة داخل حاويات. يمكن أن تشمل الخطوات بناء التطبيق، تشغيل اختبارات الوحدة، تشغيل اختبارات API، أو رفع التقارير إلى تخزين خارجي.
كيف تخزّن الأسرار في Drone CI؟
أضف السر من واجهة Drone أو باستخدام drone secret add، ثم أشر إليه داخل environment أو settings باستخدام from_secret. بهذه الطريقة لا يظهر الرمز داخل ملف YAML.
environment:
APIDOG_ACCESS_TOKEN:
from_secret: apidog_access_token
هل يمكن تشغيل اختبارات Apidog في CI بدون كتابة سكريبتات اختبار؟
نعم. تبني سيناريوهات الاختبار بصريًا داخل Apidog، ثم تشغّلها في Drone بأمر واحد:
apidog run --access-token $APIDOG_ACCESS_TOKEN -t 1234567 -e 89012 -r cli
تحتاج فقط إلى صورة Node، وتثبيت apidog-cli، وتمرير رمز الوصول من أسرار Drone.
Top comments (0)