-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Structure and autoconfigurations (#143)
- Loading branch information
Showing
74 changed files
with
473 additions
and
429 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,84 +1,3 @@ | ||
= bezmen | ||
|
||
Шаблон репозитория backend-проекта на Java. | ||
|
||
== Ключевые принципы | ||
|
||
Решение и конвейер как сущности первого класса:: | ||
Решение (solution) - система, реализуемая для клиентов. Конвейер (pipeline) - система, реализуемая для разработчиков. | ||
|
||
Единый интерфейс для локальной разработки и непрерывной интеграции:: | ||
Семантика интерфейса подразумевает набор предопределенных абстракций, артефакты которых последовательно конструируются в ходе сборки. Перед началом конструирования выполняются обязательные проверки. Примеры абстракций: исходники (sources), бинарники (binaries), образы (images), стеки (stacks) и другие. | ||
|
||
Контентная адресация (aka идентификация по содержимому):: | ||
Контентная адресация (content addressability) делает конструирование *идемпотентным*. Для директорий с исходным кодом вычисляются их контентные идентификаторы (CID's). Затем вычисляются корневые идентификаторы решения и конвейера. Таким образом формируется 2 небольших дерева Меркла, хеши которых подставляются в качестве тегов/классификаторов артефактов соответствующих абстракций. Артефакт конструируется, только когда его контентный идентификатор меняется. | ||
|
||
Множественность окружений, назначений и настроек:: | ||
Решение/конвейер используется клиентами/разработчиками в разных окружениях (environs) для разных назначений (usages) и с разными настройками (prefs). Ключевые окружения/назначения/настройки именуются и проверяются в рамках непрерывной интеграции. Устаревшие окружения/назначения/настройки снимаются с поддержки. | ||
|
||
Тесты! Тесты! Тесты!:: | ||
Тестирование - один из самых важных (или даже самый важный) аспектов разработки! При тестировании проверяется поведение целевого объекта в различных ситуациях. В зависимости от подхода к подготовке зависимостей целевого объекта тесты можно разделить на 3 категории. | ||
Модульные тесты (unit tests)::: | ||
Все зависимости целевого объекта глушатся (stub) или мокируются (mock). | ||
Интеграционные тесты (integration tests)::: | ||
Все зависимости глушатся/мокируются кроме одной (иногда нескольких), которая честно конструируется. | ||
Сквозные тесты (end-to-end tests)::: | ||
Все зависимости честно конструируются. | ||
|
||
Роботизированная асинхронная заливка (merge):: | ||
Позволяет избежать ошибок/конкуренции и, как следствие, неоправданных потерь на загруженных ветках (например, таких как main). | ||
|
||
== Непрерывная интеграция (CI) | ||
|
||
Планы делим на 2 категории: | ||
|
||
. Проверяющие решение (solution) | ||
. Проверяющие конвейер (pipeline) | ||
|
||
=== Проверка решения | ||
|
||
Решение проверяем во всех окружениях, в которых его могут эксплуатировать клиенты. | ||
|
||
==== В пределах разумного (sanity) | ||
|
||
Запускаем анализ зависимостей, линтинг, статический анализ, компиляцию, модульные тесты и собираем/публикуем бинарники. | ||
|
||
==== Убедительная (convincing) | ||
|
||
Все перечисленное ранее. Плюс запускаем интеграционные тесты, анализируем покрытие и собираем/публикуем образы. | ||
|
||
==== За пределами сомнений (beyond doubt) | ||
|
||
Все перечисленное ранее. Плюс запускаем сквозные тесты, собираем/публикуем решения. | ||
|
||
=== Проверка конвейера | ||
|
||
Конвейер проверяем во всех окружениях, в которых его могут эксплуатировать разработчики. | ||
|
||
==== В пределах разумного (sanity) | ||
|
||
Запускаем линтинг исходного кода конвейера. | ||
|
||
==== За пределами сомнений (beyond doubt) | ||
|
||
Запускаем весь конвейер на минимальном наборе тестов. | ||
|
||
== Частые вопросы (FAQ) | ||
|
||
[qanda] | ||
Почему обязательными статусными проверками назначены тестовые отчеты, а не тестовые джобы?:: | ||
Это дает свободу выбора структуры джобов, т.к. в различных планах сборки она может быть разной. | ||
|
||
== Консольный интерфейс (CLI) | ||
|
||
ansible-playbook <abstraction>.yml [-l <selector>] | ||
|
||
== Todo | ||
|
||
. Релизная сборка | ||
. Параллелизация модульных тестов | ||
. Построение дерева хешей (взглянуть критически) | ||
. Версионирование библиотек и приложений (взглянуть критически) | ||
. Локальные проверки в удаленном репозитории | ||
. Чистка артефактов в удаленном репозитории | ||
. Поддержка нескольких версий Java |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
2 changes: 1 addition & 1 deletion
2
...essaging/springmvc/SepulkaController.java → ...aging/springwebmvc/SepulkaController.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
4 changes: 2 additions & 2 deletions
4
apps/foo/src/test/java/smecalculus/bezmen/storage/SepulkaDaoMyBatisPostgresIT.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,8 +1,8 @@ | ||
package smecalculus.bezmen.storage; | ||
|
||
import org.springframework.test.context.ContextConfiguration; | ||
import smecalculus.bezmen.construction.OrmMyBatisBeans; | ||
import smecalculus.bezmen.construction.MappingMyBatisBeans; | ||
import smecalculus.bezmen.construction.SepulkaDaoBeans; | ||
|
||
@ContextConfiguration(classes = {SepulkaDaoBeans.MyBatisPostgres.class, OrmMyBatisBeans.class}) | ||
@ContextConfiguration(classes = {SepulkaDaoBeans.MyBatisPostgres.class, MappingMyBatisBeans.class}) | ||
public class SepulkaDaoMyBatisPostgresIT extends SepulkaDaoIT {} |
4 changes: 2 additions & 2 deletions
4
apps/foo/src/test/java/smecalculus/bezmen/storage/SepulkaDaoSpringDataPostgresIT.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,8 +1,8 @@ | ||
package smecalculus.bezmen.storage; | ||
|
||
import org.springframework.test.context.ContextConfiguration; | ||
import smecalculus.bezmen.construction.OrmSpringDataBeans; | ||
import smecalculus.bezmen.construction.MappingSpringDataBeans; | ||
import smecalculus.bezmen.construction.SepulkaDaoBeans; | ||
|
||
@ContextConfiguration(classes = {SepulkaDaoBeans.SpringDataPostgres.class, OrmSpringDataBeans.class}) | ||
@ContextConfiguration(classes = {SepulkaDaoBeans.SpringDataPostgres.class, MappingSpringDataBeans.class}) | ||
public class SepulkaDaoSpringDataPostgresIT extends SepulkaDaoIT {} |
Oops, something went wrong.