Стаття із серії про створення Java-проекту (посилання на інші матеріали – наприкінці). Її мета — аналіз ключових технологій, результат — написання телеграм-бота. Вітаю вас, дорогі читачі. Як було описано у попередній частині, будемо йти за планом. Ми вже створабо проект і настав час його наповнювати кодом. Тепер все це буде додаватися окремими комітами. Все, що буде потрібно, я опишу тут. Якщо щось упущу або опишу недостатньо зрозуміло — питайте у коментарях, намагатимусь відповісти.
Пишемо JRTB-0M
У цьому питанні нам потрібно додати порожній SpringBoot каркас для майбутньої роботи. Робити ми це будемо так само, як і робабо у статті про SpringBoot + Flyway . Качаємо проект , відкриваємо його в IDEA і створюємо нову гілку під назвою JRTB-0 . Як це зробити через ідею я описував тут . Так буде зручніше для нас у майбутньому для відстеження роботи. Ви вже знали, що тепер немає гілки master ? Тепер вона називається нейтрально - main . Тому звикаємо. Хоча, правду кажучи, ми завжди можемо перейменувати її назад у майстер. Заходимо на Spring Initializr та створюємо SpringBoot каркас для нашого бота.На даний момент наймолодша пропонована версія спринту бута - 2.3.7, беремо її. Наступні опції опишу окремо:- Project: Maven Project — ми вже розібрали мов тут і тут . Тому додатково описуватиму тільки те, що не розкрив у попередніх статтях. Якщо такі "білі плями" будуть, звичайно)
- Language: Java – тут все зрозуміло. Буде бажання – можемо переписати цю справу на Kotlin. Я якраз прикупив собі книжечку Kotlin in Action, навчатимемо котел разом))
- Spring Boot: 2.3.7 - беремо найменшу із запропонованих версій, щоб виключити будь-які проблеми. Це й так цілком сучасна версія бута.
- Group: com.github.codegymcommunity - тут вибираємо домен, на якому хоститься наша група репозиторіїв.
- Artifact: codegym-telegrambot – максимальний опис проекту.
- Name: Javarush TelegramBot – тут вже повністю напишемо.
- Description: Telegram bot для Javarush з community to community — тут вже детальніший опис проекту.
- Package name: com.github.codegymcommunity.jrtb — тут можна використовувати абревіатуру для імені проекту. Тепер із цього пакету розпочинатиметься проект. Навіщо так багато? Щоб коли ми додавали до classpath інші проекти, вони були у різних пакетах. Кожен у своєму унікальному. Це важливо зберегти ООП принципи.
- Packaging: Jar – це наш стандарт)
- Java: 11 - будемо на крок попереду. Не думаю, що я використовуватиму нововведення після восьмої джави, але нехай уже буде. Їсти не просить)... це рішення підкладе нам невелику пасхалку в майбутньому)
Налаштовуємо процес CI
Заходимо до створеного пулл-реквесту: внизу бачимо, що у нас не налаштований Continuous Integration (тут і далі — CI). Ну, не налаштований, і що? А навіщо нам взагалі потрібна CI? Що таке CI? Ось приблизно той перелік питань, який має хвилювати нас у цей момент. Загалом і цілому CI- Це безперервний процес зливання коду в загальну кодову базу із запуском складання проекту перед цим. Так званий білд (від англ. build). Щоразу, коли ми збираємо проект, ми запевняємось, що проект пройшов компіляцію, всі його тести пройшли успішно, плюс до CI після складання проекту ще можна додати автотести від тестувальників, які запускаються на цю конкретну збірку. Таким чином вийде, що ми стаємо впевненішими в тому, що нові зміни працюють так, як ми очікуємо, і не ламають попередній функціонал. Також CI хороший тим, що він запускається автоматично після оновлення кодової бази. Тобто ми запушабо у гілку свої зміни та процес пішов — складання, тести, автотести та інші кроки. Якщо якийсь із цих кроків провалився, збірка вважається битою і не може бути влита основна гілка. Саме це ми зараз і зробимо: додамо GitHub Actions, який запускатиме наш код після пуша. GitHub Actions чудово лягає на наш GitHub Flow, тому будемо використовувати його для автоматизації роботи. Цей інструмент дуже потужний і великий, але поки що ми будемо використовувати його тільки для прогонки білда та перевірки, що він збирається як слід. Щоб увімкнути його, знайдемо на сторінці репозиторію кнопкуActions та перейдемо по ній: Знаходимо необхідний для нас Continuous Integration workflow: Натискаємо Set up this workflow. Далі нам пропонують використовувати їх шаблон: повністю погоджуємося, лише дещо уточнимо все:# 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 Action викликається у двох випадках:
- Коли робиться пуш у головну гілку.
- Коли створюється пулл-реквест у головну гілку.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ