digital-garden/dev/java/Автоматизация релиза с помощью Gradle.md
Struchkov Mark 1536a6c68c
All checks were successful
continuous-integration/drone/push Build is passing
Обновление
2024-09-27 20:25:32 +03:00

3.8 KiB
Raw Permalink Blame History

aliases tags date zero-link parents linked
maturity/🌱
2023-10-21
../../meta/zero/00 Gradle

Чтобы автоматизировать релизы можно использовать специальный Gradle Plugin: GitHub - researchgate/gradle-release

Плагин выполняет следующие действия:

  • Проверяет наличие не зафиксированных изменений
  • Проверяет наличие не опубликованных изменений в удаленный репозиторий
  • Проверяет наличие SNAPSHOT зависимостей в файле gradle.properties
  • Меняет версию сервиса со SNAPSHOT на релизную. В диалоговом режиме, но можно использовать флаги при работе в CI.
  • Делает коммит.
  • Меняет версию сервиса с релизной на новый SNAPSHOT. В диалоговом режиме.
  • Автоматически публикует изменения, если удаленный репозиторий называется origin. Можно отключить или сконфигурировать названия веток.

Настройка плагина в корневом файле build.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] : ""}") }  
]

Также можно настроить передачу текста для сообщения в теге:

release.tagCommitMessage = project.findProperty('release.tagCommitMessage')

Запустить выполнение плагина:

gradle relase

Пример того, как будут выглядеть коммиты в Git


Мета информация

Область:: ../../meta/zero/00 Gradle Родитель:: Источник:: Автор:: Создана:: 2023-10-21

Дополнительные материалы

Дочерние заметки