Featured image of post Gitea Actions, علل لاتنتهي

Gitea Actions, علل لاتنتهي

فكرة جيدة على الورق لكن فعليا كارثة.

فريقي يستخدم حاليا Jenkins, وبسبب كمية التعقيد المطلوبه للworkflows المعقدة وصعبة القرائة, اخترنا المحاولة لانتقال لنظام CI/CD مختلف. نحن نستخدم Gitea فعلا للمستودعات, لذلك Gitea Actions حل سهل وسريع ومدمج مباشرة بالمنصه التي نستخدمها.

Gitea يقولون ان كل شيء مدعوم الا بعض الاشياء المتقدمه, يعني المفروض ان استخدام Gitea Actions سيكون سهل وسريع.

https://docs.gitea.com/usage/actions/comparison

هههه يا ريت.

Private reusable workflows

في GitHub Actions تقدر تستخدم Workflows من مستودعات خاصة طالما ان ال runner لديه وصول لها عبر تعديل صلاحية الToken.

Gitea Actions لا يوجد لديه امكانية تعديل صلاحيات الtoken, لكن تقدر تستخدم PAT بدل الtoken العادي وهكذا يصبح لديك وصول كامل.

لا, لان الYAML parser لن يقبل بان تضيف PAT على رابط تنزيل ال workflow.

هذه مشكلة حتى للمنظمات التي تستخدم وضع “limited”, يعني عامه لكن يجب ان تسجل دخولك, وشيء غريب ان الrunner نفسه ليس مسجل كمستخدم في Gitea.

https://github.com/go-gitea/gitea/issues/25929

مشكله من 2023, لحد الان لم يصلحوها

لا مشكلة, نعمل منظمه عامة مخصصه فقط للCI/CD.

جميع الخطوات داخل الreusable workflow تظهر كخطوة واحده

Gitea يقوم بعد الخطوات عبر قرائة الخطوات من ملف الworkflow. عندما وعندما تستخدم reusable workflow, يرى خطوة واحده فقط بدلا من الخطوات داخل الملف. النتيجة ان كل السجلات تظهر تحت خطوة واحدة. هذا مزعج خاصة عندما يكون هناك خطا وتحتاج ان تعرف السبب.

https://github.com/go-gitea/gitea/issues/26187

تم رفع بلاغ عن المشكلة من 2023, لحد الان لم تحل.

يعني ممكن تتعود عليه, تضيف Emoji لكل خطوة وتبحث عن كل خطوة في المتصفح

فقط ينزل الملفات مرة واحده

اذا تستخدم Tag لاصدار رئيسي, مثلا V4, من المتوقع ان التحديثات الفرعية والاصلاحات يتم ايضا تنزيلها. يعني انت ستستخدم اخر اصدار يتبع لV4, هكذا تعمل GitHub Actions.

كالعادة في Gitea لا يعمل هذا, هناك كاش في الrunner بحيث انه فقط يقوم بتنزيل الaction مره واحده ثم لا يتاكد من التحديثات ابدا.

هذه مشكلة اكبر اذا كنت تريد ان تستخدم reusable workflow, لان على الاغلب لن تستخدم tag بل فرع بحيث تكون التحديثات متدحرجة.

https://gitea.com/gitea/act_runner/issues/726

لا مشكلة, تقوم باستخدام Tags لكل شيء, ثم تستخدم Renovate لتحديثات تلقائيا, اكيد هذا الحل الابسط

فقط للactions على GitHub وليست على Gitea.

Renovate لا يدعم تحديث الTags للactions في Gitea.

https://github.com/renovatebot/renovate/discussions/27734

ٌRenovate يقوم بالبحث تلقائيا عن تحديثات للactions في GitHub وليس Gitea, حتى لما يكون مستضاف على Gitea.

يعني تحديثات تلقائيه لمستودعات على Gitea غير ممكنه.

اتوقع الامر اصبح واضح.

الملخص

Gitea Actions جيده اذا فقط تستخدمها لمستودع واحد دون حدود على عدد الاختبارات وبدون تحديثات تلقائيا واذا كنت لا تستخدم اي شيء غير عام.

محدوده جدا!

بالاضافة لهذه المشاكل الكبيرة, التعامل مع http proxy في Actions كارثة. متغير NOPROXY الذي يحتوي قائمة عنواين مستثناه من البروكسي لا يعتمد عليه ابدا. في الكثير من الاحيان يتم تجاهله, لكن حتى اكون عادل, على الاغلب هذه مشكلة Actions بشكل عام, اكثر من مشكلة Gitea.

بعد ان واجهت مشاكل كثيره, اغلبيتها معروفة من سنتين او اكثر, صعب ان اعتمد على Gitea Actions, على الاغلب ستكون هناك مشاكل اكثر ستظهر فقط عندما فعلا نبدء نعتمد على الworkflows للتطوير والاختبار. الظاهر ان GitLab فعلا هو الخيار الافضل.

FarisZR
مبني باستخدام Hugo
قالب Stack مصمم من Jimmy