Workflow
JReleaser follows a series of steps to create and upload a release. You may invoke all steps in one go (the preferred way) or each step individually and separate from the others. Steps are executed sequentially; if one of them fails then the build fails. You may decide to resume from the start or from the last failed step.
Announcers are the only exception, if one of them fails then the build may continue however a warning is printed out. You may decide to rerun all announcers or just the one that failed.
The preferred option is to invoke Full Release as it runs all steps in the expected sequence. |
The following diagram shows the steps and their dependencies with one another:
The following sections describe these steps:
Download
Downloads assets that may be used by assemblers. Assets may also be external templates to be consumed by packagers or announcers.
Configured with Download.
Downloaded assets will be placed at ${basedir}/out/jreleaser/download.
This step must be invoked separately from the others. |
Assemble
Assembles distributions such as Jlink and Java Binary. Outputs will automatically configured/updated matching named distributions for Prepare, Package, and Publish.
Configured with Assemble.
Assembled artifacts will be placed at ${basedir}/out/jreleaser/assemble.
Given the nature of platform specific distributions this step must be invoked separately from the others. |
Changelog
Checksum
Calculates SHA256 checksums on all input files. This includes all artifacts per distribution and every matching file configured in the Files section.
All files must exist by the time Checksum is invoked, otherwise an error will occur. |
Configured with Checksum.
Checksums will be placed at ${basedir}/out/jreleaser/checksums
.
Catalog
Catalogs (SBOMs) all input files. This includes all artifacts per distribution and every matching file configured in the Files section.
All files must exist by the time Catalog is invoked, otherwise an error will occur. |
This step is optional. Configured with Catalog.
Catalogs will be placed at ${basedir}/out/jreleaser/catalogs
.
Depends on Checksum.
Sign
Creates PGP signatures for all input files. This includes all artifacts per distribution and every matching
file configured in the Files section, plus the output file from the Checksum
step ("checksums.txt"
), and archived catalogs.
This step is optional. Configured with Signing.
Signatures will be placed at ${basedir}/out/jreleaser/signatures
.
Depends on Checksum.
Deploy
Deploys staged artifacts to the configured destinations.
This step is optional. Configured with Deploy.
Upload
Release
Creates a release at the configured remote Git repository (see Release). This step uploads all checksums, signatures (if enabled), all distribution artifacts, every matching file configured in the Files section, plus archived catalogs. Automatically calculates a changelog & tags the release.
Configured with Release.
Prepare
Generates files required by Packagers such as Homebrew.
These files will be generated from templates existing in your project at a configured location (the templateDirectory
of
each packager) and default templates bundled in the JReleaser distribution. These template files rely on
Name Templates to parameterize their contents.
Configured with Packagers.
Prepared files will be placed at ${basedir}/out/jreleaser/${distributionName}/${packager}/prepared
.
Depends on Checksum.
Package
Processes the files created by the Prepare step to create specific packages. The Snap
packager may log into the Snapcraft store and publish a snap if its remotebBuild
filed is set to false
for example.
Other packagers do not require additional customization of the prepared files and simply copy the files over from their
matching prepared directory to their respective package directory.
Configured with Packagers.
Packaged files will be placed at ${basedir}/out/jreleaser/${distributionName}/${packager}/package
.
Depends on Prepare.
Publish
Publishes packaged files to their respective destinations. For example, for Homebrew this means creating or updating a "hombrew-tap" repository, for JBang this means creating or merging a "jbang-catalog" repository.
Configured with Packagers.
Depends on Package.
Does not explicitly depend on Release. However, some packagers such as Snap require downloading distribution files to locally build a snap.