digital-garden/knowledge/dev/snippet/Автоматизация релиза с помощью Gradle.md

63 lines
2.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
aliases:
tags:
- зрелость/🌱
date: "[[2023-10-21]]"
zero-link:
- "[[../../../garden/ru/meta/zero/00 Разработка]]"
parents:
linked:
- "[[Gradle]]"
link: https://github.com/researchgate/gradle-release
---
Чтобы автоматизировать релизы можно использовать специальный Gradle Plugin.
Плагин выполняет следующие действия:
- Проверяет наличие незакомиченных изменений
- Проверяет наличие не опубликованных изменений в удаленный репозиторий
- Проверяет наличие SNAPSHOT зависимостей в файле `gradle.properties`
- Меняет версию сервиса со SNAPSHOT на релизную. В диалоговом режиме.
- Делает коммит.
- Меняет версию сервиса с релизной на новый 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('stage')
}
}
```
- `createReleaseTag.enabled = false` - отключает проставление релизного тега
- `pushReleaseVersionBranch = 'rc'` - запушит релиз в ветку RC
- `preTagCommitMessage` и `newVersionCommitMessage` задает текст в релизных коммитах
- `requireBranch` позволят настроить из какой ветки можно будет выпускать релизы.
- [GitHub репозиторий с документацией](https://github.com/researchgate/gradle-release).
```bash
gradle relase
```
Пример того, как будут выглядеть коммиты в Git
![](Pasted%20image%2020231021121612.png)
## Дополнительные материалы
- [Автоматизация рутины при выпуске релизов с Maven](https://struchkov.dev/blog/ru/release-releases-with-maven/)