Skip to content

7 «Выстраивание процесса непрерывной интеграции»

Notifications You must be signed in to change notification settings

levvolkov/JaCoCoCI

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

7. Домашнее задание к занятию «Выстраивание процесса непрерывной интеграции»

Цель задания

  1. Научиться настраивать CI на основе GitHub Actions.

Инструкция к заданию

  1. Скачайте и установите профессиональный редактор кода Intellij Idea Community Version.
  2. Откройте IDEA и создайте и настройте новый Maven-проект. Под каждую задачу следует создавать отдельный проект, если обратное не сказано в условии.
  3. Создайте пустой репозиторий на GitHub и свяжите его с папкой вашего проекта, а не с какой-либо другой.
  4. Правильно настройте репозиторий в плане .gitignore. Проигнорируйте папки .idea и target (раньше была out) и .iml-файл — их в репозитории быть не должно.
  5. 🆕 Закоммитьте и запушьте созданный проект на ГитХаб, настройте GitHub Actions, сделайте git pull.
  6. Выполните в IDEA требуемую задачу согласно условию.
  7. Проверьте соблюдение правил форматирования кода.
  8. 🆕 Убедитесь что при запуске mvn clean verify (раньше было mvn clean test) все тесты запускаются, проходят, а сборка завершается успешно
  9. Закоммитьте и отправьте в репозиторий содержимое папки проекта.
  10. 🆕 Убедитесь, что CI запустился на последнем коммите и завершился успешно — появилась зелёная галочка.

Материалы, которые пригодятся для выполнения задания

  1. Как создать Maven-проект в IDEA?
  2. Как отформатировать код в Java?
  3. 🆕 Как настроить CI на основе Github Actions?

Задание 1 — обязательное

Перед вами код сервисного класса:

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 и убедиться, что сборка упадёт из-за недостаточного покрытия;
  • проанализировать сгенерированный отчёт по покрытию, дописать недостающие тесты для полного покрытия, сам сервисный класс трогать нельзя;
  • сделать коммит и пуш, убедиться, что сборка на ГитХабе проходит.

Правила приёма работы

Прикреплена одна ссылка на публичный репозиторий с решением задачи.


Критерии оценки

  1. В каждом репозитории размещено содержимое папки проекта IDEA. Корнем репозитория должна быть именно папка проекта — не папка src, не папка внутри которой лежит папка проекта; таким образом в корне репозитория должна лежать сразу папка src.
  2. Есть файл .gitignore, игнорирующий ненужные файлы и папки, которые должны отсутствовать в репозитории. Если они присутствуют, их нужно оттуда удалить.
  3. Программа соответствует всем требованиям из условия задачи.
  4. Программа использует только те инструменты языка, которые мы проходили или которые прямо разрешены условием задачи.
  5. Программа работает правильно на всех примерах из условия.
  6. Программный код отформатирован и соответствует пройденным требованиям к качеству кода.
  7. При запуске mvn clean verify тесты запускаются и проходят, а сборка завершается успешно.
  8. В репозитории настроен CI на основе GitHub Actions, и он успешно прошёл на последнем коммите.
  9. Программа спроектирована достаточно логично и правильно, не противоречит общепринятым в производстве практикам и традициям.
  10. При наличии недочётов, в зависимости от их серьёзности и количества, работа может быть отправлена на доработку или принята — решение принимается на основе экспертной оценки работы.

About

7 «Выстраивание процесса непрерывной интеграции»

Topics

Resources

Stars

Watchers

Forks

Languages