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

63 lines
2.6 KiB
Markdown
Raw Normal View History

2024-06-13 21:01:37 +03:00
---
aliases:
tags:
- зрелость/🌱
date: "[[2023-10-21]]"
zero-link:
2024-09-01 20:44:54 +03:00
- "[[../../../garden/ru/meta/zero/00 Разработка]]"
2024-06-13 21:01:37 +03: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/)