Всем привет!
Как-то писала, что хочу получше разобраться в паттернах проектирования. Head First серия про паттерны что-то не очень пока заходит, нашла для себя, что лучше всего понимаются шаблоны в контексте.
Поэтому хочу поделиться книжкой про паттерны в контексте Spring. Называется "Spring все паттерны проектирования", автор Динеш Раджпут.
Не знаю как дальше будет, но пока паттерны описываются достаточно кратко, но мне такой стиль больше нравится, нет воды)
Как-то писала, что хочу получше разобраться в паттернах проектирования. Head First серия про паттерны что-то не очень пока заходит, нашла для себя, что лучше всего понимаются шаблоны в контексте.
Поэтому хочу поделиться книжкой про паттерны в контексте Spring. Называется "Spring все паттерны проектирования", автор Динеш Раджпут.
Не знаю как дальше будет, но пока паттерны описываются достаточно кратко, но мне такой стиль больше нравится, нет воды)
👍9👏1
Всем привет!
В среду буду участвовать в митапе со студентами Яндекс.Практикума. Помню, когда мы учились нам тоже давали видео-истории выпускников о том, как они нашли работу после курсов. Также, большой ажиотаж вызывало появление студента в общем чате, который уже нашел работу, его/ее сразу расспрашивали о требованиях к джунам, сложностями, связанными с поиском первого места работы (“сколько всего откликов отправил на HeadHunter?”) и т. п.
После митапа поделюсь впечатлениями. Немного волнительно, потому что думала, что выпускников будет несколько, не только я)) Но думаю, что все пройдет хорошо.
Последние несколько дней серьезно задумалась пойти на курсы повышающие квалификацию. Выбираю между курсом Java Developer Advanced в Otus и курсом Senior Java developer в HeadBridge. В последнем очень привлекает реактивное программирование с security и практика с kubernetes. Там будет сначала собеседование, определяющее уровень подготовки, которое возможно пройдет на следующей неделе. Тоже поделюсь впечатлениями после него.
Сегодня открыла свои архивы скачанных курсов с udemy, нашла много интересных. Начала сегодня смотреть тоже на тему реактивного программирования с использованием Spring WebFlux. Единственное, что формат мне не очень нравится — несколько десятков коротких видео по 5-10 минут без текстовых материалов. Но решила пока окончательно не выбрала курс, просмотрю имеющиеся из архива у себя.
P.S. Всем новым подписчикам добро пожаловать 🤗
В среду буду участвовать в митапе со студентами Яндекс.Практикума. Помню, когда мы учились нам тоже давали видео-истории выпускников о том, как они нашли работу после курсов. Также, большой ажиотаж вызывало появление студента в общем чате, который уже нашел работу, его/ее сразу расспрашивали о требованиях к джунам, сложностями, связанными с поиском первого места работы (“сколько всего откликов отправил на HeadHunter?”) и т. п.
После митапа поделюсь впечатлениями. Немного волнительно, потому что думала, что выпускников будет несколько, не только я)) Но думаю, что все пройдет хорошо.
Последние несколько дней серьезно задумалась пойти на курсы повышающие квалификацию. Выбираю между курсом Java Developer Advanced в Otus и курсом Senior Java developer в HeadBridge. В последнем очень привлекает реактивное программирование с security и практика с kubernetes. Там будет сначала собеседование, определяющее уровень подготовки, которое возможно пройдет на следующей неделе. Тоже поделюсь впечатлениями после него.
Сегодня открыла свои архивы скачанных курсов с udemy, нашла много интересных. Начала сегодня смотреть тоже на тему реактивного программирования с использованием Spring WebFlux. Единственное, что формат мне не очень нравится — несколько десятков коротких видео по 5-10 минут без текстовых материалов. Но решила пока окончательно не выбрала курс, просмотрю имеющиеся из архива у себя.
P.S. Всем новым подписчикам добро пожаловать 🤗
🔥19👍2
Всем привет!
Вчера прошел классный митап со студентами и выпускниками Яндекс.Практикум🔥
Митап прошел в классной и дружелюбной атмосфере, мне задавали много интересных вопросов.
Спасибо всем, у кого была возможность прийти на митап за поддержку и крутые вопросы!
Моя история в комиксах❤️
Вчера прошел классный митап со студентами и выпускниками Яндекс.Практикум🔥
Митап прошел в классной и дружелюбной атмосфере, мне задавали много интересных вопросов.
Спасибо всем, у кого была возможность прийти на митап за поддержку и крутые вопросы!
Моя история в комиксах❤️
🔥24
Всем привет!
На прошлой неделе активно выбирала курс для прокачки навыков. Выбирала между двумя курсами, как писала выше, но в итоге решила пропустить пока этот поток.
В одном курсе не понравился формат, что совсем нет никаких текстовых материалов. В пятницу была встреча с преподавателем и менеджером второго курса.
Изначально говорили, что это вступительное собеседование, где бы определили примерно мой уровень и предложили индивидуальный подход. На деле мне задали всего два вопроса - как давно изучаю/работаю с Java и на каком стеке работаю сейчас. В остальном рассказывали про курс.
На втором курсе очень плотное расписание и я пока решила не идти на него тоже. Решила пройти курсы, которые у меня есть с udemy, старый курс от Алишева ещё есть, и сейчас идёт классная серия видео у канала Уголок сельского джависта.
Там и реактивное программирование, и Aouth2 security, и подключение kubernetes. В принципе из-за этих тем и хотела идти на сеньорский курс, пока не увидела в программе, что из безопасности они могут предложить только базовую авторизацию и с помощью jwt.
На прошлой неделе активно выбирала курс для прокачки навыков. Выбирала между двумя курсами, как писала выше, но в итоге решила пропустить пока этот поток.
В одном курсе не понравился формат, что совсем нет никаких текстовых материалов. В пятницу была встреча с преподавателем и менеджером второго курса.
Изначально говорили, что это вступительное собеседование, где бы определили примерно мой уровень и предложили индивидуальный подход. На деле мне задали всего два вопроса - как давно изучаю/работаю с Java и на каком стеке работаю сейчас. В остальном рассказывали про курс.
На втором курсе очень плотное расписание и я пока решила не идти на него тоже. Решила пройти курсы, которые у меня есть с udemy, старый курс от Алишева ещё есть, и сейчас идёт классная серия видео у канала Уголок сельского джависта.
Там и реактивное программирование, и Aouth2 security, и подключение kubernetes. В принципе из-за этих тем и хотела идти на сеньорский курс, пока не увидела в программе, что из безопасности они могут предложить только базовую авторизацию и с помощью jwt.
👍6💯2
Всем привет!
Сегодня ровно год, как я завела этот канал. В то время мне часто попадались статьи/посты от начинающих разработчиков и тех, кто в поиске, что нужно писать о своем опыте, что это полезно и повышает мотивацию.
Когда я стала обсуждать свою идею с близкими людьми, они также сказали, что я могла бы рассказывать о своей учебе. Один коллега с курса написал как-то в чате, что если бы он решился написать о своем опыте обучения, у него получилась бы целая книга.
Другой человек сказал мне, что смысл ещё в том, что если мы пообещаем сделать что-то только перед самими собой, это очень легко нарушить. Ведь одно дело, ты обещаешь это передмногомиллионной публикой из 5 человек (именно столько у меня было подписчиков первые несколько месяцев), а другое дело только одному человеку - себе.
И это действительно мне много раз помогало, когда я возвращалась к своим забытым пет-проектам и делала их, чтобы было о чем рассказать здесь.
Один из таких заброшенных проектов лежит пылится ждет своего часа, но надеюсь ждать ему придётся ещё немного🤪
На название меня кстати вдохновил блог и сайт struchkov.dev, всем его рекомендую - там очень много полезных статей. Поэтому в названии есть часть моей фамилии и сферы интересов.
А сегодня я начала бесплатный интенсив. Там сразу первое задание применить аспекты, подключить кафку и базу данных. Но хотя бы не к понедельнику 😁
Сегодня ровно год, как я завела этот канал. В то время мне часто попадались статьи/посты от начинающих разработчиков и тех, кто в поиске, что нужно писать о своем опыте, что это полезно и повышает мотивацию.
Когда я стала обсуждать свою идею с близкими людьми, они также сказали, что я могла бы рассказывать о своей учебе. Один коллега с курса написал как-то в чате, что если бы он решился написать о своем опыте обучения, у него получилась бы целая книга.
Другой человек сказал мне, что смысл ещё в том, что если мы пообещаем сделать что-то только перед самими собой, это очень легко нарушить. Ведь одно дело, ты обещаешь это перед
И это действительно мне много раз помогало, когда я возвращалась к своим забытым пет-проектам и делала их, чтобы было о чем рассказать здесь.
Один из таких заброшенных проектов лежит пылится ждет своего часа, но надеюсь ждать ему придётся ещё немного🤪
На название меня кстати вдохновил блог и сайт struchkov.dev, всем его рекомендую - там очень много полезных статей. Поэтому в названии есть часть моей фамилии и сферы интересов.
А сегодня я начала бесплатный интенсив. Там сразу первое задание применить аспекты, подключить кафку и базу данных. Но хотя бы не к понедельнику 😁
👍7👏4😁4
Всем привет!
В последнее время у меня появилось 2 активности "за компанию") 1 - это интенсив, а 2 - отбор на летнюю школу в Яндекс.
Расскажу про интересную вещь по второй активности. Наметила проходить первый этап отбора в прошлые выходные. Решила накануне потренироваться решать задачи и решить одну какую-нибудь с leetcode.
У меня несколько открытых вкладок было, одна из них была с задачей уровня easy с высоким процентом решения. Прочитала условие, примеры входных и выходных данных, подумала, что в принципе знаю как можно решить.
У меня есть проект на гитхабе, где я собираю решения всяких таких задач, но обычно я не копировала само условие задачи. Подумала, что надо исправиться, сделала над классом java doc, скопировала условие задачи и примеры данных и собралась пробовать свое решение.
Фишка в том, что на моем домашнем компьютере установлен плагин GigaCode, я его ещё до этого не тестировала, подумала заодно проверю, что это такое. Это проект от Сбера, они же делают gigaChat (похож на chatGPT).
Собралась в общем писать main метод, что-то паузнула на секунду, смотрю мне гигакод предлагает написать не просто мейн, а входные выходные данные и метод, которого ещё нет, принимающий входные данные в параметрах. Я нажимаю таб, думаю ничего себе. Нажимаю создать метод, отступаю строку, он предлагает мне решение, которое у меня построилось в голове до этого, нажимаю таб, запускаю - тестовые кейсы проходят.
Отправила на leetcode, решение прошло. Эксперимента ради открыла задачу, которую совсем не знала, как решать, также скопировала условие в java doc, тут гигакод не сразу мне всё точно дал, но когда дала ему нужный объект на возврат из метода, он тут же предложил решение и оно тоже прошло!
Протестировала его потом на задачах от яндекс, тут он уже не особо справился, на второй даже немного мешал. Возможно задач на русском языке в нём меньше, чем на английском, но инструмент мощный, конечно.
Надо будет в следующий раз отключать для тренировки решения задач с leetcode, а потом включать, если совсем застряну и буду в тупике)
В последнее время у меня появилось 2 активности "за компанию") 1 - это интенсив, а 2 - отбор на летнюю школу в Яндекс.
Расскажу про интересную вещь по второй активности. Наметила проходить первый этап отбора в прошлые выходные. Решила накануне потренироваться решать задачи и решить одну какую-нибудь с leetcode.
У меня несколько открытых вкладок было, одна из них была с задачей уровня easy с высоким процентом решения. Прочитала условие, примеры входных и выходных данных, подумала, что в принципе знаю как можно решить.
У меня есть проект на гитхабе, где я собираю решения всяких таких задач, но обычно я не копировала само условие задачи. Подумала, что надо исправиться, сделала над классом java doc, скопировала условие задачи и примеры данных и собралась пробовать свое решение.
Фишка в том, что на моем домашнем компьютере установлен плагин GigaCode, я его ещё до этого не тестировала, подумала заодно проверю, что это такое. Это проект от Сбера, они же делают gigaChat (похож на chatGPT).
Собралась в общем писать main метод, что-то паузнула на секунду, смотрю мне гигакод предлагает написать не просто мейн, а входные выходные данные и метод, которого ещё нет, принимающий входные данные в параметрах. Я нажимаю таб, думаю ничего себе. Нажимаю создать метод, отступаю строку, он предлагает мне решение, которое у меня построилось в голове до этого, нажимаю таб, запускаю - тестовые кейсы проходят.
Отправила на leetcode, решение прошло. Эксперимента ради открыла задачу, которую совсем не знала, как решать, также скопировала условие в java doc, тут гигакод не сразу мне всё точно дал, но когда дала ему нужный объект на возврат из метода, он тут же предложил решение и оно тоже прошло!
Протестировала его потом на задачах от яндекс, тут он уже не особо справился, на второй даже немного мешал. Возможно задач на русском языке в нём меньше, чем на английском, но инструмент мощный, конечно.
Надо будет в следующий раз отключать для тренировки решения задач с leetcode, а потом включать, если совсем застряну и буду в тупике)
🔥11👍3👏2
Всем привет!
На днях проходила интересная конференция Tech Train. В онлайн не получилось смотреть доклады, а вчера был свободный вечер и посмотрела несколько докладов, которыми захотелось поделиться.
Очень понравились доклады на тему развития: о менторстве - кто такой ментор и чем может быть полезен, менторская сессия с тремя участниками - задавали классные вопросы, которые можно задать себе и понять в какое направление хочешь двигаться дальше, от стажера до сеньора - по факту говорили больше от стажера до миддла, но всё равно полезно.
Также понравился доклад "думать как архитектор", но он специфический, в нем в основном были практические задания на то, какое решение в какой ситуации лучше выбрать и почему.
В планах посмотреть о B-tree индексах на примере PostgreSQL.
На днях проходила интересная конференция Tech Train. В онлайн не получилось смотреть доклады, а вчера был свободный вечер и посмотрела несколько докладов, которыми захотелось поделиться.
Очень понравились доклады на тему развития: о менторстве - кто такой ментор и чем может быть полезен, менторская сессия с тремя участниками - задавали классные вопросы, которые можно задать себе и понять в какое направление хочешь двигаться дальше, от стажера до сеньора - по факту говорили больше от стажера до миддла, но всё равно полезно.
Также понравился доклад "думать как архитектор", но он специфический, в нем в основном были практические задания на то, какое решение в какой ситуации лучше выбрать и почему.
В планах посмотреть о B-tree индексах на примере PostgreSQL.
TechTrain 2024 Spring. Фестиваль по профессиональному росту в IT
TechTrain 2024 Spring | Расписание | TechTrain 2024 Spring — бесплатный онлайн-фестиваль про AI в целом и ML — в особенности.
…
…
Расписание фестиваля TechTrain 2024 Spring.
🔥9
Всем привет!
Не очень давно рассказывала здесь, что начала бесплатный интенсив. Села тут как-то выполнить первое домашнее задание. Сделать нужно было пару аспектов, подключить базу данных и пару эндпоинтов для сохранения и просмотра данных.
Сделала аспекты, думаю, для базы данных нужна Liquibase, куда же без нее. Сделала под нее модуль. Потом думаю, нужны контроллеры, а я как раз хотела применить OpenApi generator.
Это такой подход, при котором наши контроллеры реализуют сгенерированные интерфейсы, где уже указана swagger документация, указано, что приходит на вход и, что ожидается на выход.
Для тех, кто еще не знает как и кому интересно было бы попробовать такой подход, вот есть хороший туториал. Нужно заполнить специальный yaml файл, в котором можно прописать все необходимое (название метода, интерфейса, дто и какие поля в него нужны и, что у нас обязательно на вход по эндпоинту, а что нет).
Не сразу получилось настроить (не находился нужный плагин в Maven), но вчера нашла свою ошибку, исправила, все подключилось.
Второе домашнее задание включало написать эндпоинты для таск-трекера, а у меня уже и так 2 таск-трекера есть на гитхабе. И тут я вспомнила про свой проект, в котором я хотела импортировать свои закладки из браузера, разделить их по категориям для эффективного поиска. Тут же вспомнила, что я хотела еще дергать API искусственного интеллекта для категоризации и использовать Elasticsearch для поиска.
И тут приняла решение переключиться на это, а не продолжать участвовать в интенсиве. Все-таки там интенсив с возможностью дальнейшего трудоустройства, а я не собираюсь пока менять работу, потому что меня все более, чем устраивает на моем проекте.
Не очень давно рассказывала здесь, что начала бесплатный интенсив. Села тут как-то выполнить первое домашнее задание. Сделать нужно было пару аспектов, подключить базу данных и пару эндпоинтов для сохранения и просмотра данных.
Сделала аспекты, думаю, для базы данных нужна Liquibase, куда же без нее. Сделала под нее модуль. Потом думаю, нужны контроллеры, а я как раз хотела применить OpenApi generator.
Это такой подход, при котором наши контроллеры реализуют сгенерированные интерфейсы, где уже указана swagger документация, указано, что приходит на вход и, что ожидается на выход.
Для тех, кто еще не знает как и кому интересно было бы попробовать такой подход, вот есть хороший туториал. Нужно заполнить специальный yaml файл, в котором можно прописать все необходимое (название метода, интерфейса, дто и какие поля в него нужны и, что у нас обязательно на вход по эндпоинту, а что нет).
Не сразу получилось настроить (не находился нужный плагин в Maven), но вчера нашла свою ошибку, исправила, все подключилось.
Второе домашнее задание включало написать эндпоинты для таск-трекера, а у меня уже и так 2 таск-трекера есть на гитхабе. И тут я вспомнила про свой проект, в котором я хотела импортировать свои закладки из браузера, разделить их по категориям для эффективного поиска. Тут же вспомнила, что я хотела еще дергать API искусственного интеллекта для категоризации и использовать Elasticsearch для поиска.
И тут приняла решение переключиться на это, а не продолжать участвовать в интенсиве. Все-таки там интенсив с возможностью дальнейшего трудоустройства, а я не собираюсь пока менять работу, потому что меня все более, чем устраивает на моем проекте.
Baeldung on Kotlin
Open API Server Implementation Using OpenAPI Generator | Baeldung
Learn how to generate a Spring-based server stub from a YAML specification using the OpenAPI generator's Maven plugin.
👍8🔥6
Всем привет!
На прошлой неделе начала проходить два курса по kubernetes.👩💻 Один из них видео-курс от очень хорошего девопс-специалиста на английском, второй мне посоветовали на Stepik (на русском), его начала вчера/позавчера и пока нравится тоже. Советую 👍
Еще записалась на два хакатона, один будет проходить 2 недели в майские праздники, а второй в выходные 17-19 мая. До этого никогда в них не участвовала, думаю, что будет сложно и интересно)
На прошлой неделе начала проходить два курса по kubernetes.👩💻 Один из них видео-курс от очень хорошего девопс-специалиста на английском, второй мне посоветовали на Stepik (на русском), его начала вчера/позавчера и пока нравится тоже. Советую 👍
Еще записалась на два хакатона, один будет проходить 2 недели в майские праздники, а второй в выходные 17-19 мая. До этого никогда в них не участвовала, думаю, что будет сложно и интересно)
YouTube
Kubernetes Tutorial for Beginners [FULL COURSE in 4 Hours]
Full Kubernetes Tutorial | Kubernetes Course | Hands-on course with a lot of demos
💙 Become a Kubernetes Administrator - CKA: https://bit.ly/3MQtij9
💚 Become a DevOps Engineer - full educational program: https://bit.ly/3MRjKEE…
💙 Become a Kubernetes Administrator - CKA: https://bit.ly/3MQtij9
💚 Become a DevOps Engineer - full educational program: https://bit.ly/3MRjKEE…
🔥13
Всем привет!
26 апреля начался хакатон, в котором я хотела принять участие. Для меня первый хакатон прошёл, как первый блин комом. Второй, в котором думала принять участие с 17 по 19 мая, я скорее всего "отдам знакомым" 🫣
Продолжаю изучать kubernetes и углубляться в паттерны. Кстати, по паттернам снова вернулась к книжке от Head First. Другая, про которую здесь писала, оказалась даже с неточностями на грани ошибок.
На работе сегодня наконец доделала задачу, которую делала больше недели, в результате получилось больше 1000 строк кода и изменения в 3х репозиториях.
А у вас как проходят выходные, что интересного происходит? 🤗
26 апреля начался хакатон, в котором я хотела принять участие. Для меня первый хакатон прошёл, как первый блин комом. Второй, в котором думала принять участие с 17 по 19 мая, я скорее всего "отдам знакомым" 🫣
Продолжаю изучать kubernetes и углубляться в паттерны. Кстати, по паттернам снова вернулась к книжке от Head First. Другая, про которую здесь писала, оказалась даже с неточностями на грани ошибок.
На работе сегодня наконец доделала задачу, которую делала больше недели, в результате получилось больше 1000 строк кода и изменения в 3х репозиториях.
А у вас как проходят выходные, что интересного происходит? 🤗
🔥12
Всем привет и с праздником!
Сегодня хочу рассказать про рабочие моменты и интересный опыт на днях.
У нас команда относительно недавно собралась и ещё доформировывается, например, скоро придут ещё два мидл разработчика.
Сначала не было ощущения работы в команде, в основном мало с кем приходилось взаимодействовать, но незаметно для себя недавно ощутила, что появилась сплоченность и уже не так боязно обращаться к кому-то с вопросом, главное, как я поняла на опыте, идти к человеку, который "в теме".
Например, был у меня неожиданный баг от Maven, в терминале команды mvn clean install проходили успешно, но при этом не подтягивалась нужная мне зависимость. Оказалось, что если делать через терминал такую команду, то по умолчанию настройки settings.xml брались из папки мавен, а не указанный мной файл в другом месте. А если запустить эти же команды через вкладку справа в идее, то подцепляется кастомный файл с настройками.
Помог мне с этим разобраться наш технический специалист, с вопросами по бизнес логике уже другой. По кодстайлу есть ещё один крутой специалист, который одну из моих первых задач на этом проекте разнес в пух и прах (с предложениями как можно лучше на очень продвинутом уровне).
И так получилось, что на днях, вчера /позавчера, я посмотрела его МР (у нас поощряется взаимный код-ревью) и увидела, что у него в одном месте нарушается недавно принятое решение, как делать в схожих случаях. Набравшись храбрости, оставила ему комментарий и он хорошо его принял и сделал исправление.
Правда после этого он проревьюил 3 моих мелких задачи, но пока без замечаний.😅
Сегодня хочу рассказать про рабочие моменты и интересный опыт на днях.
У нас команда относительно недавно собралась и ещё доформировывается, например, скоро придут ещё два мидл разработчика.
Сначала не было ощущения работы в команде, в основном мало с кем приходилось взаимодействовать, но незаметно для себя недавно ощутила, что появилась сплоченность и уже не так боязно обращаться к кому-то с вопросом, главное, как я поняла на опыте, идти к человеку, который "в теме".
Например, был у меня неожиданный баг от Maven, в терминале команды mvn clean install проходили успешно, но при этом не подтягивалась нужная мне зависимость. Оказалось, что если делать через терминал такую команду, то по умолчанию настройки settings.xml брались из папки мавен, а не указанный мной файл в другом месте. А если запустить эти же команды через вкладку справа в идее, то подцепляется кастомный файл с настройками.
Помог мне с этим разобраться наш технический специалист, с вопросами по бизнес логике уже другой. По кодстайлу есть ещё один крутой специалист, который одну из моих первых задач на этом проекте разнес в пух и прах (с предложениями как можно лучше на очень продвинутом уровне).
И так получилось, что на днях, вчера /позавчера, я посмотрела его МР (у нас поощряется взаимный код-ревью) и увидела, что у него в одном месте нарушается недавно принятое решение, как делать в схожих случаях. Набравшись храбрости, оставила ему комментарий и он хорошо его принял и сделал исправление.
Правда после этого он проревьюил 3 моих мелких задачи, но пока без замечаний.😅
👍9🔥5😁1🎉1
Всем привет!
Хотели ли вы подключить GitHub Actions также сильно, как я? 🤓
Вчера вооружившись гуглом и помощью ИИ начала пробовать. И сегодня, когда, наконец, все получилось, напишу здесь небольшой гайд, как это можно повторить.
Цель: сделать проверку по чекстайлу, развернуть приложение с базой данных через docker compose файл и запустить тесты postman.
Шаг 1: Подключаем чекстайл.
Подключаем зависимость на maven-checkstyle-plugin последней версии.
Вот так может выглядеть настройка плагина в pom.xml в теге plugins (немного сдвину теги для удобочитаемости в телеграм):
Заводим файл checkstyle.xml, я взяла гугловский с разными проверками, в том числе на java doc.
Шаг 2: Пишем Dockerfile и docker-compose.yml
Dockerfile у меня был самый простой, где просто подключается java 21 и копируется джарник в папку контейнера.
На докер-композ файл для краткости даю ссылку.
Так как у меня этот проект относительно старенький, в нем Liquibase запускается вместе с приложением, не в отдельном модуле. Поэтому в докер-композ я делаю для базы данных проверку на ее готовность принимать запросы, и только после этого запускаю сервис-приложение.
Шаг 3: пишем инструкции для GitHub Actions.
Сам файл здесь.
Что там прописано: настройка, когда будет запускаться проверка - я выбрала по пушу и пулл-реквесту в мейн ветку.
Далее шаги установки 21 джавы, мавен, запуск билда проекта, чекстайл проверки, поднимается докер и запускается постман коллекция.
Последнее далось всего сложнее, помог этот гайд.
Хотели ли вы подключить GitHub Actions также сильно, как я? 🤓
Вчера вооружившись гуглом и помощью ИИ начала пробовать. И сегодня, когда, наконец, все получилось, напишу здесь небольшой гайд, как это можно повторить.
Цель: сделать проверку по чекстайлу, развернуть приложение с базой данных через docker compose файл и запустить тесты postman.
Шаг 1: Подключаем чекстайл.
Подключаем зависимость на maven-checkstyle-plugin последней версии.
Вот так может выглядеть настройка плагина в pom.xml в теге plugins (немного сдвину теги для удобочитаемости в телеграм):
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>${maven-checkstyle.version}</version>
<configuration>
<configLocation>../checkstyle.xml</configLocation>
<failOnViolation>true</failOnViolation>
<logViolationsToConsole>true</logViolationsToConsole>
<includeTestSourceDirectory>true</includeTestSourceDirectory>
</configuration>
<executions>
<execution>
<goals>
<goal>check</goal>
</goals>
<phase>compile</phase>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>com.puppycrawl.tools</groupId>
<artifactId>checkstyle</artifactId>
<version>${puppycrawl.version}</version>
</dependency>
</dependencies>
</plugin>
Заводим файл checkstyle.xml, я взяла гугловский с разными проверками, в том числе на java doc.
Шаг 2: Пишем Dockerfile и docker-compose.yml
Dockerfile у меня был самый простой, где просто подключается java 21 и копируется джарник в папку контейнера.
FROM amazoncorretto:21
COPY target/*.jar app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
На докер-композ файл для краткости даю ссылку.
Так как у меня этот проект относительно старенький, в нем Liquibase запускается вместе с приложением, не в отдельном модуле. Поэтому в докер-композ я делаю для базы данных проверку на ее готовность принимать запросы, и только после этого запускаю сервис-приложение.
Шаг 3: пишем инструкции для GitHub Actions.
Сам файл здесь.
Что там прописано: настройка, когда будет запускаться проверка - я выбрала по пушу и пулл-реквесту в мейн ветку.
Далее шаги установки 21 джавы, мавен, запуск билда проекта, чекстайл проверки, поднимается докер и запускается постман коллекция.
Последнее далось всего сложнее, помог этот гайд.
🔥16