Skip to content

Fabisev/automating mvn deployment#626

Open
fabisev wants to merge 5 commits into
feat/invocation-id-cross-wiringfrom
fabisev/automating-mvn-deployment
Open

Fabisev/automating mvn deployment#626
fabisev wants to merge 5 commits into
feat/invocation-id-cross-wiringfrom
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 (371508e) to head (e3223b5).

Additional details and impacted files
@@                        Coverage Diff                         @@
##             feat/invocation-id-cross-wiring     #626   +/-   ##
==================================================================
  Coverage                              65.38%   65.38%           
  Complexity                               212      212           
==================================================================
  Files                                     34       34           
  Lines                                    991      991           
  Branches                                 143      143           
==================================================================
  Hits                                     648      648           
  Misses                                   290      290           
  Partials                                  53       53           

☔ 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.

@darklight3it darklight3it added enhancement github_actions Pull requests that update GitHub Actions code labels Jul 26, 2026
… into fabisev/automating-mvn-deployment

# Conflicts:
#	aws-lambda-java-runtime-interface-client/pom.xml
@fabisev
fabisev changed the base branch from main to feat/invocation-id-cross-wiring July 27, 2026 10:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement github_actions Pull requests that update GitHub Actions code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants