This document describes the complete release process for PatternFly Java, including artifact deployment to Maven Central, documentation publishing, and GitHub release creation. The release process is automated through GitHub Actions and is triggered by pushing a version tag.
For information about continuous integration and automated verification, see CI/CD Workflows. For details about the build pipeline, see Build Pipeline.
The PatternFly Java release process consists of five coordinated stages executed as GitHub Actions workflows:
All stages execute automatically when a version tag matching the pattern v* is pushed to the repository.
Sources: .github/workflows/release.yml1-157
Sources: .github/workflows/release.yml11-157
Releases are triggered by pushing a Git tag with the v prefix to the repository. The tag name should match the semantic version in the POM files without the -SNAPSHOT suffix.
Before triggering a release, ensure:
-SNAPSHOT)The tag pattern is defined in .github/workflows/release.yml5-6 and must start with v to trigger the workflow.
Sources: .github/workflows/release.yml3-6 pom.xml31 bom/pom.xml32
The first stage deploys the Bill of Materials (BOM) to Maven Central. This must complete successfully before the main artifact deployment begins.
The BOM deployment executes in the deploy-bom job defined in .github/workflows/release.yml12-40 Key configuration:
bom module .github/workflows/release.yml25-36./mvnw --show-version --batch-mode --no-transfer-progress .github/workflows/release.yml16central-publishing-maven-plugin version 0.9.0 bom/pom.xml80-243autoPublish=true and waitUntil=published bom/pom.xml247-248The BOM POM is configured in the release profile at bom/pom.xml216-254 which includes:
maven-gpg-plugin bom/pom.xml222-239central-publishing-maven-plugin bom/pom.xml241-250Sources: .github/workflows/release.yml12-40 bom/pom.xml216-254 bom/pom.xml80
After the BOM is successfully deployed, all PatternFly Java modules are built, signed, and deployed to Maven Central. This stage depends on deploy-bom completing successfully .github/workflows/release.yml45
The deployment covers all modules defined in pom.xml113-126:
| Module | Artifact ID | Packaging | Description |
|---|---|---|---|
| build-config | patternfly-java-build-config | jar | Code quality rules |
| charts | patternfly-java-charts | gwt-lib | Chart components |
| components | patternfly-java-components | gwt-lib | UI components |
| core | patternfly-java-core | gwt-lib | Base classes and utilities |
| extensions/codeeditor | patternfly-java-codeeditor | gwt-lib | Code editor extension |
| extensions/finder | patternfly-java-finder | gwt-lib | Finder extension |
| gwt | patternfly-java-gwt | gwt-lib | GWT integration |
| icons | patternfly-java-icons | gwt-lib | Icon library |
| j2cl | patternfly-java-j2cl | jar | J2CL integration |
| layouts | patternfly-java-layouts | gwt-lib | Layout components |
| tokens | patternfly-java-tokens | gwt-lib | Design tokens |
The deploy-patternfly job executes the following steps:
mvn package .github/workflows/release.yml55mvn deploy -P release .github/workflows/release.yml65The release profile is defined in pom.xml483-556 and includes:
maven-source-plugin pom.xml500-508maven-javadoc-plugin pom.xml512-520maven-gpg-plugin pom.xml524-541central-publishing-maven-plugin pom.xml543-553The Central Publishing plugin configuration at pom.xml544-552:
publishingServerId: central
autoPublish: true
waitMaxTime: 86400
waitUntil: published
Sources: .github/workflows/release.yml42-69 pom.xml483-556 pom.xml113-126
The API documentation is generated using Maven Javadoc plugin and published to a separate GitHub Pages repository. This job runs independently of the deployment jobs and does not wait for them.
The publish-apidocs job defined in .github/workflows/release.yml71-104 executes these steps:
-Dquickly flag .github/workflows/release.yml88depgraph-maven-plugin .github/workflows/release.yml89patternfly-java/apidocs repository .github/workflows/release.yml96-104The Javadoc configuration is defined in pom.xml431-453:
The quick build profile skips various checks to speed up the build pom.xml465-481:
checkstyle.skip=true
editorconfig.skip=true
enforcer.skip=true
impsort.skip=true
license.skip=true
maven.javadoc.skip=true
skipTests=true
Sources: .github/workflows/release.yml71-104 pom.xml431-453 pom.xml465-481
The showcase application is built with J2CL and Parcel, then published to GitHub Pages. This job depends on successful completion of deploy-patternfly to ensure the latest artifacts are available .github/workflows/release.yml109
The showcase build uses two Maven profiles:
Showcase Profile - Activates the showcase module pom.xml558-562:
Production Profile - Optimizes J2CL compilation showcase/pom.xml223-249:
j2cl.compilationLevel=ADVANCED_OPTIMIZATIONS showcase/pom.xml226j2cl.incremental=false showcase/pom.xml227j2cl.sourcemaps=true showcase/pom.xml228npm run prod for Parcel bundling showcase/pom.xml237-244The J2CL Maven plugin is configured in showcase/pom.xml202-218:
j2cl.compilationLevel property showcase/pom.xml205showcase.js showcase/pom.xml208target/showcase showcase/pom.xml209The deployment uses JamesIves/github-pages-deploy-action .github/workflows/release.yml122-130 with:
patternfly-java/patternfly-java.github.io .github/workflows/release.yml125gh-pages .github/workflows/release.yml126./showcase/target/showcase .github/workflows/release.yml127Sources: .github/workflows/release.yml106-130 showcase/pom.xml223-249 showcase/pom.xml202-218 pom.xml558-562
The final stage creates a GitHub release with version information and changelog notes extracted from the CHANGELOG.md file. This job depends on successful artifact deployment .github/workflows/release.yml135
The release job defined in .github/workflows/release.yml132-157 performs:
battila7/get-version-action to extract version from tag .github/workflows/release.yml137-139mindsers/changelog-reader-action to parse release notes .github/workflows/release.yml141-146softprops/action-gh-release to create the release .github/workflows/release.yml147-156The changelog follows Keep a Changelog format as specified in CHANGELOG.md5 Each version section contains:
## [VERSION] - DATE CHANGELOG.md9Example from the changelog:
The action-gh-release is configured in .github/workflows/release.yml147-156:
PatternFly Java {version} .github/workflows/release.yml152Sources: .github/workflows/release.yml132-157 CHANGELOG.md1-761
Two additional workflows allow manual publishing of documentation and showcase without creating a full release.
The workflow defined in .github/workflows/apidocs.yml1-43 can be triggered manually via workflow_dispatch .github/workflows/apidocs.yml4 It performs the same steps as the release documentation publishing but can be executed at any time.
Trigger: GitHub Actions UI → "Publish API Documentation" workflow → "Run workflow"
The workflow defined in .github/workflows/showcase.yml1-35 can be triggered manually via workflow_dispatch .github/workflows/showcase.yml4 It builds and publishes the showcase independently of releases.
Trigger: GitHub Actions UI → "Publish Showcase" workflow → "Run workflow"
Key Difference: Manual showcase publishing requires installing the BOM first .github/workflows/showcase.yml24-25 since it may run against unreleased snapshot versions.
Sources: .github/workflows/apidocs.yml1-43 .github/workflows/showcase.yml1-35
Snapshot versions are automatically published to Maven Central after successful verification builds. This is handled by the snapshot workflow defined in .github/workflows/snapshot.yml1-49
The snapshot workflow is triggered by successful completion of the verify workflow .github/workflows/snapshot.yml4-6:
The workflow executes two jobs:
snapshot-bom - Deploys BOM snapshots .github/workflows/snapshot.yml9-28
mvn deploy -DskipTests .github/workflows/snapshot.yml24bom .github/workflows/snapshot.yml25snapshot - Deploys all module snapshots .github/workflows/snapshot.yml30-49
snapshot-bom .github/workflows/snapshot.yml33mvn deploy -DskipTests .github/workflows/snapshot.yml46Snapshots are deployed to the Maven Central snapshot repository configured in pom.xml72-76:
Note: Snapshot deployment does not use the release profile, so artifacts are not GPG signed and source/javadoc JARs are not attached.
Sources: .github/workflows/snapshot.yml1-49 pom.xml72-76
The release workflows require the following GitHub secrets to be configured in the repository settings:
| Secret Name | Purpose | Used By |
|---|---|---|
CENTRAL_USERNAME | Maven Central username | All deployment jobs |
CENTRAL_PASSWORD | Maven Central password | All deployment jobs |
MAVEN_GPG_PRIVATE_KEY | GPG private key for signing | Release deployment only |
MAVEN_GPG_PASSPHRASE | GPG key passphrase | Release deployment only |
PUBLISH_CONTENT | GitHub token for publishing | Documentation and showcase |
The secrets are referenced in the workflow files:
Sources: .github/workflows/release.yml33-124
After the release workflow completes successfully:
Verify Maven Central - Check that artifacts appear at https://central.sonatype.com/search?q=g:org.patternfly
Verify Documentation - Confirm API docs are published at https://patternfly-java.github.io/apidocs/
Verify Showcase - Confirm showcase is available at https://patternfly-java.github.io/
Verify GitHub Release - Check the release page at https://github.com/patternfly-java/patternfly-java/releases
Update Version - Bump version numbers for next development cycle:
Announce Release - The GitHub release automatically creates a discussion in the announcements category .github/workflows/release.yml156
Sources: .github/workflows/release.yml156 pom.xml31 bom/pom.xml32 README.md48
Refresh this wiki