Conversation
Co-authored-by: edburns <75821+edburns@users.noreply.github.com>
This comment has been minimized.
This comment has been minimized.
|
@copilot investigate and fix these two workflow failures:
I expect the first one is ephemeral, since this PR should not have even touched the code relating to win32-x64. |
Co-authored-by: edburns <75821+edburns@users.noreply.github.com>
Investigated both links. |
Cross-SDK Consistency Review ✅This PR adds
No cross-SDK consistency issues found. The native in-process runtime (ARM64 classifier packaging) is a Java-specific infrastructure feature without equivalent counterparts in the Node.js, Python, Go, .NET, or Rust SDKs. No public API surface was added or modified, so no parity gaps were introduced.
|
There was a problem hiding this comment.
Pull request overview
Adds Linux ARM64 glibc support to Java’s experimental in-process runtime.
Changes:
- Adds ARM64 Maven packaging and validation.
- Extends CI, snapshot, and release publication.
- Documents ARM64 usage and support.
Show a summary per file
| File | Description |
|---|---|
java/sdk/pom.xml |
Selects the ARM64 runtime classifier. |
java/README.md |
Documents ARM64 setup and artifacts. |
java/docs/adr/adr-007-native-bundling-strategy.md |
Updates supported platform strategy. |
java/copilot-native/pom.xml |
Packages and attaches the ARM64 classifier. |
java/copilot-native/scripts/validate-native-host.mjs |
Validates ARM64 glibc hosts. |
java/copilot-native/scripts/validate-native-host.test.mjs |
Tests ARM64 host validation. |
java/copilot-native/scripts/validate-native-artifact.test.mjs |
Tests ARM64 artifacts and publications. |
java/copilot-native/scripts/validate-local-publication.mjs |
Requires ARM64 in complete publications. |
java/copilot-native/scripts/fetch-native.test.mjs |
Covers ARM64 native fetching. |
.github/workflows/java-sdk-tests.yml |
Adds ARM64 testing and publication validation. |
.github/workflows/java-publish-snapshot.yml |
Publishes ARM64 snapshots. |
.github/workflows/java-publish-maven.yml |
Publishes ARM64 releases. |
Review details
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
- Files reviewed: 12/12 changed files
- Comments generated: 0
- Review effort level: Balanced
There was a problem hiding this comment.
@copilot analyze the "-classifier" jobs in this workflow for DRY violations. If sufficient violations exist, remedy them by pulling the common steps into a separate job and making the existing jobs depend on that job. But only do this if you can be 100% sure it is safe.
There was a problem hiding this comment.
The classifier jobs share checkout and runtime setup, but those steps must execute on each platform-specific runner; a prerequisite job would not transfer its workspace, toolchain, or Maven cache and would only serialize the builds. The remaining build/validation steps intentionally differ by shell and platform hash tool. I therefore made no refactor, as it would add risk without safely removing the duplication.
edburns
left a comment
There was a problem hiding this comment.
@copilot in java-publish-maven.yml and java-publish-snapshot.yml, analyze the "-classifier" jobs in this workflow for DRY violations. If sufficient violations exist, remedy them by pulling the common steps into a separate job and making the existing jobs depend on that job. But only do this if you can be 100% sure it is safe.
I analyzed both workflows. The only common work is runner-local checkout plus Java/Node/Maven-cache setup; a separate job cannot share that state across Linux ARM64, Windows, and macOS, and would serialize the classifier builds without removing those steps. Immutable source resolution is already centralized ( |
roji
left a comment
There was a problem hiding this comment.
LGTM, thanks @edburns. My only thought is that this adds lots of lines that seem to be arch-specific - would it be possible to consolidate more, e.g. via a GitHub Actions matrix, so that we reduce duplication per arch?
But can be handled as a separate consolidation/cleanup pass later.
| echo "tag_commit=$TAG_COMMIT" >> "$GITHUB_OUTPUT" | ||
| echo "post_prepare_commit=$POST_PREPARE_COMMIT" >> "$GITHUB_OUTPUT" | ||
|
|
||
| build-linux-arm64-classifier: |
There was a problem hiding this comment.
Is this something we can do in a CI matrix for all archs, to avoid having to do one of these per arch? Same for the other blocks below.
Adds
linux-arm64support to the Java SDK’s experimental in-process runtime, matching the existing native packaging and publication model.Packaging
linux-arm64Maven profiles.runtime.node,copilot, and platform metadata.Validation
linux-arm64in coordinated classifier publication.CI and publishing
linux-arm64to thejava-sdk-inprocessmatrix usingubuntu-24.04-arm.Documentation