Мақола аз як силсила дар бораи эҷоди лоиҳаи Java (пайвандҳо ба дигар маводҳо дар охир мебошанд). Ҳадафи он таҳлor технологияҳои калидӣ мебошад, ки натиҷааш навиштани боти телеграмма мебошад. Салом, хонандагони азиз. Тавре ки дар қисми қаблӣ тасвир шудааст , мо мувофиқи нақша меравем. Мо аллакай лоиҳа эҷод кардем ва вақти он расидааст, ки онро бо code пур кунем. Акнун ҳама масъалаҳо ҳамчун ӯҳдадориҳои алоҳида илова карда мешаванд. Ман ҳама чизи заруриро дар ин ҷо тавсиф мекунам. Агар ман чизеро пазмон шуда бошам ё онро ба таври кофӣ тавсиф накунам, дар шарҳҳо пурсед, ман кӯшиш мекунам ҷавоб диҳам.
Мо JRTB-0M менависем
Дар ин вазифа мо бояд чаҳорчӯбаи холии SpringBoot-ро барои кори оянда илова кунем. Мо инро ҳамон тавре мекунем, ки мо дар мақола дар бораи SpringBoot + Flyway кардаем . Лоиҳаро зеркашӣ кунед , онро дар IDEA кушоед ва фorали нав бо номи JRTB-0 эҷод кунед . Ман тасвир кардам, ки чӣ тавр ин корро тавассути як идея дар ин ҷо иҷро кунам . Ин барои мо пайгирии кор дар оянда осонтар мешавад. Оё шумо аллакай медонистед, ки дигар фorали усто вуҷуд надорад ? Ҳоло он бетараф номида мешавад - асосӣ . Пас, мо ба он одат мекунем. Ҳарчанд, ростқавлона, мо ҳамеша метавонем онро ба устод иваз кунем. Мо ба Spring Initializr меравем ва барои боти худ чаҳорчӯбаи SpringBoot эҷод мекунем. Дар айни замон, versionи ҷавонтарини sprint boot пешниҳодшуда 2.3.7 аст, биёед онро гирем. Ман танзимоти зеринро алоҳида тавсиф мекунам:- Лоиҳа: Лоиҳаи Maven - мо аллакай Maven-ро дар ин ҷо ва дар ин ҷо муҳокима кардем . Аз ин рӯ, ман ба таври иловагӣ танҳо он чизеро, ки дар мақолаҳои қаблӣ ошкор накардаам, тавсиф мекунам. Агар чунин "доғҳои сафед" вуҷуд дошта бошанд, албатта)
- Забон: Java - дар ин ҷо ҳама чиз равшан аст. Агар хоҳише бошад, мо метавонем ин масъаларо дар Котлин дубора нависем. Ман ба худам як китоби Котлин дар амал харидаам, мо Котлинро якҷоя меомӯзем))
- Spring Boot: 2.3.7 - мо versionи хурдтарини пешниҳодшударо барои бартараф кардани мушкилот мегирем. Ин аллакай versionи комилан муосири боркунӣ мебошад.
- Гурӯҳ: com.github.javarushcommunity - дар ин ҷо мо доменеро интихоб мекунем, ки дар он гурӯҳи анбори мо ҷойгир аст.
- Артефакт: javarush-telegrambot - тавсифи максималии лоиҳа.
- Ном: Javarush TelegramBot - мо онро пурра дар ин ҷо менависем.
- Тавсифи: Боти Telegram барои Javarush аз ҷомеа ба ҷомеа - дар ин ҷо тавсифи муфассали лоиҳа аст.
- Номи баста: com.github.javarushcommunity.jrtb - дар ин ҷо шумо метавонед аллакай ихтисораи номи лоиҳаро истифода баред. Акнун лоиҳа бо ин баста оғоз мешавад. Чаро ин қадар зиёд? Ҳамин тавр, вақте ки мо лоиҳаҳои дигарро ба синфхона илова мекунем, онҳо дар бастаҳои гуногун хоҳанд буд. Ҳар яке бо роҳи беназири худ. Ин барои нигоҳ доштани принсипҳои OOP муҳим аст.
- Бастабандӣ: кӯза стандарти мост)
- Java: 11 - мо як қадам пеш хоҳем шуд. Ман фикр намекунам, ки ман пас аз ҳаштуми Java навоварӣ истифода хоҳам кард, аммо бигзор бошад. Ӯ барои хӯрок талаб намекунад)... ин қарор дар оянда ба мо як тухми хурди Пасха медиҳад)
Танзими раванди CI
Мо ба дархости ҷалби офаридашуда меравем: дар зер мебинем, ки мо Интегратсияи доимиро танзим накардаем (минбаъд - CI). Хуб, он танзим нашудааст, пас чӣ? Чаро ба мо умуман CI лозим аст? Ба ҳар ҳол CI чист? Ин тақрибан рӯйхати саволҳоест, ки дар айни замон моро ба ташвиш меорад. Умуман, CI як раванди муттасor муттаҳид кардани code ба пойгоҳи умумии code ва пеш аз он сохтани лоиҳа мебошад. Сохта ном (аз забони англисӣ сохта). Ҳар дафъае, ки мо лоиҳа месозем, мо боварӣ ҳосил мекунем, ки лоиҳа тартиб дода шудааст, ҳама санҷишҳои он бомуваффақият гузаштаанд ва инчунин пас аз сохтани лоиҳа, шумо метавонед санҷишҳои автоматиро аз озмоишгарон ба CI илова кунед, ки дар ин сохтани мушаххас иҷро карда мешаванд. Бо ин роҳ, мо боварӣ дорем, ки тағиротҳои нав тавре кор мекунанд, ки мо интизор будем ва функсияҳои қаблиро вайрон намекунанд. CI низ хуб аст, зеро он пас аз навсозии пойгоҳи code ба таври худкор оғоз меёбад. Яъне мо тағиротҳои худро ба фorал тела додем ва раванд оғоз шуд - монтаж, озмоишҳо, автотестҳо ва дигар қадамҳо. Агар яке аз ин қадамҳо ноком шавад, сохтмон вайроншуда ҳисобида мешавад ва онро ба шохаи асосӣ муттаҳид кардан мумкин нест. Ин маҳз ҳамон чизест, ки мо ҳоло мекунем: мо GitHub Actions илова мекунем, ки codeи моро пас аз пахш иҷро мекунад. Амалҳои GitHub ба ҷараёни GitHub-и мо комилан мувофиқат мекунанд, аз ин рӯ мо онро барои автоматикунонии кори худ истифода хоҳем кард. Ин асбоб хеле пурқувват ва калон аст, аммо ҳоло мо онро танҳо барои иҷро кардани сохтмон истифода мебарем ва тафтиш мекунем, ки он дар ҳолати зарурӣ ҷамъ карда шудааст. Барои фаъол кардани он, тугмаи Амалиётро дар саҳифаи репозиторий пайдо кунед ва ба он пайравӣ кунед: Ҷараёни кории муттасor ҳамгироӣ, ки ба мо лозим аст, пайдо кунед: Танзими ин ҷараёни корро клик кунед. Баъдан, ба мо пешниҳод карда мешавад, ки қолаби онҳоро истифода барем: мо комилан розӣ ҳастем, биёед ҳама чизро каме равшан кунем:# 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
Ин нишон медиҳад, ки Action GitHub дар ду ҳолат даъват карда мешавад:
- Вақте ки ба шохаи асосӣ тела дода мешавад.
- Вақте ки дархости кашидан дар фorали асосӣ эҷод карда мешавад.
GO TO FULL VERSION