JavaRush /Java блогу /Random-KY /Биз долбоор жазып жатабыз. SpringBoot кошуңуз жана CI про...
Roman Beekeeper
Деңгээл

Биз долбоор жазып жатабыз. SpringBoot кошуңуз жана CI процессин орнотуңуз - "Java долбоору Адан Яга чейин"

Группада жарыяланган
Java долбоорун түзүү жөнүндө бир катар макала (башка материалдарга шилтемелер аягында). Анын максаты негизги технологияларды талдоо, натыйжасы телеграмма бот жазуу болуп саналат. Саламатсыздарбы, урматтуу окурмандар. Мурунку бөлүмдө айтылгандай , биз план боюнча барабыз. Биз буга чейин долбоор түздүк жана аны code менен толтурууга убакыт келди. Эми бардык маселелер өзүнчө комиссия катары кошулат. Мен бул жерде зарыл болгон нерселердин баарын сүрөттөп берем. Эгерде мен бир нерсени сагынсам же аны так сүрөттөп бербесем, комментарийлерде сураңыз, мен жооп бергенге аракет кылам."Java долбоору Адан Яга": Биз долбоор жазып жатабыз.  SpringBoot кошуу жана CI процессин конфигурациялоо - 1

Биз JRTB-0M жазабыз

Бул тапшырмада биз келечектеги иш үчүн бош SpringBoot алкагын кошушубуз керек. Биз муну SpringBoot + Flyway жөнүндөгү макаладагыдай кылабыз . Долбоорду жүктөп алып , аны IDEAда ачып, JRTB-0 деп аталган жаңы фorалды түзүңүз . Мен бул жерде бир идея аркылуу муну кантип сүрөттөп бердим . Бул бизге келечекте жумушту көзөмөлдөөнү жеңилдетет. Сиз буга чейин эле мастер"Java долбоору Адан Яга": Биз долбоор жазып жатабыз.  SpringBoot кошуу жана CI процессин конфигурациялоо - 2 фorалы жок экенин билесизби ? Азыр ал нейтралдуу - негизги деп аталат . Ошентип биз көнүп калабыз. Чынын айтсам, биз аны ар дайым кожоюн деп атай алабыз. Биз Spring Initializrге барып , биздин бот үчүн SpringBoot алкагын түзөбүз. Учурда сунушталган жүктөөчү спринттин эң жаш versionсы 2.3.7, аны алалы. Мен төмөнкү орнотууларды өзүнчө сүрөттөп берем:"Java долбоору Адан Яга": Биз долбоор жазып жатабыз.  SpringBoot кошуу жана CI процессин конфигурациялоо - 3
  • Долбоор: Maven долбоору - биз Mavenди бул жерде жана бул жерде талкуулаганбыз . Ошондуктан, мен мурунку макалаларда ачыкка чыгарбаган нерселерди гана сүрөттөйм. Мындай "ак тактар" бар болсо, албетте)
  • Тor: Java - бул жерде баары түшүнүктүү. Эгерде каалоо болсо, биз бул маселени Котлинге кайра жаза алабыз. Мен өзүмө Котлин in Action китебин сатып алдым, Котлинди чогуу үйрөнөбүз))
  • Жазгы жүктөө: 2.3.7 - биз бардык көйгөйлөрдү жоюу үчүн сунушталган эң кичинекей versionны алабыз. Бул жүктөөнүн толугу менен заманбап versionсы.
Долбоордун метадайындары:
  • Топ: com.github.javarushcommunity - бул жерде биз репозиторийлер тобубуз жайгашкан доменди тандайбыз.
  • Артефакт: javarush-telegrambot - долбоордун максималдуу сүрөттөлүшү.
  • Аты-жөнү: Javarush TelegramBot - бул жерде толук жазабыз.
  • Description: Javarush үчүн Telegram боту коомчулуктан коомчулукка - бул жерде долбоордун кеңири сүрөттөлүшү.
  • Пакеттин аталышы: com.github.javarushcommunity.jrtb - бул жерде сиз долбоордун аталышынын аббревиатурасын колдоно аласыз. Эми долбоор ушул пакеттен башталат. Эмне үчүн мынча көп? Класс жолуна башка долбоорлорду кошкондо, алар ар кандай пакеттерде болот. Ар бири өзүнүн өзгөчө жолу менен. Бул OOP принциптерин сактоо үчүн маанилүү.
  • Таңгак: банка биздин стандарт болуп саналат)
  • Java: 11 - биз бир кадам алдыда болобуз. Мен сегизинчи Javaдан кийин инновацияларды колдоном деп ойлобойм, бирок болсун. Ал тамак сураbyte)... бул чечим бизге келечекте кичинекей Пасха жумурткасын берет)
Биз азыр эч кандай көз карандылыкты кошпойбуз. Бул иш үчүн бизге мунун кереги жок. Мунун баарын толтургандан кийин, биз алабыз (бул жерде түзүлгөн долбоорго шилтеме"Java долбоору Адан Яга": Биз долбоор жазып жатабыз.  SpringBoot кошуу жана CI процессин конфигурациялоо - 4 ): Толтургандан кийин, GENERATE баскычын чыкылдатып, архивдеги бардык ички нерселерди биздин долбоорго кошуңуз. "Java долбоору Адан Яга": Биз долбоор жазып жатабыз.  SpringBoot кошуңуз жана CI процессин конфигурациялаңыз - 5Долбоорго файлдарды кошуу. Натыйжада бизде арыз бар. Анын дегеле чогулганын текшерүү үчүн, терминалга барып, жазыңыз: $ mvn таза пакет"Java долбоору Адан Яга": Биз долбоор жазып жатабыз.  SpringBoot кошуу жана CI процессин конфигурациялоо - 6 Эгерде сизде бул жерден окшош болсо, анда баары жакшы: долбоор чогулду, ал эми жарник максаттуу папкада даяр. Бул учурда, сүрөттөмө ичиндеги тапшырма даяр. Бул жөнөкөй, туурабы? Ошондуктан, биз милдеттендиребиз жана фorалыбызга түртөбүз: "Java долбоору Адан Яга": Биз долбоор жазып жатабыз.  SpringBoot кошуу жана CI процессин конфигурациялоо - 7Милдеттенме сыпаттамасынын башына милдетибиздин атын кошобуз, кийинчерээк иш кайсы тапшырманын алкагында аткарылганы айкын болот. Тапшыруу жана Түртүүнү чыкылдатыңыз ... "Java долбоору Адан Яга": Биз долбоор жазып жатабыз.  SpringBoot кошуу жана CI процессин конфигурациялоо - 8Дагы бир жолу биз жергorктүү репозиторийден алыскы репозиторийге эмнени түртүүнү каалап жатканыбызды дагы бир жолу карап чыгып, текшерип, баары жакшы экенине ынанып, Push баскычын басыңыз . Кийинки кадамыбыз кандай? Бардык эрежелерге ылайык ( бул макалада окуса болот , GitHub агымы жөнүндө бөлүгүндө), сиз негизги бутак үчүн тартуу өтүнүчүн түзүп, командадан бирөө codeду карап чыгышын күтүшүңүз керек. Мен өз алдынча болгондуктан, расмий түрдө тартуу өтүнүчүн түзүп, баарын кайра карап чыгам. Мен репозиторий барагына барам, ал эми Github бизде кошумча бар экенин билет жана тартуу өтүнүчүн түзүүнү сунуштайт: "Java долбоору Адан Яга": Биз долбоор жазып жатабыз.  SpringBoot кошуңуз жана CI процессин конфигурациялаңыз - 9Патриоттор үчүн эч кандай тоскоолдук жок (с) - биз сунуш кылгандай түзөбүз. Биз иштеп жаткан тапшырмадагыдай энбелги, долбоорду коюп, сүрөттөмөсүн толтурабыз: "Java долбоору Адан Яга": Биз долбоор жазып жатабыз.  SpringBoot кошуңуз жана CI процессин конфигурациялаңыз - 10Чыкылдатыңыз Тартуу өтүнүчүн түзүү .

CI процессин орнотуу

Биз түзүлгөн тартуу сурамына барабыз: төмөндө бизде Конфигурацияланган Үзгүлтүксүз Интеграция (мындан ары - CI) жок экенин көрөбүз . "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 11Ооба, ал конфигурацияланган эмес, анда эмне болот? Эмне үчүн бизге CI керек? CI деген эмне? Бул болжол менен азыркы учурда бизди тынчсыздандырган суроолордун тизмеси. Жалпысынан алганда, CI codeду жалпы codeдук базага бириктирүүнүн жана ага чейин долбоордун курулушун жүргүзүүнүн үзгүлтүксүз процесси. Build деп аталган (англисче куруудан). Долбоорду курган сайын, биз долбоордун компиляцияланганын, анын бардык сыноолорунун ийгorктүү өткөндүгүн текшеребиз, ошондой эле долбоорду кургандан кийин, сиз тестерлерден CIге ушул конкреттүү түзүлүштө иштетилген автотесттерди кошо аласыз. Ошентип, биз жаңы өзгөртүүлөр биз күткөндөй иштеп, мурунку функцияларды бузбай турганына көбүрөөк ишенебиз. CI да жакшы, анткени ал code базасын жаңырткандан кийин автоматтык түрдө башталат. Башкача айтканда, биз өзгөртүүлөрүбүздү фorалга киргиздик жана процесс башталды - монтаж, тесттер, автотесттер жана башка кадамдар. Бул кадамдардын бири ишке ашпай калса, куруу бузулган деп эсептелет жана аны негизги бутакка бириктирүү мүмкүн эмес. Азыр биз дал ушундай кылабыз: биз GitHub Actions кошобуз, ал биздин codeду түрткөндөн кийин иштетет. 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 буйругу менен ишке кирерин көрсөтүп турат . Бул жер-жерлерде дал ушундай кылдык. Бул жерде бир нерсени өзгөрткүңүз келсе, сураныч. Мен бул шаблонду колдоном, ал мага жетиштүү болот. Мен Баштоо Commit баскычын чыкылдатып , процессти конфигурациялоо үчүн жаңы бутакты түзүүнү тандаңыз жана андан кийин жаңы файлды сунуш кылыңыз . Бирок куруу процесси төмөндөп кетти... "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 14Көрүнүп тургандай, 14 секунддан кийин иштебей калуу - куруу. Бир нерсе болду окшойт: жыйынга барып, майда-чүйдөсүнө чейин карап көрөлү: "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 15Андай эсти таба албадым деп айтылат. Неге? Эхх, так, так! Анткени биз мастер-фorалда өзгөртүүлөрдү киргиздик, бирок биздин милдет али жок. Ошондон улам ал эстутумду таба алган жок... Ошондуктан, азыр биз төмөнкүлөрдү жасайбыз: биз бул маалыматтарды мастерге бириктиребиз, андан кийин негизги бутагын JRTB-0го бириктиребиз, анан баары жакшы болушу керек. Github аракеттеринин өзгөрүшү менен тартуу сурамында, Бириктирүү өтүнүчүн чыкылдатыңыз : "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 16Жана кайталаңыз Бириктирүүнү ырастоо . Андан кийин, Github биз иштеген фorалды жок кылууну сунуштайт. Биз баш тартпайбыз жана жок кылбайбыз: "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 17Андан кийин, мен SpringBoot'тун тартуу өтүнүчүндө веб-сайттан негизги бутактан өзгөртүүлөрдү кантип алып салуу керектигин таппадым, ошондуктан биз аны IDEA аркылуу кол менен жасайбыз.

1-кадам: Башкы фorалды жергorктүү репозиторийге жаңыртыңыз.

Идея башкы бутакка барып, ctrl + t баскычтарын басып, мастер бутагын жаңыртуу:"Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 18

2-кадам: Өзгөртүүлөрдү башкы бутактан JRTB-0 бутагына бириктириңиз.

Келгиле, JRTB-0го барып, ага негизгисин бириктирели."Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 19

3-кадам: өзгөртүүлөр.

Ctrl + shift + k басыңыз жана түртүүнү ырастаңыз. Эми курулуштун өтүшүн күтүп жатабыз, жашыл болуп калат!)) Бирок кайра кызыл. Бул не? Биз аракеттер журналдарына кирип, Java versionларында синхрондоштуруудан чыгып калганыбызды көрөбүз. GitHubActions-те бул 8, бирок биз 11ди колдонобуз: "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 20Эми эки вариант бар: же аракеттерди оңдоңуз, же versionны сегизинчиге түшүрүңүз. Биринчи вариант, менимче, жакшыраак жана туурараак. Биз өзүнчө тапшырмага өзгөртүүлөрдү киргизип жатабыз: биз Java 8 менен эмес, Java 11 менен иштейбиз. "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 21Ошондон кийин, акыры, баары биз үчүн ийгorктүү болду жана биз долбоор үчүн CI процессибизди орното алдык. Мындай нерселерди кийинчерээк тынчсызданбашы үчүн, баштапкы этапта орнотуу керек. Эми сиз куруу аяктаганын көрө аласыз жана коркпостон бириге аласыз:"Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 22

Репозиторийдеги фorалдар менен иштөө

Сиз ошондой эле репозиторийдеги нерселерди бутактар ​​менен иштөөдө эрежелер катары конфигурациялай аласыз. Мен аны негизги бутакты түз түртүүгө болбойт, бирок тартуу сурамдары аркылуу гана жасагым келет жана куруу ишке ашпай калса (б.а. GitHub Аракеттери ишке ашпай калса, тартуу өтүнүчүн бириктирүү мүмкүн болбой тургандай кылып жасагым келет. кээ бир кадам). Бул үчүн, Орнотуулар баскычын таап, Тармактарды тандаңыз : "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 23Учурда бутактар ​​үчүн эч кандай эреже жок, ошондуктан Эреже кошуу баскычы аркылуу жаңысын кошолу : "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 24Бул жерде көптөгөн орнотуулар бар жана ар ким өз каалоосуна жараша бир нерсе кыла алат. муктаждыктары. Биригүү алдында тартуу сурамында куруу ийгorктүү өтүшү үчүн, Бириктирүүдөн мурун статус текшерүүлөрүн талап кылуу дегенге белгини коюңуз жана бизге керектүү статусту тандаңыз - куруу. Азырынча бул жетиштүү: анда сиз бул рулду жаңыртып, дагы эмнени каалап жатканыңызды көрө аласыз. Бул рулду түзүү үчүн "Жазууну " басыңыз . "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 25Андан кийин, биз тартуу өтүнүчүбүзгө кайра барсак, текшерүүбүз азыр талап кылынганын көрөбүз: "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 26Келгиле, долбоордун барагын текшерип көрөлү, анда бардык тапшырма статустары көрсөтүлөт: "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 27Сиз дароо кайсы тапшырманын үстүндө иштеп жатканын көрө аласыз. Мындан тышкары, иш буга чейин аткарылган жана тапшырма codeду карап чыгуу абалында.

JRTB-0 жабылууда

Эми биз тартуу өтүнүчүн даярдап, ал үчүн CI жасадык, биз акыркы этапты бүтүрүшүбүз керек: тапшырманы жабуу, аны туура статуска жылдыруу, тактада биздин долбоордогу өзгөрүүлөрдү көрүү. Биздин тартуу өтүнүчүбүз мастерге кошулууга даяр. Тартуу өтүнүчүндө, Бириктирүү сурам баскычын чыкылдатыңыз : "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 28Ийгorктүү бириктирилгенден кийин, сиз аны жок кыла аласыз жана адатта ошентиңиз. Мен муну сизге фorалдар/милдеттенмелер ортосундагы өзгөрүүлөрдү көрүүнү жеңилдетүү үчүн кылбайм. Тартуу өтүнүчү бириктирилгенден кийин, ал автоматтык түрдө биздин долбоордун тактасында аткарылат: "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 29Акыркы кадам - ​​бул маселени (маселени) ал болгон тартуу сурамына шилтеме менен жабуу: "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 30Бул маселе автоматтык түрдө такта. "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 31Башталыш жасалды, биринчи тапшырма аткарылды!

корутундулар

Биз иштеп жана code жаза баштадык окшойт, бирок жөндөөлөр дагы эле керек. Ооба, бул убакытты талап кылат, бирок долбоор чоңойгондо жана татаалдашканда, ал жүз эсе төлөйт жана сизге бир гана милдеттенме менен баарын бузуп койбой турган кепилдик керек. Мунун баары орун алган тартуу өтүнүчү бул жерде жеткorктүү . Балким, сиз окуганда, ал эчак эле жабылып калат. Бул коркунучтуу эмес: бардык керектүү маалыматтар шилтеме аркылуу сакталат. Окуу үчүн рахмат, жакында көрүшкөнчө. Дагы дагы!

Сериядагы бардык материалдардын тизмеси ушул макаланын башында.

Комментарийлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION