Skip to content

Fabisev/automating mvn deployment#626

Open
fabisev wants to merge 4 commits into
mainfrom
fabisev/automating-mvn-deployment
Open

Fabisev/automating mvn deployment#626
fabisev wants to merge 4 commits into
mainfrom
fabisev/automating-mvn-deployment

Conversation

@fabisev

@fabisev fabisev commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

Issue #, if available:

Description of changes:

Replaces the manual mvn deploy release with GitHub Actions release pipelines that build, test, sign, and publish CI-validated artifacts to Maven Central.

  • release.yml: workflow_dispatch pipeline for the six pure-Java modules. Pinned JDK 8, mvn verify gate, then release:prepare/release:perform with a publish-safe ordering (prepare locally, publish, then git push --atomic only after publish succeeds; failure rolls back the runner and never modifies the remote). Repo-wide release concurrency group so releases never overlap.
  • release-runtime-interface-client.yml: dedicated RIC pipeline. RIC ships a JNI native library for four targets plus a main JAR, so each native library is built on a runner of its own architecture (x86_64 on ubuntu-latest, aarch_64 on ubuntu-24.04-arm) instead of QEMU emulation, then one job assembles all artifacts and publishes them.
  • POM changes across all modules: SNAPSHOT versions, maven-release-plugin configuration, SCM developerConnection, and autoPublish=true.
  • Credentials are fetched at runtime via GitHub OIDC

Testing done:

Validated locally with act (GitHub Actions run in a container)

  • Workflow mechanics (dry-run of release.yml): checkout, pinned JDK 8, mvn verify, and release:prepare -DdryRun pass; correct release tag and next-development version bump.
  • Publish chain (against a personal Sonatype namespace I control, with auto-publish disabled and the deployment dropped afterward): GPG signing, token auth, upload, and Sonatype validation all succeed with no errors, exercising the same signing/settings/publishing mechanic the real workflow uses.
  • log4j2 module correctness (built on pinned JDK 8): the jar contains the Log4j2Plugins.dat descriptor, classes are Java 8 bytecode, and the descriptor unit test passes.
  • RIC native build: the arm64 classifier jar was built on JDK 8 and contains a correct ARM aarch64 ELF shared object.
  • RIC multi-artifact publish shape: a main jar plus four classifier jars deploy as a single deployment and validate with no errors.
  • Credential fetch (read-only)

Not exercisable outside a real run in this repo: the live token exchange and the CI build-matrix assembly. These will be covered by the first dry-run (skip_publish: true) after merge.

Target (OCI, Managed Runtime, both): N/A

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

Fabiana Severin added 4 commits July 14, 2026 17:09
Add maven-release-plugin configuration with module-specific tag formats
and SCM connection details to enable automated Maven deployments across
all library modules.
Combine the maven-release-plugin/SCM/autoPublish config (this branch) with
the maven-toolchains-plugin added on main (PR #617) so every module carries
both plugins in a single <build> section.
Add .github/workflows/release.yml, a workflow_dispatch pipeline that
builds, tests, and publishes a single module to Maven Central in one
pinned JDK 8 environment, replacing the manual mvn deploy from a
developer workstation.

The release step prepares locally, publishes, then pushes the commits
and module-scoped tag atomically, so a failed publish never leaves an
orphan tag on the remote; a failure path rolls back the runner state.
Releases are serialized repo-wide via a shared concurrency group.
Signing/publishing secrets are not wired yet, so only the dry-run
path (skip_publish) works without credentials for now.

Set all module versions to -SNAPSHOT as the release plugin's expected
starting point, and merge a duplicate top-level <build> section in the
events POM introduced when the toolchains change (PR #617) met the
release-plugin config on this branch.
@codecov

codecov Bot commented Jul 24, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 65.38%. Comparing base (69b9b2b) to head (c9e1061).

Additional details and impacted files
@@            Coverage Diff            @@
##               main     #626   +/-   ##
=========================================
  Coverage     65.38%   65.38%           
  Complexity      211      211           
=========================================
  Files            34       34           
  Lines           988      988           
  Branches        142      142           
=========================================
  Hits            646      646           
  Misses          290      290           
  Partials         52       52           

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant