- Научиться настраивать CI на основе GitHub Actions.
- Скачайте и установите профессиональный редактор кода Intellij Idea Community Version.
- Откройте IDEA и создайте и настройте новый Maven-проект. Под каждую задачу следует создавать отдельный проект, если обратное не сказано в условии.
- Создайте пустой репозиторий на GitHub и свяжите его с папкой вашего проекта, а не с какой-либо другой.
- Правильно настройте репозиторий в плане
.gitignore
. Проигнорируйте папки.idea
иtarget
(раньше былаout
) и.iml
-файл — их в репозитории быть не должно. - 🆕 Закоммитьте и запушьте созданный проект на ГитХаб, настройте GitHub Actions, сделайте
git pull
. - Выполните в IDEA требуемую задачу согласно условию.
- Проверьте соблюдение правил форматирования кода.
- 🆕 Убедитесь что при запуске
mvn clean verify
(раньше былоmvn clean test
) все тесты запускаются, проходят, а сборка завершается успешно - Закоммитьте и отправьте в репозиторий содержимое папки проекта.
- 🆕 Убедитесь, что CI запустился на последнем коммите и завершился успешно — появилась зелёная галочка.
- Как создать Maven-проект в IDEA?
- Как отформатировать код в Java?
- 🆕 Как настроить CI на основе Github Actions?
Перед вами код сервисного класса:
package ru.netology.statistic;
public class StatisticsService {
public long findMax(long[] incomes) {
long currentMax = incomes[0];
for (long income : incomes) {
if (currentMax < income) {
currentMax = income;
}
}
return currentMax;
}
}
И код тест-класса, который его тестирует:
package ru.netology.statistic;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.Assertions;
public class StatisticsServiceTest {
@Test
void findMax() {
StatisticsService service = new StatisticsService();
long[] incomesInBillions = {12, 5, 8, 4, 5, 3, 8, 6, 11, 11, 12};
long expected = 12;
long actual = service.findMax(incomesInBillions);
Assertions.assertEquals(expected, actual);
}
}
Ваша задача состоит в том, чтобы:
- создать Maven-проект и поместить в него эти два класса;
- запустить
mvn clean test
и убедиться, что тесты проходят; - создать публичный репозиторий и запушить в него проект;
- настроить CI на основе GitHub Actions, после чего не забыть сделать
git pull
; - добавить в проект JaCoCo и настроить его в режиме обрушения сборки по недостаточному покрытию, а именно 100% покрытие по счётчику
BRANCH
; - запустить
mvn clean verify
и убедиться, что сборка упадёт из-за недостаточного покрытия; - проанализировать сгенерированный отчёт по покрытию, дописать недостающие тесты для полного покрытия, сам сервисный класс трогать нельзя;
- сделать коммит и пуш, убедиться, что сборка на ГитХабе проходит.
Прикреплена одна ссылка на публичный репозиторий с решением задачи.
- В каждом репозитории размещено содержимое папки проекта IDEA. Корнем репозитория должна быть именно папка проекта — не папка
src
, не папка внутри которой лежит папка проекта; таким образом в корне репозитория должна лежать сразу папкаsrc
. - Есть файл
.gitignore
, игнорирующий ненужные файлы и папки, которые должны отсутствовать в репозитории. Если они присутствуют, их нужно оттуда удалить. - Программа соответствует всем требованиям из условия задачи.
- Программа использует только те инструменты языка, которые мы проходили или которые прямо разрешены условием задачи.
- Программа работает правильно на всех примерах из условия.
- Программный код отформатирован и соответствует пройденным требованиям к качеству кода.
- При запуске
mvn clean verify
тесты запускаются и проходят, а сборка завершается успешно. - В репозитории настроен CI на основе GitHub Actions, и он успешно прошёл на последнем коммите.
- Программа спроектирована достаточно логично и правильно, не противоречит общепринятым в производстве практикам и традициям.
- При наличии недочётов, в зависимости от их серьёзности и количества, работа может быть отправлена на доработку или принята — решение принимается на основе экспертной оценки работы.