ذاكرة التخزين المؤقت ومشاركة وتصحيح مهام سير العمل
في هذه الوحدة، ستتعلم كيفية تحسين الأداء وتمرير البيانات بين المهام واستكشاف أخطاء سير العمل وإصلاحها باستخدام السجلات والرموز المميزة.
لتنفيذ هذه العملية، ستتعلم كيفية:
- تخزين تبعيات ذاكرة التخزين المؤقت لسير عمل أسرع.
- تمرير بيانات البيانات الاصطناعية بين الوظائف.
- تمكين تسجيل تتبع الأخطاء لسير العمل.
- الوصول إلى سجلات سير العمل من واجهة مستخدم GitHub وواجهة برمجة تطبيقات REST.
- استخدم رموز التثبيت المميزة لمصادقة تطبيق GitHub.
تبعيات ذاكرة التخزين المؤقت مع إجراء ذاكرة التخزين المؤقت
عند إنشاء سير عمل، غالبا ما تحتاج إلى إعادة استخدام نفس المخرجات أو تنزيل التبعيات من تشغيل إلى آخر. بدلاً من تنزيل هذه التبعيات مراراً وتكراراً، يمكنك تخزينها مؤقتاً لجعل سير عملك يعمل بشكل أسرع وأكثر كفاءة. يقلل التخزين المؤقت للتبعيات من الوقت المستغرق لتشغيل خطوات معينة في سير العمل، لأن المهام على المشغلات المستضافة على GitHub تبدأ في بيئة ظاهرية نظيفة في كل مرة.
لتخزين التبعيات لوظيفة ما مؤقتا، استخدم إجراء GitHub cache . يقوم هذا الإجراء باسترداد ذاكرة التخزين المؤقت التي تم تعريفها بواسطة مفتاح فريد توفره. عندما يجد الإجراء ذاكرة التخزين المؤقت، فإنه يسترد الملفات المخزنة مؤقتاً إلى المسار الذي قمت بتكوينه. لاستخدام cache الإجراء، تحتاج إلى تعيين بعض المعلمات المحددة:
| المعلمة | وصف | المطلوب |
|---|---|---|
Key |
يشير إلى معرف المفتاح الذي تم إنشاؤه عند الحفظ والبحث عن ذاكرة تخزين مؤقت. | نعم |
Path |
يشير إلى مسار الملف على المشغل للتخزين المؤقت أو البحث. | نعم |
Restore-keys |
يتكون من مفاتيح موجودة بديلة للتخزين المؤقت إذا لم يتم العثور على مفتاح ذاكرة التخزين المؤقت المطلوب. | لا |
steps:
- uses: actions/checkout@v2
- name: Cache NPM dependencies
uses: actions/cache@v2
with:
path: ~/.npm
key: ${{ runner.os }}-npm-cache-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-npm-cache-
في المثال السابق، تم تعيين مجموعة path على ~/.npm تتضمن key نظام تشغيل المشغل وتجزئة SHA-256 لملف package-lock.json. تعد بادئة المفتاح بمعرف (npm-cache في هذا المثال) مفيدة عند استخدام restore-keys النسخ الاحتياطي ولديك عدة ذاكرات تخزين مؤقت.
تمرير البيانات الاصطناعية بين الوظائف
على غرار فكرة التخزين المؤقت للتبعيات داخل سير العمل الخاص بك، يمكنك تمرير البيانات بين المهام داخل نفس سير العمل. يمكنك تمرير البيانات باستخدام upload-artifact الإجراءات و download-artifact . يجب أن تنتظر المهام التي تعتمد على البيانات الاصطناعية لوظيفة سابقة حتى تكتمل المهمة السابقة بنجاح قبل أن تتمكن من تشغيلها. هذا الأسلوب مفيد إذا كان لديك سلسلة من الوظائف التي تحتاج إلى التشغيل بشكل تسلسلي استنادا إلى البيانات الاصطناعية التي تم تحميلها من مهمة سابقة. على سبيل المثال، job_2 يتطلب job_1 استخدام بناء الجملة needs: job_1.
name: Share data between jobs
on: push
jobs:
job_1:
name: Upload File
runs-on: ubuntu-latest
steps:
- run: echo "Hello World" > file.txt
- uses: actions/upload-artifact@v2
with:
name: file
path: file.txt
job_2:
name: Download File
runs-on: ubuntu-latest
needs: job_1
steps:
- uses: actions/download-artifact@v2
with:
name: file
- run: cat file.txt
يحتوي هذا المثال على وظيفتين.
job_1 يكتب بعض النص في file.txt الملف. ثم يستخدم actions/upload-artifact@v2 الإجراء لتحميل هذه الأداة وتخزين البيانات لاستخدامها في المستقبل داخل سير العمل.
job_2
job_1 يتطلب الإكمال باستخدام بناء الجملةneeds: job_1. ثم يستخدم actions/download-artifact@v2 الإجراء لتنزيل تلك الأداة، ثم طباعة محتويات file.txt.
تفعيل تسجيل تصحيح الأخطاء في سير العمل
في بعض الحالات، لا توفر سجلات سير العمل الافتراضية تفاصيل كافية لتشخيص سبب فشل سير عمل معين أو وظيفة أو خطوة معينة. في هذه السيناريوهات، يمكنك تمكين المزيد من تسجيل تتبع الأخطاء لخيارين: التشغيلوالخطوات. قم بتمكين هذا التسجيل التشخيصي عن طريق تعيين اثنين من أسرار المستودع التي تتطلب admin الوصول إلى المستودع إلى true.
- لتمكين تشغيل التسجيل التشخيصي، قم بتعيين
ACTIONS_RUNNER_DEBUGالسر في المستودع الذي يحتوي على سير العمل إلىtrue. - لتمكين التسجيل التشخيصي للخطوة، قم بتعيين
ACTIONS_STEP_DEBUGالسر في المستودع الذي يحتوي على سير العمل إلىtrue.
الوصول إلى سجلات سير العمل في GitHub
عندما تفكر في التنفيذ التلقائي الناجح، فإنك تهدف إلى قضاء أقل قدر من الوقت في النظر إلى ما هو تلقائي حتى تتمكن من التركيز على ما هو ذي صلة. ولكن في بعض الأحيان لا تسير الأمور كما هو مخطط لها، وتحتاج إلى مراجعة ما حدث. يمكن أن تكون عملية تصحيح الأخطاء هذه محبطة.
يحتوي GitHub على تخطيط واضح ومنظم لمساعدتك على التنقل بسرعة بين المهام أثناء الاحتفاظ بسياق خطوة تصحيح الأخطاء الحالية.
لعرض سجلات تشغيل سير العمل في GitHub:
- في المستودع الخاص بك، انتقل إلى علامة التبويب Actions .
- في الجزء الأيمن، حدد سير العمل.
- في قائمة عمليات تشغيل سير العمل، حدد التشغيل.
- ضمن Jobs، حدد الوظيفة.
- قراءة إخراج السجل.
إذا كان لديك العديد من عمليات التشغيل داخل سير العمل، يمكنك تحديد عامل تصفية الحالة بعد تحديد سير العمل وتعيينه إلى Failure لعرض عمليات التشغيل الفاشلة فقط في سير العمل هذا.
الوصول إلى سجلات سير العمل من واجهة برمجة تطبيقات REST
بالإضافة إلى عرض السجلات عبر GitHub، يمكنك استخدام GitHub REST API لعرض سجلات تشغيل سير العمل أو إعادة تشغيل مهام سير العمل أو حتى إلغاء تشغيل سير العمل. لعرض سجل تشغيل سير العمل باستخدام واجهة برمجة التطبيقات، أرسل GET طلبا إلى نقطة نهاية السجلات. ضع في اعتبارك أن أي شخص لديه حق الوصول للقراءة إلى المستودع يمكنه استخدام نقطة النهاية هذه. إذا كان المستودع خاصاً، فيجب عليك استخدام الرمز المميز للوصول مع النطاق repo.
على سبيل المثال، GET يتبع طلب عرض سجل تشغيل سير عمل معين هذا المسار:
GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs
تحديد وقت استخدام رمز تثبيت مميز من تطبيق GitHub
عند تثبيت تطبيق GitHub على حساب، يمكنك مصادقته كتثبيت تطبيق باستخدام installation access token لطلبات REST وGraphQL API. تسمح هذه الخطوة للتطبيق بالوصول إلى الموارد المملوكة للتثبيت، على افتراض أنه تم منح التطبيق حق الوصول والأذونات المطلوبة إلى المستودع. تنسب طلبات REST أو GraphQL API التي تم إجراؤها بواسطة تثبيت التطبيق إلى التطبيق.
في المثال التالي، يمكنك استبدال INSTALLATION_ACCESS_TOKEN برمز الوصول إلى التثبيت:
curl --request GET \
--url "https://api.github.com/meta" \
--header "Accept: application/vnd.github+json" \
--header "Authorization: Bearer INSTALLATION_ACCESS_TOKEN" \
--header "X-GitHub-Api-Version: 2022-11-28"
يمكنك أيضا استخدام رمز مميز للوصول إلى التثبيت للمصادقة على الوصول إلى Git المستند إلى HTTP. يجب أن يكون لدى Contents تطبيقك إذن المستودع. يمكنك بعد ذلك استخدام رمز الوصول إلى التثبيت ككلمة مرور HTTP.
يمكنك استبدال TOKEN في المثال برمز الوصول إلى التثبيت:
git clone https://x-access-token:TOKEN@github.com/owner/repo.git