From 6e3597a674ee39068b9829e7ee711918428d59ca Mon Sep 17 00:00:00 2001 From: Struchkov Mark Date: Tue, 10 Sep 2024 12:53:12 +0300 Subject: [PATCH] =?UTF-8?q?=D0=90=D0=B2=D1=82=D0=BE=D0=BC=D0=B0=D1=82?= =?UTF-8?q?=D0=B8=D0=B7=D0=B0=D1=86=D0=B8=D1=8F=20=D1=80=D0=B5=D0=BB=D0=B8?= =?UTF-8?q?=D0=B7=D0=B0=20=D1=81=20=D0=BF=D0=BE=D0=BC=D0=BE=D1=89=D1=8C?= =?UTF-8?q?=D1=8E=20Gradle.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Автоматизация релиза с помощью Gradle.md | 84 +++++++++++++++++++ meta/zero/00 Gradle.md | 2 + meta/zero/00 Maven.md | 3 +- 3 files changed, 88 insertions(+), 1 deletion(-) create mode 100644 dev/java/Автоматизация релиза с помощью Gradle.md diff --git a/dev/java/Автоматизация релиза с помощью Gradle.md b/dev/java/Автоматизация релиза с помощью Gradle.md new file mode 100644 index 00000000..44cc0d3a --- /dev/null +++ b/dev/java/Автоматизация релиза с помощью Gradle.md @@ -0,0 +1,84 @@ +--- +aliases: +tags: + - maturity/🌱 +date: "[[2023-10-21]]" +zero-link: + - "[[../../meta/zero/00 Gradle|00 Gradle]]" +parents: +linked: +--- +Чтобы автоматизировать релизы можно использовать специальный Gradle Plugin: [GitHub - researchgate/gradle-release](https://github.com/researchgate/gradle-release) + +Плагин выполняет следующие действия: +- Проверяет наличие не зафиксированных изменений +- Проверяет наличие не опубликованных изменений в удаленный репозиторий +- Проверяет наличие SNAPSHOT зависимостей в файле `gradle.properties` +- Меняет версию сервиса со SNAPSHOT на релизную. В диалоговом режиме, но можно использовать флаги при работе в CI. +- Делает коммит. +- Меняет версию сервиса с релизной на новый SNAPSHOT. В диалоговом режиме. +- Автоматически публикует изменения, если удаленный репозиторий называется `origin`. Можно отключить или сконфигурировать названия веток. + +Настройка плагина в корневом файле `build.gradle`: + +```gradle +buildscript { + repositories { + gradlePluginPortal() + mavenCentral() + } + dependencies { + classpath 'org.kordamp.gradle:jandex-gradle-plugin:1.0.0' + } +} + +apply plugin: "net.researchgate.release" +release { + createReleaseTag.enabled = false + pushReleaseVersionBranch = 'rc' + preTagCommitMessage = 'Candidate release version commit: ' + newVersionCommitMessage = 'New develop version commit: ' + git { + requireBranch.set('developer') + } +} +``` + +- `createReleaseTag.enabled = false` - отключает проставление релизного тега +- `pushReleaseVersionBranch = 'rc'` - запушит релиз в ветку rc +- `preTagCommitMessage` и `newVersionCommitMessage` задает текст в релизных коммитах +- `requireBranch` позволят настроить из какой ветки можно будет выпускать релизы. + +Можно изменить конфигурацию формата версии для разработки. По умолчанию меняется патч версия. Вот эта конфигурация изменит минорную версию. + +``` +versionPatterns = [ + /(\d+)\.\d+([^\d]*$)/: { Matcher m, Project p -> m.replaceAll("${(m[0][1] as int) + 1}.0${m[0][3] ? m[0][3] : ""}") } +] +``` + +Запустить выполнение плагина: + +```bash +gradle relase +``` + +Пример того, как будут выглядеть коммиты в Git + +![](Pasted%20image%2020231021121612.png) +*** +## Мета информация +**Область**:: [[../../meta/zero/00 Gradle|00 Gradle]] +**Родитель**:: +**Источник**:: +**Автор**:: +**Создана**:: [[2023-10-21]] +### Дополнительные материалы +- [GitHub - researchgate/gradle-release](https://github.com/researchgate/gradle-release) +- [Автоматизация рутины при выпуске релизов с Maven](https://struchkov.dev/blog/ru/release-releases-with-maven/) +### Дочерние заметки +```dataview +LIST +FROM [[]] +WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link) +``` \ No newline at end of file diff --git a/meta/zero/00 Gradle.md b/meta/zero/00 Gradle.md index 8afcc3a3..2939cc86 100644 --- a/meta/zero/00 Gradle.md +++ b/meta/zero/00 Gradle.md @@ -12,3 +12,5 @@ parents: linked: - "[[00 Maven]]" --- +- [[../../dev/java/Автоматизация релиза с помощью Gradle|Автоматизация релиза с помощью Gradle]] +- [[../../dev/java/Мультимодульные проекты c Jandex|Мультимодульные проекты c Jandex]] \ No newline at end of file diff --git a/meta/zero/00 Maven.md b/meta/zero/00 Maven.md index f824651a..0b3c7c01 100644 --- a/meta/zero/00 Maven.md +++ b/meta/zero/00 Maven.md @@ -14,4 +14,5 @@ linked: - "[[00 Gradle]]" title: Maven --- -- [Параллельная сборка модулей в Maven](../../dev/java/Параллельная%20сборка%20модулей%20в%20Maven.md) \ No newline at end of file +- [Параллельная сборка модулей в Maven](../../dev/java/Параллельная%20сборка%20модулей%20в%20Maven.md) +- [[../../dev/java/Мультимодульные проекты c Jandex|Мультимодульные проекты c Jandex]] \ No newline at end of file