JavaRush /مدونة جافا /Random-AR /نحن نكتب المشروع. أضف SpringBoot وقم بإعداد عملية CI - "م...
Roman Beekeeper
مستوى

نحن نكتب المشروع. أضف SpringBoot وقم بإعداد عملية CI - "مشروع Java من الألف إلى الياء"

نشرت في المجموعة
مقال من سلسلة حول إنشاء مشروع Java (توجد روابط لمواد أخرى في النهاية). هدفه هو تحليل التقنيات الرئيسية، والنتيجة هي كتابة روبوت برقية. تحياتي لكم أيها القراء الأعزاء. كما هو موضح في الجزء السابق ، سنسير وفقًا للخطة. لقد أنشأنا مشروعًا بالفعل وحان الوقت لملئه بالكود. الآن ستتم إضافة كافة المشكلات كالتزامات منفصلة. سأصف كل ما هو ضروري هنا. إذا فاتني شيء ما أو لم أصفه بشكل واضح بما فيه الكفاية، اسأل في التعليقات، وسأحاول الإجابة."مشروع جافا من الألف إلى الياء": نحن نكتب مشروعًا.  إضافة SpringBoot وتكوين عملية CI - 1

نكتب JRTB-0M

نحتاج في هذه المهمة إلى إضافة إطار عمل SpringBoot فارغ للعمل المستقبلي. سنفعل ذلك بنفس الطريقة التي فعلناها في المقالة حول SpringBoot + Flyway . قم بتنزيل المشروع وافتحه في IDEA وقم بإنشاء فرع جديد يسمى JRTB-0 . لقد وصفت كيفية القيام بذلك من خلال فكرة هنا . وهذا سيسهل علينا متابعة العمل في المستقبل. "مشروع جافا من الألف إلى الياء": نحن نكتب مشروعًا.  إضافة SpringBoot وتكوين عملية CI - 2هل تعلم بالفعل أنه لم يعد هناك فرع رئيسي ؟ الآن يطلق عليه بشكل محايد - رئيسي . لذلك اعتدنا على ذلك. على الرغم من ذلك، لنكون صادقين، يمكننا دائمًا إعادة تسميته مرة أخرى إلى master. نذهب إلى Spring Initializr ونقوم بإنشاء إطار عمل SpringBoot لروبوتنا. "مشروع جافا من الألف إلى الياء": نحن نكتب مشروعًا.  إضافة SpringBoot وتكوين عملية CI - 3في الوقت الحالي، الإصدار الأحدث من Boot Sprint المعروض هو 2.3.7، فلنأخذه. سأصف الإعدادات التالية بشكل منفصل:
  • المشروع: مشروع Maven - لقد ناقشنا بالفعل Maven هنا وهنا . لذلك، بالإضافة إلى ذلك، سأصف فقط ما لم أفصح عنه في المقالات السابقة. إذا كانت هناك مثل هذه "البقع البيضاء" بالطبع)
  • اللغة: جافا - كل شيء واضح هنا. إذا كانت هناك رغبة، فيمكننا إعادة كتابة هذا الأمر في Kotlin. لقد اشتريت للتو كتابًا بعنوان Kotlin in Action، وسنتعلم Kotlin معًا))
  • Spring Boot: 2.3.7 - نأخذ أصغر إصدار معروض للتخلص من أي مشاكل. هذه بالفعل نسخة حديثة تمامًا من الحذاء.
البيانات الوصفية للمشروع:
  • المجموعة: com.github.javarushcommunity - هنا نختار المجال الذي تتم استضافة مجموعة المستودعات الخاصة بنا عليه.
  • القطعة الأثرية: javarush-telegrambot - الحد الأقصى لوصف المشروع.
  • الاسم: Javarush TelegramBot - سنكتبه بالكامل هنا.
  • الوصف: روبوت Telegram لـ Javarush من مجتمع إلى مجتمع - إليك وصف أكثر تفصيلاً للمشروع.
  • اسم الحزمة: com.github.javarushcommunity.jrtb - هنا يمكنك بالفعل استخدام اختصار لاسم المشروع. الآن سيبدأ المشروع بهذه الحزمة. لماذا هذا العدد الكبير؟ لذلك عندما نضيف مشاريع أخرى إلى مسار الفصل، ستكون في حزم مختلفة. كل بطريقته الفريدة. هذا مهم للحفاظ على مبادئ OOP.
  • التعبئة والتغليف: الجرة هي معيارنا)
  • جافا: 11 - سنكون متقدمين بخطوة. لا أعتقد أنني سأستخدم الابتكارات بعد جافا الثامنة، ولكن فليكن. إنه لا يطلب طعاماً)... هذا القرار سيعطينا بيضة عيد الفصح الصغيرة في المستقبل)
لن نضيف أي تبعيات في الوقت الحالي. نحن لا نحتاج هذا لهذه المهمة. بعد ملء كل هذا، نحصل على (هذا رابط للمشروع الذي تم إنشاؤه): "مشروع جافا من الألف إلى الياء": نحن نكتب مشروعًا.  إضافة SpringBoot وتكوين عملية CI - 4بعد ملئه، انقر فوق "إنشاء" وأضف جميع العناصر الداخلية في الأرشيف إلى مشروعنا. "مشروع جافا من الألف إلى الياء": نحن نكتب مشروعًا.  أضف SpringBoot وقم بتكوين عملية CI - 5إضافة ملفات إلى المشروع. ونتيجة لذلك، لدينا تطبيق. للتحقق مما إذا كان قد تم تجميعه على الإطلاق، انتقل إلى المحطة واكتب: $ mvn clean package"مشروع جافا من الألف إلى الياء": نحن نكتب مشروعًا.  إضافة SpringBoot وتكوين عملية CI - 6 إذا كان لديك نفس الشيء من هنا، فكل شيء على ما يرام: تم تجميع المشروع، وjarnik جاهز بالفعل في المجلد الهدف. عند هذه النقطة، المهمة الموجودة في الوصف جاهزة. انها بسيطة، أليس كذلك؟ لذلك، نلتزم وندفع إلى فرعنا: "مشروع جافا من الألف إلى الياء": نحن نكتب مشروعًا.  إضافة SpringBoot وتكوين عملية CI - 7نضيف اسم مهمتنا في بداية وصف الالتزام، بحيث يتضح لاحقًا في إطار المهمة التي تم إنجاز العمل فيها. انقر فوق "الالتزام والدفع " ... "مشروع جافا من الألف إلى الياء": نحن نكتب مشروعًا.  إضافة SpringBoot وتكوين عملية CI - 8مرة أخرى، نقوم بمراجعة والتحقق مما نريد دفعه بالضبط من المستودع المحلي إلى المستودع البعيد، والتأكد من أن كل شيء على ما يرام، انقر فوق " دفع" . ما هي خطوتنا التالية؟ وفقًا لجميع القواعد (التي يمكن قراءتها في هذه المقالة ، في الجزء المتعلق بتدفق GitHub)، تحتاج إلى إنشاء طلب سحب للفرع الرئيسي وانتظار قيام أحد أعضاء الفريق بمراجعة الكود. وبما أنني وحدي، سأقوم رسميًا بإنشاء طلب سحب ومراجعة كل شيء مرة أخرى. أذهب إلى صفحة المستودع، ويعلم Github بالفعل أن لدينا إضافة وعروضًا لإنشاء طلب سحب: "مشروع جافا من الألف إلى الياء": نحن نكتب مشروعًا.  أضف SpringBoot وقم بتكوين عملية CI - 9لا توجد عقبات أمام الوطنيين (ج) - لقد قمنا بإنشائه، كما هو مقترح. نقوم بتعيين نفس التسمية والمشروع كما هو الحال في المهمة التي نعمل عليها، ونملأ الوصف: انقر فوق "مشروع جافا من الألف إلى الياء": نحن نكتب مشروعًا.  أضف SpringBoot وقم بتكوين عملية CI - 10إنشاء طلب سحب .

إعداد عملية CI

نذهب إلى طلب السحب الذي تم إنشاؤه: أدناه نرى أنه لم يتم تكوين التكامل المستمر (فيما يلي - CI). "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 11حسنًا، لم يتم تكوينه، فماذا في ذلك؟ لماذا نحتاج CI على الإطلاق؟ ما هو CI على أي حال؟ هذه تقريبًا قائمة الأسئلة التي يجب أن تهمنا في هذه اللحظة. بشكل عام، CI هي عملية مستمرة لدمج التعليمات البرمجية في قاعدة تعليمات برمجية مشتركة وتشغيل إنشاء المشروع قبل ذلك. ما يسمى بالبناء (من اللغة الإنجليزية البناء). في كل مرة نقوم ببناء مشروع، نتأكد من أن المشروع قد تم تجميعه، وأن جميع اختباراته قد مرت بنجاح، بالإضافة إلى أنه بعد بناء المشروع، يمكنك إضافة اختبارات تلقائية من المختبرين إلى CI التي يتم تشغيلها على هذا البناء المحدد. بهذه الطريقة، نصبح أكثر ثقة بأن التغييرات الجديدة تعمل كما نتوقع ولا تؤدي إلى تعطيل الوظيفة السابقة. يعد CI جيدًا أيضًا لأنه يبدأ تلقائيًا بعد تحديث قاعدة التعليمات البرمجية. أي أننا دفعنا تغييراتنا إلى الفرع وبدأت العملية - التجميع والاختبارات والاختبارات التلقائية والخطوات الأخرى. إذا فشلت أي من هذه الخطوات، فسيتم اعتبار البناء معطلاً ولا يمكن دمجه في الفرع الرئيسي. هذا هو بالضبط ما سنفعله الآن: سنضيف إجراءات GitHub، والتي ستعمل على تشغيل الكود الخاص بنا بعد الدفع. تتلاءم إجراءات GitHub تمامًا مع تدفق GitHub الخاص بنا، لذلك سنستخدمها لأتمتة عملنا. هذه الأداة قوية جدًا وكبيرة الحجم، ولكن في الوقت الحالي سنستخدمها فقط لتشغيل الإنشاء والتحقق من تجميعها حسب الحاجة. لتمكينه، ابحث عن زر الإجراءات في صفحة المستودع واتبعه: "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 12ابحث عن سير عمل التكامل المستمر الذي نحتاجه: "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 13انقر فوق إعداد سير العمل هذا. بعد ذلك، يُعرض علينا استخدام النموذج الخاص بهم: نحن نتفق تمامًا، دعنا نوضح كل شيء قليلاً:
# This workflow will build a Java project with Maven
# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven

name: Java CI with Maven

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v2
    - name: Set up JDK 1.8
      uses: actions/setup-java@v1
      with:
        java-version: 1.8
    - name: Build with Maven
      run: mvn -B package --file pom.xml
يشير هذا إلى أنه يتم استدعاء إجراء GitHub في حالتين:
  1. عندما يتم الدفع إلى الفرع الرئيسي.
  2. عندما يتم إنشاء طلب السحب في الفرع الرئيسي.
يصف قسم الوظائف الخطوات التي سيتم تنفيذها. لدينا خطوة واحدة فقط - البناء. يوضح أنه سيتم إطلاق مشروعنا في Ubuntu باستخدام الأمر mvn -B package --file pom.xml . وهذا بالضبط ما فعلناه محليا. إذا كنت تريد تغيير شيء ما هنا، من فضلك. سأستخدم هذا القالب، سيكون كافيًا بالنسبة لي. أنقر فوق "بدء الالتزام" ، ثم حدد "إنشاء فرع جديد" لتكوين العملية ثم "اقتراح ملف جديد" . لكن عملية البناء سقطت... "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 14كما ترون، الفشل بعد 14 ثانية - بناء. يبدو أن شيئًا ما قد حدث: دعنا ننتقل إلى التجميع وننظر إلى التفاصيل: "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 15تقول أنني لم أتمكن من العثور على مثل هذه الذاكرة. لماذا؟ اهه، بالضبط، بالضبط! لأننا أنشأنا تغييرات في الفرع الرئيسي، ولكن مهمتنا لم تصل بعد. ولهذا السبب لم يعثر على الذاكرة... لذلك، نقوم الآن بما يلي: ندمج هذه البيانات في الملف الرئيسي، ثم ندمج الفرع الرئيسي في JRTB-0، وبعد ذلك يجب أن يسير كل شيء على ما يرام. في طلب السحب الذي يتضمن تغييرات في إجراءات github، انقر فوق Merge pull request : "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 16وكرر تأكيد الدمج . بعد ذلك، يطلب منا Github حذف الفرع الذي عملنا فيه. لا نرفض ولا نحذف: "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 17بعد ذلك، لم أجد في طلب السحب من SpringBoot كيفية سحب التغييرات من الفرع الرئيسي من الموقع، لذلك سنقوم بذلك يدويًا من خلال IDEA.

الخطوة 1: تحديث الفرع الرئيسي إلى المستودع المحلي.

الفكرة هي الانتقال إلى الفرع الرئيسي والضغط على ctrl + t وتحديث الفرع الرئيسي:"Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 18

الخطوة 2: دمج التغييرات من الفرع الرئيسي إلى فرع JRTB-0.

دعنا نذهب إلى JRTB-0 وندمج الجزء الرئيسي فيه."Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 19

الخطوة 3: دفع التغييرات.

اضغط على ctrl + Shift + k وأكد الضغط. نحن الآن ننتظر حتى يتم الانتهاء من البناء وسيكون لونه أخضر!)) ولكنه أحمر مرة أخرى. ما هذا؟ نذهب إلى سجلات الإجراءات ونرى أن لدينا غير متزامن في إصدارات Java. في GitHubActions هو 8، لكننا نستخدم 11: "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 20الآن هناك خياران: إما تصحيح الإجراءات، أو خفض الإصدار إلى الثامن. ويبدو لي أن الخيار الأول أفضل وأصح. نحن نجري تغييرات في التزام منفصل: لن نعمل مع Java 8، ولكن مع Java 11. "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 21وبعد ذلك، أخيرًا، نجح كل شيء بالنسبة لنا، وتمكنا من إعداد عملية CI الخاصة بالمشروع. يجب إعداد مثل هذه الأشياء في المرحلة الأولية، حتى لا تقلق بشأنها لاحقًا. الآن يمكنك أن ترى أن البناء قد انتهى ويمكنك الدمج دون خوف:"Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 22

إعداد العمل مع الفروع في المستودع

يمكنك أيضًا تكوين مثل هذه الأشياء في المستودع كقواعد عند العمل مع الفروع. أريد أن أفعل ذلك بحيث لا يمكن دفع الفرع الرئيسي مباشرة، ولكن فقط من خلال طلبات السحب، وأريد أن أفعل ذلك بحيث يكون من المستحيل دمج طلب السحب في حالة فشل البناء (أي، إذا فشلت إجراءات GitHub في بعض الخطوة). للقيام بذلك، ابحث عن زر الإعدادات وحدد الفروع : "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 23في الوقت الحالي لا توجد قواعد للفروع، لذلك دعونا نضيف قاعدة جديدة من خلال زر إضافة قاعدة : "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 24هناك الكثير من الإعدادات هنا، ويمكن للجميع القيام بشيء يناسب احتياجاتهم الاحتياجات. لكي يمر البناء بنجاح في طلب السحب قبل الدمج، قم بإضافة خانة اختيار للمطالبة باجتياز اختبارات الحالة قبل الدمج وحدد الحالة التي نحتاجها - بناء. هذا يكفي الآن: بعد ذلك يمكنك تحديث عجلة القيادة هذه ومعرفة ما تريده أيضًا. انقر فوق "إنشاء" لإنشاء عجلة القيادة هذه. "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 25بعد ذلك، إذا انتقلنا إلى طلب السحب مرة أخرى، يمكننا أن نرى أن الشيك الخاص بنا قد تم وضع علامة عليه الآن كمطلوب: "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 26فلنتحقق من صفحة مشروعنا، التي تعرض جميع حالات المهام: "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 27يمكنك أن ترى على الفور المهمة التي يتم العمل عليها. علاوة على ذلك، تم إنجاز العمل بالفعل، والمهمة في حالة مراجعة التعليمات البرمجية.

إغلاق JRTB-0

الآن بعد أن قمنا بإعداد طلب سحب وقمنا بإنشاء CI له، نحتاج إلى إكمال المرحلة الأخيرة: إغلاق المهمة، ونقلها إلى الحالة الصحيحة، وإلقاء نظرة على التغييرات في مشروعنا على اللوحة. طلب السحب الخاص بنا جاهز للدمج في الملف الرئيسي. في طلب السحب، انقر فوق زر دمج طلب السحب : "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 28بعد نجاح الدمج، يمكنك حذفه، وعادةً ما تفعل ذلك. لن أفعل هذا ليسهل عليك رؤية التغييرات بين الفروع/الالتزامات. بمجرد دمج طلب السحب، فإنه ينتقل تلقائيًا إلى "تم التنفيذ" في لوحة المشروع لدينا: "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 29الخطوة الأخيرة هي إغلاق المشكلة (المشكلة) برابط لطلب السحب الذي كانت فيه: "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 30يتم الانتقال تلقائيًا إلى "تم" هذه المشكلة على سبورة. "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 31لقد تم البدء، وتمت المهمة الأولى!

الاستنتاجات

يبدو أننا قد بدأنا بالفعل العمل وكتابة التعليمات البرمجية، ولكن لا تزال هناك حاجة إلى الإعدادات. نعم، يستغرق الأمر وقتًا، لكنه سيؤتي ثماره مائة ضعف عندما يصبح المشروع أكبر وأكثر تعقيدًا وتحتاج إلى ضمانات بأنك لن تكسر كل شيء بالتزام واحد. طلب السحب حيث يحدث كل هذا متاح هنا . ربما، عندما تقرأ، سيتم إغلاقه بالفعل. إنه ليس مخيفًا: سيتم تخزين جميع المعلومات الضرورية عبر الرابط. شكرا لكم جميعا على القراءة، نراكم قريبا. بالإضافة إلى!

توجد قائمة بجميع المواد الموجودة في السلسلة في بداية هذه المقالة.

تعليقات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION