JavaRush /Java blogi /Random-UZ /Biz loyiha yozyapmiz. SpringBoot-ni qo'shing va CI jarayo...

Biz loyiha yozyapmiz. SpringBoot-ni qo'shing va CI jarayonini o'rnating - "A dan Zgacha Java loyihasi"

Guruhda nashr etilgan
Java loyihasini yaratish haqidagi turkum maqola (boshqa materiallarga havolalar oxirida). Uning maqsadi - asosiy texnologiyalarni tahlil qilish, natijada telegram botini yozish. Assalomu alaykum, aziz o'quvchilar. Oldingi qismda aytib o'tilganidek , biz reja bo'yicha boramiz. Biz allaqachon loyiha yaratdik va uni kod bilan to'ldirish vaqti keldi. Endi barcha masalalar alohida topshiriqlar sifatida qo'shiladi. Men bu erda kerak bo'lgan hamma narsani tasvirlab beraman. Agar biror narsani o'tkazib yuborsam yoki uni etarlicha aniq tasvirlamasam, sharhlarda so'rang, men javob berishga harakat qilaman."A dan Zgacha Java loyihasi": Biz loyiha yozyapmiz.  SpringBoot-ni qo'shing va CI jarayonini sozlang - 1

Biz JRTB-0M yozamiz

Ushbu vazifada kelajakdagi ish uchun bo'sh SpringBoot ramkasini qo'shishimiz kerak. Buni SpringBoot + Flyway haqidagi maqolada qilganimizdek qilamiz . Loyihani yuklab oling , IDEA-da oching va JRTB-0 deb nomlangan yangi filial yarating . Buni qanday qilish kerakligini bu erda bir fikr orqali tasvirlab berdim . Bu bizga kelajakdagi ishlarni kuzatishni osonlashtiradi. Siz allaqachon magistr"A dan Zgacha Java loyihasi": Biz loyiha yozyapmiz.  SpringBoot-ni qo'shing va CI jarayonini sozlang - 2 filiali yo'qligini bilasizmi ? Endi u neytral deb ataladi - asosiy . Shunday qilib, biz ko'nikamiz. Rostini aytadigan bo'lsak, biz uni har doim master deb qayta nomlashimiz mumkin. Biz Spring Initializr- ga o'tamiz va botimiz uchun SpringBoot ramkasini yaratamiz. Ayni paytda yuklash sprintining taklif qilingan eng yosh versiyasi 2.3.7, keling, uni olaylik. Men quyidagi sozlamalarni alohida tasvirlab beraman:"A dan Zgacha Java loyihasi": Biz loyiha yozyapmiz.  SpringBoot-ni qo'shing va CI jarayonini sozlang - 3
  • Loyiha: Maven loyihasi - biz Mavenni bu erda va bu erda muhokama qildik . Shuning uchun, men avvalgi maqolalarda oshkor qilmagan narsalarni qo'shimcha ravishda tasvirlab beraman. Agar shunday "oq dog'lar" bo'lsa, albatta)
  • Til: Java - bu erda hamma narsa aniq. Agar istak bo'lsa, biz bu masalani Kotlinda qayta yozishimiz mumkin. Men o'zimga "Kotlin in Action" kitobini sotib oldim, biz Kotlinni birga o'rganamiz))
  • Spring Boot: 2.3.7 - biz har qanday muammolarni bartaraf etish uchun taklif qilingan eng kichik versiyani olamiz. Bu allaqachon yuklashning mutlaqo zamonaviy versiyasi.
Loyiha metamaʼlumotlari:
  • Guruh: com.github.javarushcommunity - bu erda biz omborlar guruhimiz joylashgan domenni tanlaymiz.
  • Artifakt: javarush-telegrambot - loyihaning maksimal tavsifi.
  • Nomi: Javarush TelegramBot - bu erda to'liq yozamiz.
  • Tavsif: Jamiyatdan jamoaga Javarush uchun Telegram boti - bu erda loyihaning batafsil tavsifi.
  • Paket nomi: com.github.javarushcommunity.jrtb - bu yerda siz allaqachon loyiha nomining qisqartmasidan foydalanishingiz mumkin. Endi loyiha ushbu paketdan boshlanadi. Nega shuncha ko'p? Shunday qilib, biz sinf yo'liga boshqa loyihalarni qo'shganimizda, ular turli paketlarda bo'ladi. Har biri o'ziga xos tarzda. Bu OOP tamoyillarini saqlab qolish uchun muhimdir.
  • Qadoqlash: kavanoz bizning standartimiz)
  • Java: 11 - biz bir qadam oldinda bo'lamiz. Sakkizinchi Java-dan keyin innovatsiyalardan foydalanaman deb o'ylamayman, lekin shunday bo'lsin. U ovqat so'ramaydi) ... bu qaror bizga kelajakda kichik Pasxa tuxumini beradi)
Biz hozircha hech qanday bog'liqlikni qo'shmaymiz. Bu vazifa uchun bizga bu kerak emas. Bularning barchasini to'ldirib, biz olamiz (bu erda yaratilgan loyihaga havola"A dan Zgacha Java loyihasi": Biz loyiha yozyapmiz.  SpringBoot-ni qo'shing va CI jarayonini sozlang - 4 ): To'ldirgandan so'ng, GENERATE tugmasini bosing va arxivdagi barcha ichki qismlarni loyihamizga qo'shing. "A dan Zgacha Java loyihasi": Biz loyiha yozyapmiz.  SpringBoot-ni qo'shing va CI jarayonini sozlang - 5Loyihaga fayllar qo'shing. Natijada bizda ariza bor. U umuman yig'ilgan yoki yo'qligini tekshirish uchun terminalga o'ting va yozing: $ mvn toza paket"A dan Zgacha Java loyihasi": Biz loyiha yozyapmiz.  SpringBoot-ni qo'shing va CI jarayonini sozlang - 6 Agar sizda bu yerdan bir xil bo'lsa, hamma narsa yaxshi: loyiha yig'ilgan va jarnik maqsadli papkada allaqachon tayyor. Ayni paytda tavsifdagi vazifa tayyor. Bu oddiy, to'g'rimi? Shuning uchun, biz majburiyat qilamiz va filialimizga suramiz: "A dan Zgacha Java loyihasi": Biz loyiha yozyapmiz.  SpringBoot-ni qo'shing va CI jarayonini sozlang - 7Biz topshiriq tavsifining boshiga vazifamiz nomini qo'shamiz, shunda ish qaysi vazifa doirasida amalga oshirilganligi keyinchalik aniq bo'ladi. "Commit and Push" tugmasini bosing ... "A dan Zgacha Java loyihasi": Biz loyiha yozyapmiz.  SpringBoot-ni qo'shing va CI jarayonini sozlang - 8Biz yana bir bor mahalliy ombordan masofaviy omborga aynan nimani o'tkazmoqchi ekanligimizni ko'rib chiqamiz va tekshiramiz va hamma narsa yaxshi ekanligiga ishonch hosil qilib, " Surish" tugmasini bosing . Keyingi qadamimiz nima? Barcha qoidalarga ko'ra ( bu maqolada o'qilishi mumkin , GitHub oqimi haqidagi qismda), siz asosiy filial uchun tortish so'rovini yaratishingiz va jamoadan kimdir kodni ko'rib chiqishini kutishingiz kerak. Men yolg'iz bo'lganim uchun rasman jalb qilish so'rovini yarataman va hamma narsani qayta ko'rib chiqaman. Men ombor sahifasiga o'taman va Github bizda qo'shimcha borligini allaqachon biladi va tortishish so'rovini yaratishni taklif qiladi: "A dan Zgacha Java loyihasi": Biz loyiha yozyapmiz.  SpringBoot-ni qo'shing va CI jarayonini sozlang - 9Patriotlar uchun hech qanday to'siq yo'q (c) - biz uni taklif qilganimizdek yaratamiz. Biz ishlayotgan vazifadagi kabi bir xil yorliqni, loyihani o'rnatamiz va tavsifni to'ldiramiz: Chiqib olish so'rovini yaratish ni"A dan Zgacha Java loyihasi": Biz loyiha yozyapmiz.  SpringBoot-ni qo'shing va CI jarayonini sozlang - 10 bosing .

CI jarayonini sozlash

Biz yaratilgan tortishish so'roviga o'tamiz: quyida bizda Continuous Integration (keyingi o'rinlarda - CI) sozlanmaganligini ko'ramiz . "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 11Xo'sh, u sozlanmagan, nima bo'ladi? Nima uchun bizga CI umuman kerak? CI nima? Bu hozir bizni tashvishga solishi kerak bo'lgan savollar ro'yxati. Umuman olganda, CI kodni umumiy kod bazasiga birlashtirish va undan oldin loyihani yaratishning uzluksiz jarayonidir. Qurilish deb ataladigan narsa (inglizcha qurilishdan). Har safar loyihani qurganimizda, biz loyiha tuzilganiga, uning barcha sinovlari muvaffaqiyatli o'tganiga ishonch hosil qilamiz, shuningdek, loyihani qurgandan so'ng siz ushbu maxsus tuzilishda ishlaydigan testerlardan CI-ga avtotestlarni qo'shishingiz mumkin. Shunday qilib, biz yangi o'zgarishlar biz kutgandek ishlashiga va avvalgi funksiyalarni buzmasligiga ishonchimiz ko'proq bo'ladi. CI ham yaxshi, chunki u kod bazasini yangilagandan so'ng avtomatik ravishda boshlanadi. Ya'ni, biz o'zgartirishlarimizni filialga kiritdik va jarayon boshlandi - yig'ish, sinovlar, avtotestlar va boshqa bosqichlar. Agar ushbu qadamlardan biri muvaffaqiyatsiz bo'lsa, qurilish buzilgan deb hisoblanadi va uni asosiy filialga birlashtirib bo'lmaydi. Biz aynan shunday qilamiz: biz surishdan keyin kodimizni ishga tushiradigan GitHub Actions qo'shamiz. GitHub Actions bizning GitHub Flowimizga juda mos keladi, shuning uchun biz undan ishimizni avtomatlashtirish uchun foydalanamiz. Ushbu vosita juda kuchli va katta, ammo hozircha biz uni faqat qurilishni ishga tushirish uchun ishlatamiz va kerak bo'lganda yig'ilganligini tekshiramiz. Uni yoqish uchun ombor sahifasida Harakatlar tugmasini toping va unga amal qiling: "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 12Bizga kerak bo'lgan uzluksiz integratsiya ish jarayonini toping: "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 13Ushbu ish jarayonini sozlash-ni bosing. Keyinchalik, bizga ularning shablonidan foydalanish taklif etiladi: biz to'liq rozimiz, keling, hamma narsani biroz aniqlab olaylik:
# 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
Bu GitHub Action ikki holatda chaqirilishini ko'rsatadi:
  1. Asosiy shoxga surish amalga oshirilganda.
  2. Asosiy filialda tortish so'rovi yaratilganda.
Ishlar bo'limi amalga oshiriladigan qadamlarni tavsiflaydi. Bizda faqat bitta qadam bor - qurish. Bu bizning loyihamiz Ubuntuda mvn -B package --file pom.xml buyrug'i bilan ishga tushirilishini ko'rsatadi . Biz mahalliy sharoitda aynan shunday qildik. Agar siz bu erda biror narsani o'zgartirmoqchi bo'lsangiz, iltimos. Men ushbu shablonni ishlataman, bu men uchun etarli bo'ladi. Ishga tushirishni boshlash- ni bosing , jarayonni sozlash uchun yangi filial yaratish-ni tanlang va keyin yangi faylni taklif qiling . Ammo qurish jarayoni tushib ketdi ... "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 14Ko'rib turganingizdek, 14 soniyadan keyin muvaffaqiyatsizlikka uchragan - qurish. Biror narsa sodir bo'lganga o'xshaydi: keling, yig'ilishga o'tamiz va tafsilotlarni ko'rib chiqamiz: "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 15bunday xotirani topa olmaganligim aytiladi. Nega? Ahh, aniq, aniq! Chunki biz asosiy filialda o'zgarishlar yaratdik, ammo bizning vazifamiz hali u erda emas. Va shuning uchun u xotirani topa olmadi ... Shuning uchun, endi biz quyidagilarni bajaramiz: biz bu ma'lumotni masterga birlashtiramiz, keyin asosiy filialni JRTB-0 ga birlashtiramiz, keyin hamma narsa yaxshi bo'lishi kerak. Github harakatlari oʻzgargan tortishish soʻrovida “Birlashtirish soʻrovi” tugmasini bosing : "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 16Va “Birlashtirishni tasdiqlash”ni takrorlang . Keyinchalik, Github biz ishlagan filialni o'chirishni taklif qiladi. Biz rad etmaymiz va yo'q qilmaymiz: "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 17Keyin, men SpringBoot-dan veb-saytdan asosiy filialdan qanday o'zgarishlarni olib tashlashni topa olmadim, shuning uchun biz buni IDEA orqali qo'lda qilamiz.

1-qadam: Asosiy filialni mahalliy omborga yangilang.

Maqsad asosiy filialga o'tish, ctrl + t tugmalarini bosing va asosiy filialni yangilash:"Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 18

2-qadam: O'zgarishlarni asosiy filialdan JRTB-0 filialiga birlashtiring.

Keling, JRTB-0 ga boramiz va asosiysini unga birlashtiramiz."Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 19

3-qadam: o'zgarishlarni surish.

Ctrl + shift + k tugmalarini bosing va surishni tasdiqlang. Endi biz qurilishning o'tishini kutmoqdamiz va u yashil bo'ladi!)) Lekin yana qizil. Bu nima? Biz harakatlar jurnaliga o'tamiz va Java versiyalarida sinxronlanmaganligini ko'ramiz. GitHubActions-da bu 8, lekin biz 11 dan foydalanamiz: "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 20Endi ikkita variant bor: yoki amallarni to'g'rilash yoki versiyani sakkizinchi darajaga tushirish. Birinchi variant, menimcha, yaxshiroq va to'g'riroq. Biz alohida majburiyatda o'zgarishlar kiritmoqdamiz: biz Java 8 bilan emas, balki Java 11 bilan ishlaymiz. "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 21Va shundan so'ng, nihoyat, biz uchun hamma narsa muvaffaqiyatli bo'ldi va biz loyiha uchun CI jarayonini o'rnatishga muvaffaq bo'ldik. Bunday narsalarni dastlabki bosqichda o'rnatish kerak, keyin bu haqda tashvishlanmaslik kerak. Endi siz qurilish tugaganini ko'rishingiz mumkin va siz qo'rqmasdan birlashishingiz mumkin:"Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 22

Ombordagi filiallar bilan ishlashni sozlash

Shuningdek, siz omborda bunday narsalarni filiallar bilan ishlashda qoidalar sifatida sozlashingiz mumkin. Men buni asosiy filialni to'g'ridan-to'g'ri bo'shatib bo'lmaydigan qilib, faqat tortish so'rovlari orqali amalga oshirmoqchiman va agar qurish muvaffaqiyatsiz bo'lsa (ya'ni, agar GitHub Actions muvaffaqiyatsiz bo'lsa) tortish so'rovini birlashtirib bo'lmaydigan qilib yaratmoqchiman. bir necha qadam). Buni amalga oshirish uchun Sozlamalar tugmasini toping va Filiallar ni tanlang : Ayni paytda filiallar uchun qoidalar yo‘q, shuning uchun Qoida qo‘shish"Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 23 tugmasi orqali yangisini qo‘shamiz : Bu yerda juda ko‘p sozlamalar mavjud va har kim o‘z xohishiga ko‘ra nimadir qilishi mumkin. ehtiyojlari. Birlashtirishdan oldin tortib olish so'rovida qurish muvaffaqiyatli o'tishi uchun "Birlashishdan oldin holat tekshiruvlarini talab qilish" katagiga belgi qo'ying va bizga kerak bo'lgan holatni tanlang - qurish. Hozircha bu yetarli: u holda siz ushbu rulni yangilashingiz va yana nimani xohlayotganingizni ko'rishingiz mumkin. Ushbu rulni yaratish uchun Yaratish tugmasini bosing . Keyinchalik, agar biz tortishish so'rovimizga qayta o'tsak, endi tekshirishimiz talab qilinganligini ko'rishimiz mumkin: Keling, barcha vazifa holatini aks ettiruvchi loyiha sahifamizni tekshirib ko'raylik: Siz darhol qaysi vazifa ustida ishlayotganini ko'rishingiz mumkin. Bundan tashqari, ish allaqachon bajarilgan va vazifa kodni ko'rib chiqish holatida."Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 24"Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 25"Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 26"Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 27

JRTB-0ni yopish

Endi biz tortishish so'rovini tayyorladik va buning uchun CI qildik, biz oxirgi bosqichni bajarishimiz kerak: vazifani yoping, uni to'g'ri holatga o'tkazing, doskada loyihamizdagi o'zgarishlarni ko'rib chiqing. Bizning tortishish so'rovimiz masterga birlashishga tayyor. Olib tashlash so'rovida "Birlashtirish" so'rovini bosing : "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 28Muvaffaqiyatli birlashtirgandan so'ng, uni o'chirishingiz mumkin va odatda shunday qiling. Filiallar/majburiyatlar o'rtasidagi o'zgarishlarni ko'rishni osonlashtirish uchun buni qilmayman. O'chirish so'rovi birlashtirilgandan so'ng, u avtomatik ravishda bizning loyiha panelimizda bajariladi: "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 29Oxirgi qadam, masalani (muammoni) u mavjud bo'lgan tortib olish so'roviga havola bilan yopish: "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 30Bu masala avtomatik ravishda amalga oshiriladi. taxta. "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 31Boshlandi, birinchi vazifa bajarildi!

xulosalar

Biz allaqachon ishlashni va kod yozishni boshlaganga o'xshaymiz, ammo sozlamalar hali ham kerak. Ha, bu vaqt talab etadi, lekin loyiha kattaroq va murakkablashganda u yuz baravar to'laydi va sizga bitta majburiyat bilan hamma narsani buzmasligingiz uchun kafolat kerak. Bularning barchasi sodir bo'ladigan tortishish so'rovi bu erda mavjud . Ehtimol, siz o'qiganingizda, u allaqachon yopiladi. Bu qo'rqinchli emas: barcha kerakli ma'lumotlar havola orqali saqlanadi. O'qiganingiz uchun barchangizga rahmat, tez orada ko'rishguncha. Yanada ko'proq!

Seriyadagi barcha materiallar ro'yxati ushbu maqolaning boshida.

Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION