-
Notifications
You must be signed in to change notification settings - Fork 3
Run CI on arm64, s390x and ppc64el #94
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This PR extends the CI pipeline to run builds and tests across multiple architectures (amd64, arm64, ppc64el, s390x) using QEMU emulation, enhancing cross-platform compatibility testing.
Key Changes:
- Added matrix strategy to run CI builds on four different architectures (amd64, arm64, ppc64el, s390x)
- Integrated QEMU setup for emulating non-amd64 architectures
- Updated JAVA_HOME path to be architecture-specific
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| name: Build on ${{ matrix.arch }} | ||
|
|
||
| steps: | ||
| - name: Set up QEMU for non-amd64 architectures |
Copilot
AI
Dec 3, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Setting up QEMU with 'platforms: all' is unnecessary and wasteful for amd64 builds. Consider adding a condition to skip QEMU setup when matrix.arch is 'amd64', as native execution is significantly faster than emulation.
| - name: Set up QEMU for non-amd64 architectures | |
| - name: Set up QEMU for non-amd64 architectures | |
| if: matrix.arch != 'amd64' |
| git clone https://github.com/openssl/openssl && cd openssl | ||
| git checkout openssl-3.0.2 | ||
| sudo apt update && sudo apt install build-essential -y | ||
| ./Configure enable-fips && make && sudo make install && sudo make install_fips |
Copilot
AI
Dec 3, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Building OpenSSL from source for each architecture will be extremely time-consuming under QEMU emulation (especially for s390x and ppc64el). Consider using pre-built OpenSSL FIPS packages if available, or caching the compiled binaries per architecture to avoid rebuilding on every CI run.
| - name: Build with Maven/JDK 17 | ||
| env: | ||
| JAVA_HOME: /usr/lib/jvm/java-17-openjdk-amd64/ | ||
| JAVA_HOME: /usr/lib/jvm/java-17-openjdk-${{ matrix.arch }}/ |
Copilot
AI
Dec 3, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The JAVA_HOME path construction assumes the JDK package follows the naming convention 'java-17-openjdk-', but the apt package 'openjdk-17-jdk-headless' typically installs to '/usr/lib/jvm/java-17-openjdk-amd64/' regardless of the host architecture. This path will be incorrect for emulated architectures. You need to either install architecture-specific JDK packages or detect the actual installation path.
No description provided.