هذا المشروع مصنوع من مكونين:
| التبعية | متطلبات الإصدار |
|---|---|
| جافا | 17 |
| مافن | 3.9 |
| MySQL | 8.3 |
| الممر | 10.13 |
| CLOC 1 | 2.00 |
| جيت 1 | 2.43 |
قبل اختيار ما إذا كنت ستبدأ بقائمة نظيفة أو قاعدة بيانات مسبقة السكان ، تأكد من استيفاء المتطلبات التالية:
تم تعيين المنطقة الزمنية لقاعدة البيانات على +00:00 . يمكنك التحقق من ذلك عبر:
SELECT @@ global . time_zone , @@ session . time_zone ; يتم ON جدولة الحدث. يمكنك التحقق من ذلك عبر:
SELECT @@ global . event_scheduler ; يتم ضبط التسجيل الثنائي أثناء إنشاء وظائف مخزنة على 1 . يمكنك التحقق من ذلك عبر:
SELECT @@ global . log_bin_trust_function_creators ; قاعدة بيانات gse موجودة. لإنشائها:
CREATE DATABASE gse CHARACTER SET utf8 COLLATE utf8_bin; مستخدم gseadmin موجود. لإنشاء واحدة ، قم بتشغيل:
CREATE USER IF NOT EXISTS ' gseadmin ' @ ' % ' IDENTIFIED BY ' Lugano2020 ' ;
GRANT ALL ON gse. * TO ' gseadmin ' @ ' % ' ;إذا كنت تفضل أن تبدأ بقاعدة بيانات فارغة ، فلا يوجد شيء آخر لتفعله. سيتم إنشاء الجداول المطلوبة من خلال ترحيل الممر أثناء بدء التشغيل الأولي للخادم. ومع ذلك ، إذا كنت ترغب في أن تكون قاعدة البيانات المحلية الخاصة بك محسوبة مسبقًا بالبيانات التي جمعناها ، فيمكنك استخدام تفريغ SQL المضغوط الذي نقدمه. نستضيف هذا التفريغ ، إلى جانب التكرارات الأربعة السابقة ، على Dropbox. بعد اختيار وتنزيل تفريغ قاعدة البيانات ، يمكنك استيراد البيانات عن طريق التنفيذ:
gzcat < gse.sql.gz | mysql -u gseadmin -pLugano2020 gse قبل محاولة تشغيل الخادم ، يجب عليك إنشاء رمز الوصول الشخصي لـ GitHub (PAT). يعتمد الزاحف على واجهة برمجة تطبيقات GraphQL ، والتي يتعذر الوصول إليها دون مصادقة. للوصول إلى المعلومات التي توفرها واجهة برمجة تطبيقات Github ، يجب أن يتضمن الرمز المميز نطاق repo .
بمجرد الانتهاء من ذلك ، يمكنك تشغيل الخادم محليًا باستخدام Maven:
mvn spring-boot:runإذا كنت ترغب في الاستفادة من الرمز المميز عند الزحف ، فحدده في وسيطات التشغيل:
mvn spring-boot:run -Dspring-boot.run.arguments=--ghs.github.tokens= < your_access_token >بدلاً من ذلك ، يمكنك تجميع الجرة وتشغيلها مباشرة:
mvn clean package
ln target/ghs-application- * .jar target/ghs-application.jar
java -Dghs.github.tokens= < your_access_token > -jar target/ghs-application.jar فيما يلي قائمة بالوسائط الخاصة بالمشروع التي يدعمها التطبيق الذي يمكنك العثور عليه في application.properties .
| اسم متغير | يكتب | القيمة الافتراضية | وصف |
|---|---|---|---|
ghs.github.tokens | قائمة <Tring> | قائمة رموز الوصول الشخصية Github (PATS) التي سيتم استخدامها لاستخراج واجهة برمجة تطبيقات GitHub. يجب ألا تحتوي على سلاسل فارغة. | |
ghs.github.api-version | خيط | 2022-11-28 | نسخة API Github المستخدمة في مختلف العمليات. |
ghs.git.username | خيط | تسجيل الدخول إلى حساب GIT المستخدم للتفاعل مع نظام التحكم في الإصدار. | |
ghs.git.password | خيط | كلمة المرور المستخدمة لمصادقة حساب GIT المحدد. | |
ghs.git.config | خريطة <سلسلة ، سلسلة> | انظر application.properties | تكوينات GIT خاصة بالتطبيق 2 . |
ghs.git.folder-prefix | خيط | GHS-Clone- | البادئة المستخدمة في الدلائل المؤقتة التي يتم استنساخ المستودعات التي تم تحليلها فيها. يجب ألا يكون فارغًا. |
ghs.git.ls-remote-timeout-duration | مدة | 1M | الحد الأقصى للوقت المسموح به لإدراج أجهزة التحكم عن بعد من مستودعات GIT. |
ghs.git.clone-timeout-duration | مدة | 5M | الحد الأقصى للوقت المسموح به لاستنساخ مستودعات الجيت. |
ghs.cloc.max-file-size | البيانات | 25 ميجابايت | الحد الأقصى لحجم الملف للتحليل مع cloc . |
ghs.cloc.timeout-duration | مدة | 5M | الحد الأقصى للوقت المسموح به لتنفيذ أمر cloc . |
ghs.crawler.enabled | منطقية | حقيقي | يحدد ما إذا تم تمكين وظيفة زحف المستودع. |
ghs.crawler.minimum-stars | int | 10 | الحد الأدنى الشامل لعدد النجوم التي يحتاجها المشروع من أجل التقاطها من قبل الزاحف. يجب ألا تكون سلبية. |
ghs.crawler.languages | قائمة <Tring> | انظر application.properties | قائمة أسماء اللغة التي سيتم استهدافها أثناء الزحف. يجب ألا تحتوي على سلاسل فارغة. لضمان العمليات المناسبة ، يجب أن تتطابق الأسماء مع الأسماء المحددة في اللغوي. |
ghs.crawler.start-date | تاريخ | 2008-01-01T00: 00: 00z | تاريخ بدء الزاحف الافتراضي: أقرب تاريخ لمستودع الزحف في غياب وظائف الزحف السابقة. تنسيق القيمة: yyyy-MM-ddTHH:MM:SSZ . |
ghs.crawler.delay-between-runs | مدة | PT6H | التأخير بين الزاحف المتتالي يعمل ، معبراً عنه كسلسلة مدة. |
ghs.analysis.enabled | منطقية | حقيقي | يحدد ما إذا تم تمكين مهمة التحليل. |
ghs.analysis.delay-between-runs | مدة | PT6H | التأخير بين التحليل المتتالي يعمل ، معبراً عنه كسلسلة مدة. |
ghs.analysis.max-pool-threads | int | 3 | أقصى قدر من المواضيع الحية المخصصة لتحليل المستودعات في وقت واحد. يجب أن تكون إيجابية. |
ghs.clean-up.enabled | منطقية | حقيقي | يحدد ما إذا تم تمكين الوظيفة المسؤولة عن إزالة المستودعات غير المتوفرة (التنظيف). |
ghs.clean-up.cron | crontrigger | 0 0 0 * * 1 | التأخير بين عمليات تنظيف المستودع المتتالي ، يتم التعبير عنها كتعبير كرون الربيع. |
أسهل طريقة لإطلاق الواجهة الأمامية هي من خلال البرنامج النصي NPM المقدم:
npm run dev يمكنك أيضًا استخدام خادم الويب المدمج الخاص بـ IDE الخاص بك ، أو أي خادم ويب آخر من اختيارك. بغض النظر عن الطريقة التي تختارها للاستضافة ، فإن الكورس الخلفي يقيدك على استخدام المنافذ 3030 و 7030 .
يتكون مكدس النشر من الحاويات التالية:
| اسم الخدمة/الحاوية | صورة | وصف | تمكين بشكل افتراضي |
|---|---|---|---|
gse-database | MySQL | قاعدة بيانات النظام الأساسي | ✅ |
gse-migration | الممر | عمليات تنفيذ مخطط قاعدة البيانات | ✅ |
gse-backup | متعب/db-backup | النسخ الاحتياطية لقاعدة البيانات الآلية | ❎ |
gse-server | SEART/GHS Server | تطبيق SPRING BOOT Server | ✅ |
gse-website | Seart/GHS-Website | يعمل خادم الويب Nginx كمورد HTML | ✅ |
gse-watchtower | containrrr/watchtower | تحديثات صورة Docker التلقائي | ❎ |
يمكن تمثيل سلسلة تبعية الخدمة على النحو التالي:
الرسم البياني RL
GSE-Migration-> | Service_Healthy | gse-database
gse-backup-> | service_completed_succisly | هجرة GSE
gse-server-> | service_completed_succectionly | هجرة GSE
gse-website-> | service_healthy | خادم GSE
GSE-WatchTower-> | Service_Healthy | GSE-Website
النشر بسيط مثل ، في دليل Docker-Cormse ، تشغيل:
docker-compose -f docker-compose.yml up -d من المهم أن نلاحظ أن خطوات إعداد قاعدة البيانات الموضحة في القسم السابق ليست ضرورية عند التشغيل مع Docker. وذلك لأن خصائص البيئة التي تم تمريرها إلى الخدمة ستقوم تلقائيًا بإنشاء مستخدم MySQL وقاعدة البيانات أثناء بدء التشغيل الأولي. ومع ذلك ، لا تمتد هذه الراحة إلى بيانات قاعدة البيانات ، حيث أن النشر الافتراضي ينشئ قاعدة بيانات فارغة. إذا كنت ترغب في استخدام البيانات الموجودة من القمامة ، فستحتاج إلى تجاوز نشر docker-compose لتوظيف صورة قاعدة بيانات مخصصة تتضمن تفريغ. لتحقيق ذلك ، قم بإنشاء ملف docker-compose.override.yml مع المحتويات التالية:
version : " 3.9 "
name : " gse "
services :
gse-database :
image : seart/ghs-database:latestستتضمن الصورة أعلاه تفريغ قاعدة البيانات الطازجة ، على الأقل 15 يومًا خلف بيانات النظام الأساسي الفعلي. للحصول على إصدار قاعدة بيانات أكثر تحديدًا ، راجع صفحة Docker Hub. تذكر تحديد ملف التجاوز أثناء النشر:
docker-compose -f docker-compose.yml -f docker-compose.override.yml up -d يتم الاحتفاظ ببيانات قاعدة البيانات نفسها في وحدة تخزين gse-data ، في حين يتم الاحتفاظ بسجلات خلفية مفصلة في جبل محلي يسمى السجلات. يمكنك أيضًا استخدام ملف التجاوز هذا لتغيير تكوينات الخدمات الأخرى. على سبيل المثال ، تحديد PAT الخاص بك للزاحف:
version : " 3.9 "
name : " gse "
services :
# other services omitted...
gse-server :
environment :
GHS_GITHUB_TOKENS : " A single or comma-separated list of token(s) "
GHS_CRAWLER_ENABLED : " true " يمكن تجاوز أي من خصائص التمهيد الربيعي أو الخصائص الخاصة بالتطبيق المذكورة أعلاه. ضع في اعتبارك أن خاصية مثل ghs.xy تتوافق مع إعداد بيئة خدمة GHS_X_Y .
مثال آخر هو خدمة النسخ الاحتياطي لقاعدة البيانات الآلية ، والتي يتم تعطيلها افتراضيًا. إذا كنت ترغب في إعادة تمكينه ، فسيتعين عليك إضافة ما يلي إلى ملف تجاوز:
version : " 3.9 "
name : " gse "
services :
# other services omitted...
gse-backup :
restart : always
entrypoint : " /init " إذا كان لديك أفكار لميزة ما تود أن ترى تنفيذها أو إذا كان لديك أي أسئلة ، فنحن نشجعك على إنشاء مناقشة جديدة. من خلال بدء مناقشة ، يمكنك التعامل مع المجتمع وفريقنا ، وسنرد على الفور لمعالجة استفساراتك أو النظر في طلبات الميزات الخاصة بك.
للإبلاغ عن أي مشكلات أو أخطاء تواجهها ، قم بإنشاء مشكلة جديدة. إن توفير معلومات مفصلة حول المشكلة التي تواجهها سيساعدنا على فهمها ومعالجتها بشكل أكثر فعالية. كن مطمئنًا ، نحن ملتزمون بمراجعة القضايا التي تثيرها بشكل متسرع والاستجابة لها ، وتعمل بشكل تعاوني على حل أي أخطاء وتحسين تجربة المستخدم الإجمالية.
الرجوع إلى المساهمة. md لمزيد من المعلومات.
للقيام بذلك ، يجب أن تكون على دراية بأدوات وممارسات ترحيل قاعدة البيانات. يستخدم هذا المشروع Flyway بواسطة Redgate. القاعدة العامة لمعالجة المخطط هي: إنشاء ترحيل جديدة ، والامتناع عن تحرير تلك الموجودة .
مطلوب فقط في الإصدارات قبل 1.7.0 ↩ ↩ 2
نفصل تكوينات GIT على مستوى التطبيق عن تلك التي يستخدمها المستخدم لتجنب أي تعارضات محتملة أو ارتباك. على هذا النحو ، يتم إنشاء ملف تكوين خاص بالتطبيق في الدليل المؤقت عند بدء التشغيل. تعتمد الإعدادات التي تمت إضافتها إلى الملف على إدخالات ghs.git.config في application.properties . لاحظ أن أقسام التكوين الفرعية غير مدعومة حاليًا. ↩