We are using Gradle's axion-release plugin for release & version management.
If current commit is tagged commit, project has a release version( i.e., 0.1.0).
If there were any commits after last tag, project is in SNAPSHOT version( i.e., 0.1.1-SNAPSHOT).
axion-release follows the structure of git, only knows about tags on given branch.
Usage
first time generating a new library project
gradleinit--typekotlin-library--dslkotlin
Options for all gradle commands: -D or --system-prop, -P or --project-prop, -m or --dry-run
Check Task Dependencies With a Dry Run with dryRun: -m or --dry-run i.e., gradle publish -m
Version
display computed version
gradlecVgradlecurrentVersion# to get version # as plain textexport VERSION=$(gradlecV-q-Prelease.quiet)echo $VERSION
# spotlessCheck - Checks that sourcecode satisfies formatting steps.gradlespotlessCheck# spotlessApply - Applies code formatting steps to sourcecode in-place.gradlespotlessApply
Quarkus tasks
# addExtension - Adds Quarkus extensions specified by the user to the project.gradle:apps:greeting-quarkus:addExtension--extensions="health,metrics,openapi"gradle:apps:greeting-quarkus:addExtension--extensions="hibernate-validator"gradle:apps:greeting-quarkus:addExtension--extensions="jdbc,agroal,non-exist-ent"# buildNative - Building a native imagegradle:apps:greeting-quarkus:buildNativegradle:apps:greeting-quarkus:testNative# generateConfig - Generates an example config file# listExtensions - Lists the available quarkus extensionsgradle:apps:greeting-quarkus:listExtensions# quarkusBuild - Quarkus builds a runner jar based on the build jar# quarkusDev - Development mode: enables hot deployment with background compilationgradle:apps:greeting-quarkus:quarkusDev-Dsuspend-Ddebug# quarkusTestConfig - Sets the necessary system properties for the Quarkus tests to run.
# dryRungradlerelease-Prelease.dryRun# disable all checks for current releasegradlerelease-Prelease.disableChecks-Prelease.dryRun# real releasegradlerelease-Prelease.customUsername=sxc460-Prelease.customPassword=# bump Minor Version : 0.1.0 -> 0.2.0gradlemarkNextVersion-Prelease.incrementer=incrementMinor-Prelease.dryRun# in CI enveroment gradlerelease-Prelease.disableChecks-Prelease.pushTagsOnly-xtest--profile# if you want to manually set version with Jenkins paramsgradlecreateRelease-Prelease.disableChecks-Prelease.versionIncrementer=incrementMajor-Prelease.dryRungradlemarkNextVersion-Prelease.disableChecks-Prelease.incrementer=incrementMajor-Prelease.dryRun
Changelog
With every release, run git-chglog
# first timegit-chglog--init# on release branch, generate CHANGELOG.md and commit before merging back to develop & master.git-chglog-oCHANGELOG.mdgit-chglog-oCHANGELOG.md-next-tag2.0.0
Publish
publish after release
gradlepublish# skip tests in CIgradlepublish-xtest--profilegradlebuildpublish-Prelease.forceSnapshotgradlebuildpublish-Prelease.forceVersion=3.0.0CI=true GITHUB_USER=xmlking GITHUB_TOKEN=<GITHUB_NPM_TOKEN>gradlepublish
Docker
# Build an image tarball,# then you can load with `docker load --input build/jib-image.tar`gradlejibBuildTar# Build and publish docker imagegradlejib# Build image locally useing your Docker daemon (on publish)gradlejibDockerBuild
local testing
pull a remote image and locally use it as base image
# pull base image firstdockerpullgcr.io/distroless/java:11# use local docker image as base, build image only (on publish)gradlejibDockerBuild-PbaseDockerImage=docker://gcr.io/distroless/java:11# you can run your local docker imagedockerrun-itxmlking/micro-apps-demo:1.6.1-SNAPSHOT
Dependencies
# Report dependenciesgradledependencyUpdates-Drevision=release-DoutputFormatter=json,xml# Update dependencies, `dependsOn dependencyUpdates`gradleuseLatestVersions# This task will succeed if all available updates were successfully applied by useLatestVersionsgradleuseLatestVersions&&gradleuseLatestVersionsCheck
Gradle
# upgrade gradlew# upgrade project gradle versiongradlewrapper--gradle-version6.2.2--distribution-typeall# gradle daemon status gradle--statusgradle--stop# show dependenciesgradleclassifier:dependenciesgradleclassifier:dependencyInsight--dependencyspring-messaging# refresh dependenciesgradlebuild-xtest--refresh-dependencies# display version gradlecV