تخطَّ إلى المحتوى

المساهمة

الإعداد

أجرِ تغييرًا صغيرًا واحدًا في المكان الصحيح وأرسله في طلب سحب (pull request).

  • افتح بلاغًا (issue) أولًا، أو علّق على بلاغ موجود. اذكر ما تريد تغييره ولماذا.
  • انتظر الرد، حتى لا تبني شيئًا لن يُدمج.
  • أكمل الإعداد لتتمكن من بناء HolyArrs وتشغيله.

الأسئلة مكانها Discord. والأفكار مكانها r/HolyArrs. أما البلاغات فللأخطاء وخارطة الطريق.

  1. اعثر على الوحدة التي ينتمي إليها تغييرك. الأسماء في الوحدات تطابق أسماء المجلدات، فتنبيه Discord الخاطئ تغيير في alerts.

  2. أجرِ التغيير في app/backend/internal/<module>/ وapp/frontend/src/lib/<module>/. اقصره على إصلاح واحد أو ميزة واحدة.

  3. ابنِ تطبيق الويب، ثم البرنامج، وجرّب التغيير في المتصفح. انظر الإعداد.

  4. شغّل الفحوص المذكورة في الاختبار.

    سترى أنه لا يوجد أي فشل.

  5. إذا غيّرت صفحة، شغّل مشروعها من الاختبارات الشاملة (end-to-end)، مثلًا npm --prefix app/frontend run e2e -- --project=movies.

  6. افتح طلب السحب. اربطه بالبلاغ، واذكر ما تغيّر وكيف اختبرته، وأضف اختبارات للتغيير أو حدّثها.

  7. في أول طلب سحب لك، يطلب منك بوت توقيع اتفاقية ترخيص المساهمين. ردّ بالجملة الواحدة التي يطلبها.

التغيير اذهب إلى
مسار API جديد الوحدات
وحدة جديدة الوحدات. افتح بلاغًا أولًا
ميزة محجوبة الإعداد
نشر إصدار من التطبيق نشر الإصدارات. للقائمين على المشروع فقط

كيف يبدو طلب السحب الجيد

رابط إلى كيف يبدو طلب السحب الجيد
  • اكتب تعليقات تشرح لماذا تفعل الشيفرة ما تفعله. لا أرقام من خارطة الطريق ولا تواريخ ولا أسماء ولا شرطات طويلة في التعليقات.
  • اترك صياغة نصوص التطبيق كما هي، إلا إذا كان البلاغ عن الصياغة.
  • أبقِ مسارات API المنشورة وأسماء الحقول ومفاتيح الإعدادات وأسماء الجداول وأسماء المهام كما هي. أضف، ولا تُعد التسمية أبدًا.

العَرَض. يفشل أحد فحوص البنية. السبب. الرسالة تسمّي الملف والقاعدة. الحل. انقل الشيفرة، أو مرّر بيانات بسيطة من الوحدة الأعلى. انظر الوحدات.

العَرَض. يبدو تطبيق الويب قديمًا. السبب. البرنامج يقدّم نسخة البناء التي ضمّنها في داخله. الحل. ابنِ تطبيق الويب من جديد قبل البرنامج.

العَرَض. لا تبدأ الاختبارات الشاملة. السبب. متصفح الاختبار غير مثبّت. الحل. شغّل npx --prefix app/frontend playwright install chromium.

قواعد يجب أن يلتزم بها طلب السحب
  • تخاطب الوحدة وحدة أخرى عبر خدمتها (Go) أو عبر index.ts الخاص بها (الويب) فقط. لا عبر مخزنها ولا ملفاتها أبدًا.
  • SQL مكانه ملفات store*.go الخاصة بالوحدة فقط، وعلى جداول تلك الوحدة نفسها.
  • يوضع جزء الويب في lib/ui فقط إذا استعملته وحدتان أو أكثر.
  • لا حزم باسم util أو common أو shared أو helpers.
  • كل اتصال بالخارج يمر عبر core/outbound.

الاختبارات تفحص هذه القواعد، فالاستيراد الخاطئ يُفشل البناء. القائمة الكاملة وأسماء الفحوص في الوحدات.

ما الذي يشغّله CI
المهمة تشغّل
Web check وlint وtest وbuild ومجموعة الاختبارات الشاملة
Go go build وgo vet وgo test -timeout 60m ./... على amd64 وarm64، مباشرةً وتحت المحاكاة
Race go test -race ./...
Contract مطابقة openapi.json، وفحوص النطاق على كل مسار API، ومجموعة اختبارات برامج التنزيل
Fault and scale تشغيلات الأعطال، والكتابة البطيئة، والخدمة الخارجية المعطوبة، والذاكرة
Image صورة تطوير تُبنى وتبدأ وتُبلغ عن إصدارها

تفاصيل التشغيلات الطويلة في الاختبار.

HolyArrs مجاني. إذا وفّر عليك وقتًا، امنحه نجمة على GitHub أو ادعمه ماليًا أو ادعُني إلى فنجان قهوة.