JavaRush /Java Blogu /Random-AZ /Layihə yazırıq. SpringBoot əlavə edin və CI prosesini qur...
Roman Beekeeper
Səviyyə

Layihə yazırıq. SpringBoot əlavə edin və CI prosesini qurun - "A-dan Z-yə Java layihəsi"

Qrupda dərc edilmişdir
Java layihəsinin yaradılması haqqında silsilədən məqalə (digər materiallara keçidlər sonundadır). Onun məqsədi əsas texnologiyaları təhlil etməkdir, nəticə teleqram botunu yazmaqdır. Salam, əziz oxucular. Əvvəlki hissədə təsvir edildiyi kimi , plana uyğun gedəcəyik. Artıq bir layihə yaratdıq və onu kodla doldurmağın vaxtı gəldi. İndi bütün məsələlər ayrıca öhdəliklər kimi əlavə olunacaq. Burada lazım olan hər şeyi təsvir edəcəyəm. Nəyisə qaçırsam və ya kifayət qədər aydın təsvir etməsəm, şərhlərdə soruşun, cavab verməyə çalışacağam."A-dan Z-yə Java layihəsi": Layihə yazırıq.  SpringBoot əlavə edin və CI prosesini konfiqurasiya edin - 1

JRTB-0M yazırıq

Bu tapşırıqda gələcək iş üçün boş bir SpringBoot çərçivəsi əlavə etməliyik. Bunu SpringBoot + Flyway haqqında məqalədə etdiyimiz kimi edəcəyik . Layihəni yükləyin , IDEA-da açın və JRTB-0 adlı yeni filial yaradın . Bunu bir fikir vasitəsilə necə edəcəyimi burada təsvir etdim . Bu, gələcəkdə işi izləməyimizi asanlaşdıracaq. Artıq master"A-dan Z-yə Java layihəsi": Layihə yazırıq.  SpringBoot əlavə edin və CI prosesini konfiqurasiya edin - 2 filialının olmadığını bilirdinizmi ? İndi neytral - əsas adlanır . Beləliklə, biz buna alışırıq. Baxmayaraq ki, düzünü desək, biz həmişə onun adını yenidən master deyə dəyişə bilərik. Spring Initializr- ə gedirik və botumuz üçün SpringBoot çərçivəsi yaradırıq. Hazırda təklif olunan boot sprint-in ən gənc versiyası 2.3.7-dir, götürək. Aşağıdakı parametrləri ayrıca təsvir edəcəyəm:"A-dan Z-yə Java layihəsi": Layihə yazırıq.  SpringBoot əlavə edin və CI prosesini konfiqurasiya edin - 3
  • Layihə: Maven Layihəsi - biz artıq Maven haqqında buradaburada müzakirə etdik . Buna görə də, yalnız əvvəlki məqalələrdə açıqlamadıqlarımı əlavə olaraq təsvir edəcəyəm. Belə "ağ ləkələr" varsa, əlbəttə)
  • Dil: Java - burada hər şey aydındır. İstək olarsa, bu məsələni Kotlin-də yenidən yaza bilərik. Mən indicə özümə Kotlin in Action kitabı aldım, Kotlini birlikdə öyrənəcəyik))
  • Spring Boot: 2.3.7 - hər hansı problemi aradan qaldırmaq üçün təklif olunan ən kiçik versiyanı götürürük. Bu, artıq çəkmənin tamamilə müasir versiyasıdır.
Layihə metadatası:
  • Qrup: com.github.javarushcommunity - burada biz depolar qrupumuzun yerləşdiyi domeni seçirik.
  • Artefakt: javarush-telegrambot - layihənin maksimum təsviri.
  • Adı: Javarush TelegramBot - tam olaraq burada yazacağıq.
  • Təsvir: Javarush üçün icmadan icmaya Telegram botu - burada layihənin daha ətraflı təsviri var.
  • Paketin adı: com.github.javarushcommunity.jrtb - burada artıq layihə adı üçün abbreviaturadan istifadə edə bilərsiniz. İndi layihə bu paketlə başlayacaq. Niyə bu qədər çox? Beləliklə, biz sinif yoluna başqa layihələr əlavə etdikdə, onlar fərqli paketlərdə olacaqlar. Hər biri özünəməxsus şəkildə. Bu, OOP prinsiplərini qorumaq üçün vacibdir.
  • Qablaşdırma: Kavanoz bizim standartımızdır)
  • Java: 11 - biz bir addım öndə olacağıq. Səkkizinci Java-dan sonra yeniliklərdən istifadə edəcəyimi düşünmürəm, amma olsun. O, yemək istəmir)... bu qərar bizə gələcəkdə kiçik bir Pasxa yumurtası verəcək)
Hələlik heç bir asılılıq əlavə etməyəcəyik. Bu iş üçün bizə ehtiyac yoxdur. Bütün bunları doldurduqdan sonra əldə edirik (burada yaradılan layihəyə keçid"A-dan Z-yə Java layihəsi": Layihə yazırıq.  SpringBoot əlavə edin və CI prosesini konfiqurasiya edin - 4 var): Doldurduqdan sonra GENERATE düyməsini basın və arxivdəki bütün daxili elementləri layihəmizə əlavə edin. "A-dan Z-yə Java layihəsi": Layihə yazırıq.  SpringBoot əlavə edin və CI prosesini konfiqurasiya edin - 5Layihəyə fayl əlavə edin. Nəticədə bir müraciətimiz var. Onun ümumiyyətlə yığılıb-yığılmadığını yoxlamaq üçün terminala gedin və yazın: $ mvn clean package"A-dan Z-yə Java layihəsi": Layihə yazırıq.  SpringBoot əlavə edin və CI prosesini konfiqurasiya edin - 6 Əgər sizdə buradakı kimi varsa, hər şey qaydasındadır: layihə yığılıb, jarnik isə hədəf qovluğunda artıq hazırdır. Bu anda təsvirdəki tapşırıq hazırdır. Bu sadədir, elə deyilmi? Buna görə də, biz öhdəlik götürürük və filialımıza itələyirik: "A-dan Z-yə Java layihəsi": Layihə yazırıq.  SpringBoot əlavə edin və CI prosesini konfiqurasiya edin - 7Tapşırığımızın adını öhdəliyin təsvirinin əvvəlinə əlavə edirik ki, daha sonra işin hansı tapşırıq çərçivəsində görüldüyü aydın olsun. Tapşırıq və Push klikləyin ... "A-dan Z-yə Java layihəsi": Layihə yazırıq.  SpringBoot əlavə edin və CI prosesini konfiqurasiya edin - 8Bir daha yerli depodan uzaqda olana nəyi köçürmək istədiyimizi bir daha nəzərdən keçiririk və yoxlayır və hər şeyin qaydasında olduğundan əmin olaraq Push düyməsini basın . Növbəti addımımız nədir? Bütün qaydalara görə (bunu bu məqalədə oxuya bilərsiniz , GitHub axını haqqında hissədə) əsas filial üçün çəkmə sorğusu yaratmalı və komandadan birinin kodu nəzərdən keçirməsini gözləməlisiniz. Mən təkbaşına olduğum üçün rəsmi olaraq çəkmə sorğusu yaradacağam və hər şeyi yenidən nəzərdən keçirəcəyəm. Mən anbar səhifəsinə gedirəm və Github artıq bilir ki, bizdə əlavə var və çəkmə sorğusu yaratmağı təklif edir: "A-dan Z-yə Java layihəsi": Layihə yazırıq.  SpringBoot əlavə edin və CI prosesini konfiqurasiya edin - 9Vətənpərvərlər üçün heç bir maneə yoxdur (c) - biz onu təklif etdiyimiz kimi yaradırıq. Üzərində işlədiyimiz tapşırıqda olduğu kimi eyni etiketi, layihəni təyin edirik və təsviri doldururuq: Çəkmə sorğusu yarat"A-dan Z-yə Java layihəsi": Layihə yazırıq.  SpringBoot əlavə edin və CI prosesini konfiqurasiya edin - 10 düyməsinə klikləyin .

CI prosesinin qurulması

Yaradılmış çəkmə sorğusuna gedirik: aşağıda biz Konfiqurasiya edilmiş Davamlı İnteqrasiya (bundan sonra - CI) olmadığını görürük . "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 11Yaxşı, konfiqurasiya edilməyib, bəs nə? Niyə bizə ümumiyyətlə CI lazımdır? Hər halda CI nədir? Bu, hazırda bizi narahat etməli olan sualların təxminən siyahısıdır. Ümumiyyətlə, CI kodu ümumi kod bazasında birləşdirən və ondan əvvəl layihənin qurulmasını davam etdirən davamlı bir prosesdir. Sözdə qurma (İngiliscə quruluşdan). Hər dəfə layihə qurarkən layihənin tərtib edildiyinə, bütün sınaqlarının uğurla keçdiyinə əmin oluruq, üstəlik layihəni qurduqdan sonra siz bu xüsusi quruluşda işləyən testerlərdən CI-yə avtotestlər əlavə edə bilərsiniz. Beləliklə, yeni dəyişikliklərin gözlədiyimiz kimi işlədiyinə və əvvəlki funksionallığı pozmadığına daha çox əmin oluruq. CI da yaxşıdır, çünki kod bazasını yenilədikdən sonra avtomatik olaraq işə başlayır. Yəni dəyişikliklərimizi filiala itələdik və proses başladı - montaj, sınaqlar, avtotestlər və digər addımlar. Bu addımlardan hər hansı biri uğursuz olarsa, quruluş pozulmuş sayılır və əsas filiala birləşdirilə bilməz. İndi edəcəyimiz şey tam olaraq budur: pushdan sonra kodumuzu işlədəcək GitHub Actions əlavə edəcəyik. GitHub Actions bizim GitHub Flow-a mükəmməl uyğun gəlir, ona görə də biz ondan işimizi avtomatlaşdırmaq üçün istifadə edəcəyik. Bu alət çox güclü və böyükdür, lakin hələlik biz ondan yalnız konstruksiyanı işə salmaq üçün istifadə edəcəyik və lazım olduqda yığıldığını yoxlayacağıq. Onu aktivləşdirmək üçün repozitor səhifəsində Fəaliyyətlər düyməsini tapın və ona əməl edin: "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 12Bizə lazım olan Davamlı İnteqrasiya iş prosesini tapın: "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 13Bu iş axınını quraşdırın üzərinə klikləyin. Sonra bizə onların şablonundan istifadə etməyi təklif edirik: biz tamamilə razıyıq, gəlin hər şeyi bir az aydınlaşdıraq:
# 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 Fəaliyyətinin iki halda çağırıldığını göstərir:
  1. Əsas filiala təkan verildikdə.
  2. Əsas filialda çəkmə sorğusu yaradıldıqda.
İş bölməsi yerinə yetiriləcək addımları təsvir edir. Bizim yalnız bir addımımız var - qurmaq. Bu onu göstərir ki, layihəmiz Ubuntu-da mvn -B package --file pom.xml əmri ilə işə salınacaq . Bu, yerli olaraq etdiyimiz şeydir. Burada nəyisə dəyişmək istəyirsinizsə, buyurun. Bu şablondan istifadə edəcəyəm, mənə kifayət edəcək. Təhvil verməyə başlayın , prosesi konfiqurasiya etmək üçün yeni filial yarat seçin və sonra Yeni fayl təklif edin . Amma qurma prosesi düşdü... "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 14Gördüyünüz kimi, 14 saniyədən sonra uğursuzluq - qurmaq. Deyəsən nəsə olub: gəlin məclisə keçək və təfərrüatlara baxaq: "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 15Deyir ki, belə bir xatirə tapa bilmədim. Niyə? Ahhh, dəqiq, dəqiq! Çünki biz master filialında dəyişikliklər yaratdıq, amma vəzifəmiz hələ orada deyil. Və buna görə də yaddaşı tapmadı... Buna görə də, indi biz aşağıdakıları edirik: bu məlumatları master-a birləşdiririk, sonra əsas filialı JRTB-0-a birləşdiririk və sonra hər şey yaxşı getməlidir. Github əməliyyatları dəyişiklikləri ilə çəkilmə sorğusunda, Birləşdirmə sorğusunu birləşdirin üzərinə klikləyin : "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 16birləşməni təsdiq et . Sonra Github bizə işlədiyimiz filialı silməyi təklif edir. Biz imtina etmirik və silmirik: "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 17Sonra, SpringBoot-un çəkmə sorğusunda veb saytından əsas filialdan dəyişiklikləri necə çəkməyi tapmadım, buna görə də IDEA vasitəsilə əl ilə edəcəyik.

Addım 1: Əsas filialı yerli depoya yeniləyin.

İdeya master filialına getmək, ctrl + t düymələrini sıxmaq və master filialını yeniləməkdir:"Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 18

Addım 2: Dəyişiklikləri əsas filialdan JRTB-0 filialına birləşdirin.

Gəlin JRTB-0-a gedək və əsası ona birləşdirək."Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 19

Addım 3: dəyişiklikləri itələyin.

Ctrl + shift + k düymələrini basın və basmağı təsdiqləyin. İndi tikintinin keçməsini gözləyirik və yaşıl olacaq!)) Amma yenə qırmızıdır. Bu nədir? Fəaliyyət qeydlərinə daxil oluruq və Java versiyalarında sinxronlaşmadığımızı görürük. GitHubActions-da 8-dir, lakin biz 11-dən istifadə edirik: "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 20İndi iki seçim var: ya hərəkətləri düzəldin, ya da versiyanı səkkizinciyə endirin. Birinci variant, mənə elə gəlir ki, daha yaxşı və düzgündür. Ayrı bir öhdəlikdə dəyişikliklər edirik: Java 8 ilə deyil, Java 11 ilə işləyəcəyik. "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 21Və bundan sonra, nəhayət, hər şey bizim üçün işlədi və biz layihə üçün CI prosesimizi qura bildik. Belə şeyləri ilkin mərhələdə qurmaq lazımdır ki, sonradan narahat olmayasan. İndi tikintinin keçdiyini görə bilərsiniz və qorxmadan birləşdirə bilərsiniz:"Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 22

Repozitoriyada filiallarla işin qurulması

Siz həmçinin filiallarla işləyərkən depoda belə şeyləri qaydalar kimi konfiqurasiya edə bilərsiniz. Mən bunu elə etmək istəyirəm ki, əsas budaq birbaşa itələməsin, ancaq yalnız çəkmə sorğuları vasitəsilə və onu elə etmək istəyirəm ki, quraşdırma uğursuz olarsa (yəni, GitHub Actions uğursuz olarsa) çəkmə sorğusunu birləşdirmək mümkün olmasın. bir addım). Bunu etmək üçün Parametrlər düyməsini tapın və Filiallar seçin : "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 23Hazırda filiallar üçün heç bir qayda yoxdur, ona görə də Qayda əlavə et düyməsi vasitəsilə yenisini əlavə edək : "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 24Burada çoxlu parametrlər var və hər kəs öz istəyinə uyğun nəsə edə bilər. ehtiyaclar. Quraşdırmanın birləşmədən əvvəl çəkmə sorğusunda uğurla keçməsi üçün Birləşmədən əvvəl status yoxlamalarının keçməsini tələb et qutusuna işarələyin və bizə lazım olan statusu seçin - qurmaq. Hələlik bu kifayətdir: onda siz bu sükanı yeniləyə və başqa nə istədiyinizi görə bilərsiniz. Bu sükan çarxını yaratmaq üçün Yarat düyməsini klikləyin . "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 25Sonra, çəkmə sorğumuza yenidən keçsək, indi çekimizin tələb olunduğunu görə bilərik: "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 26Gəlin bütün tapşırıq statuslarını əks etdirən layihə səhifəmizi yoxlayaq: "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 27Hansı tapşırığın üzərində işləndiyini dərhal görə bilərsiniz. Üstəlik, iş artıq görülüb və tapşırıq kodun nəzərdən keçirilməsi vəziyyətindədir.

JRTB-0 bağlanır

İndi çəkmə sorğusu hazırlamışıq və bunun üçün CI hazırlamışıq, son mərhələni tamamlamalıyıq: tapşırığı bağlayın, düzgün vəziyyətə keçirin, lövhədə layihəmizdəki dəyişikliklərə baxın. Çəkmə sorğumuz master ilə birləşdirilməyə hazırdır. Çəkmə sorğusunda Birləşdirmə sorğusu düyməsini klikləyin : "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 28Uğurlu birləşmədən sonra siz onu silə bilərsiniz və adətən bunu edin. Filiallar/öhdəliklər arasında dəyişiklikləri görməyinizi asanlaşdırmaq üçün bunu etməyəcəyəm. Çəkmə sorğusu birləşdirildikdən sonra o, avtomatik olaraq layihə lövhəmizdə yerinə yetirilir: "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 29Son addım problemi (məsələni) mövcud olduğu çəkmə sorğusunun linki ilə bağlamaqdır: "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 30Bu məsələ avtomatik olaraq proqramda yerinə yetirilir. lövhə. "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 31Başlanğıc edildi, ilk tapşırıq edildi!

nəticələr

Görünür ki, biz artıq işləməyə və kod yazmağa başlamışıq, lakin parametrlər hələ də lazımdır. Bəli, bu, vaxt tələb edir, lakin layihə böyüdükdə və mürəkkəbləşdikdə yüz dəfə bəhrəsini verəcək və bir öhdəliklə hər şeyi pozmayacağınıza zəmanət lazımdır. Bütün bunların baş verdiyi çəkmə sorğusu burada mövcuddur . Ola bilsin ki, oxuyanda artıq bağlanacaq. Bu qorxulu deyil: bütün lazımi məlumatlar link vasitəsilə saxlanılacaq. Oxuduğunuz üçün hamınıza təşəkkür edirəm, tezliklə görüşərik. Daha çox!

Serialdakı bütün materialların siyahısı bu məqalənin əvvəlindədir.

Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION