ci: add master-only release JAR build workflow - #6925
Conversation
|
Consider integrating automatic GPG signing? |
Automatic GPG signing is not included in this PR. @bladehan1 The current release signing key is stored on a physical YubiKey, which GitHub-hosted runners cannot access. The signing process may also require PIN entry or physical touch, depending on the YubiKey policy. If we decide that this model is appropriate for java-tron's release security requirements, one option would be a dedicated, hardened self-hosted runner physically connected to the YubiKey, similar to the release-signing setup used by libp2p. Another option would be migration to a remotely accessible HSM or signing service. Either option would require a separate decision and security review covering runner isolation, access control, approval, auditing, and PIN/touch handling. For now, this workflow produces checksummed release artifacts. A release maintainer downloads those exact artifacts, signs them with the YubiKey, and uploads the JAR and signature files without rebuilding. |
What does this PR do?
Adds a manually triggered (
workflow_dispatch) GitHub Actions workflow that builds java-tron release JARs frommaster.The workflow:
refs/heads/master;eclipse-temurin:8-jdkcontainer (JDK 8), matching the existing PR CI build environment;ubuntu-24.04-armwith Temurin 17;java -versionin per-architecture metadata files;The final artifact contains:
The unsuffixed JARs are copies of their x64 counterparts, preserving the existing release naming convention.
Why are these changes required?
Release JARs are currently built on developers' local machines, where build environments and procedures may differ. Moving the build into CI provides consistent architecture-specific environments and makes each artifact traceable to its source commit and workflow run. Release publishers can download the CI artifact and upload the JARs without rebuilding them locally.
This PR has been tested by:
Each architecture job runs:
The workflow additionally verifies that:
FullNode --versionreports the expected commit SHA, binding the artifact to the source commit;SHA256SUMScontains checksums for all nine JARs.The implementation was locally validated with:
Follow up
The following are outside the scope of this PR:
Extra details
workflow_dispatchworkflow only after the file exists on the default branch. Release managers then selectmaster, so the workflow must also have propagated tomasterbefore it can be used.