فريقي يستخدم حاليا 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 فعلا هو الخيار الافضل.