This page documents the five GitHub Actions workflows that automate verification, publishing, and deployment for the patternfly-java project. Each workflow corresponds to a file under .github/workflows/. This page covers their triggers, jobs, dependencies, and the secrets they require.
For the Maven build steps these workflows invoke (lifecycle phases, profiles, plugins), see the Build Pipeline page (2.3). For the release versioning conventions and Maven Central publication sequence, see the Release Process page (2.5).
| Workflow file | Name | Trigger | Purpose |
|---|---|---|---|
verify.yml | Verify Codebase | push/PR to main | Compile and verify all modules |
snapshot.yml | Publish Snapshot | after Verify Codebase | Deploy -SNAPSHOT artifacts to Maven Central |
release.yml | Release PatternFly Java | push of v* tag | Deploy release artifacts, publish docs and showcase, create GitHub release |
apidocs.yml | Publish API Documentation | manual (workflow_dispatch) | Regenerate and publish Javadoc |
showcase.yml | Publish Showcase | manual (workflow_dispatch) | Rebuild and publish showcase site |
File: .github/workflows/verify.yml
Trigger: Every push to main and every pull request targeting main.
Jobs:
| Job ID | Steps |
|---|---|
verify | Checkout → setup Java 25 (Temurin) w/ Maven cache → mvnw install in bom/ → mvnw verify from root |
The verify job installs the BOM module first (so downstream modules can resolve managed versions) before running the full verify lifecycle on the root project. No deployment credentials are used here.
Diagram: Verify Workflow
Sources: .github/workflows/verify.yml1-25
File: .github/workflows/snapshot.yml
Trigger: workflow_run — fires automatically when the Verify Codebase workflow completes (on any result).
Jobs:
| Job ID | Depends on | Steps |
|---|---|---|
snapshot-bom | — | Checkout → setup Java 25 w/ Maven Central server config → mvnw deploy -DskipTests in bom/ |
snapshot | snapshot-bom | Checkout → setup Java 25 w/ Maven Central server config → mvnw deploy -DskipTests from root |
The BOM must be deployed first so that the root module's managed dependency resolution can find the freshly deployed BOM snapshot when its own deploy runs.
Required secrets: CENTRAL_USERNAME, CENTRAL_PASSWORD
Note: Snapshots are deployed without GPG signing (no release profile). Tests are skipped (-DskipTests) since the Verify workflow already ran them.
Diagram: Snapshot Workflow
Sources: .github/workflows/snapshot.yml1-50
File: .github/workflows/release.yml
Trigger: Push of any tag matching v* (e.g., v0.9.0).
Permissions: contents: write (required for creating GitHub releases).
This is the most complex workflow, containing five jobs with explicit dependency ordering.
| Job ID | Depends on | Action |
|---|---|---|
deploy-bom | — | Package and deploy BOM to Maven Central (signed) |
deploy-patternfly | deploy-bom | Package and deploy all root artifacts to Maven Central (signed) |
publish-apidocs | — (runs in parallel) | Build and push Javadoc to patternfly-java/apidocs |
publish-showcase | deploy-patternfly | Build showcase with showcase,prod profiles and push to patternfly-java/patternfly-java.github.io |
release | deploy-patternfly | Create GitHub release entry from CHANGELOG.md |
.github/workflows/release.yml12-40
Runs mvnw package inside bom/, then reconfigures setup-java with Maven Central credentials and GPG key, then runs mvnw deploy -P release inside bom/. The double setup-java call is intentional: the first call populates the Maven cache; the second overwrites settings.xml with the server and GPG configuration needed for Central publication.
.github/workflows/release.yml42-69
Same double setup-java pattern as deploy-bom, but runs from the root project directory, deploying all modules except the BOM. This job waits for deploy-bom to finish so the signed BOM is already available on Maven Central when the root POM references it.
.github/workflows/release.yml71-104
Steps:
depgraph:aggregate)-Dquickly (skips tests and slow steps)depgraph:aggregate from rootapidoc/ directory, run four Maven commands:
maven-antrun-plugin:run@copy-doc-filesmaven-antrun-plugin:run@copy-sourcesmaven-antrun-plugin:run@copy-demosjavadoc:javadoc./apidoc/target/reports/apidocs to the gh-pages branch of patternfly-java/apidocs using JamesIves/github-pages-deploy-actionRequired secret: PUBLISH_CONTENT (a PAT with write access to the target repository)
.github/workflows/release.yml106-130
Runs mvnw --projects org.patternfly:patternfly-java-showcase --also-make -P showcase,prod package, then deploys ./showcase/target/showcase to the gh-pages branch of patternfly-java/patternfly-java.github.io.
.github/workflows/release.yml132-156
Uses three third-party actions:
battila7/get-version-action — extracts the version string from the tag (e.g., v0.9.0 → 0.9.0)mindsers/changelog-reader-action — reads the section for that version from CHANGELOG.mdsoftprops/action-gh-release — creates a GitHub release with the changelog excerpt as body, marked as a non-draft, non-prerelease, and linked to an announcements discussion categoryRequired secrets: CENTRAL_USERNAME, CENTRAL_PASSWORD, MAVEN_GPG_PRIVATE_KEY, MAVEN_GPG_PASSPHRASE, PUBLISH_CONTENT, GITHUB_TOKEN (built-in)
Diagram: Release Workflow Job Dependency Graph
Sources: .github/workflows/release.yml1-156
File: .github/workflows/apidocs.yml
Trigger: workflow_dispatch — triggered manually from the GitHub Actions UI.
Permissions: contents: write
This workflow contains a single job, publish-apidocs, which is structurally identical to the publish-apidocs job in release.yml. It exists so maintainers can republish Javadoc independently of a full release — for example, after fixing documentation comments without bumping the version.
Steps mirror those in the release workflow: install BOM → install -Dquickly → depgraph:aggregate → antrun copy steps → javadoc:javadoc in apidoc/ → deploy to patternfly-java/apidocs.
Required secret: PUBLISH_CONTENT
Sources: .github/workflows/apidocs.yml1-44
File: .github/workflows/showcase.yml
Trigger: workflow_dispatch — triggered manually from the GitHub Actions UI.
Permissions: contents: write
Single job, publish-showcase. Unlike the release version, this standalone workflow installs the BOM first (mvnw install in bom/) before building the showcase. This is necessary because, in the manual case, no prior deploy has put the BOM into Maven Central; it must be installed into the local Maven repository so the showcase build can resolve it.
Steps:
mvnw install in bom/mvnw --projects org.patternfly:patternfly-java-showcase --also-make -P showcase,prod package./showcase/target/showcase → patternfly-java/patternfly-java.github.io on gh-pagesRequired secret: PUBLISH_CONTENT
Sources: .github/workflows/showcase.yml1-36
| Secret | Used by workflows | Purpose |
|---|---|---|
CENTRAL_USERNAME | snapshot.yml, release.yml | Maven Central Portal username |
CENTRAL_PASSWORD | snapshot.yml, release.yml | Maven Central Portal password |
MAVEN_GPG_PRIVATE_KEY | release.yml | GPG private key for artifact signing |
MAVEN_GPG_PASSPHRASE | release.yml | Passphrase for the GPG private key |
PUBLISH_CONTENT | release.yml, apidocs.yml, showcase.yml | GitHub PAT with write access to target repos |
GITHUB_TOKEN | release.yml | Built-in Actions token for creating GitHub releases |
Diagram: Trigger Sources and Resulting Workflow Chains
Sources: .github/workflows/verify.yml1-7 .github/workflows/snapshot.yml1-7 .github/workflows/release.yml1-6 .github/workflows/apidocs.yml1-7 .github/workflows/showcase.yml1-7
Refresh this wiki