Skip to content

Add s390x architecture support for cp-base-java#1384

Open
Krish Vora (KrishVora01) wants to merge 18 commits into8.2.xfrom
krish/s390x-support-8.2.x
Open

Add s390x architecture support for cp-base-java#1384
Krish Vora (KrishVora01) wants to merge 18 commits into8.2.xfrom
krish/s390x-support-8.2.x

Conversation

@KrishVora01
Copy link
Contributor

Summary

  • Add s390x build, deploy, and promote blocks for cp-base-java
  • Add s390x manifest creation with IS_S390X conditional for multi-arch images
  • Migrate from Spotify to fabric8 Docker plugin (non-template pom.xml changes)
  • Increase execution time limit to 2 hours
  • Update ci-tools ci-update-version to use --direct-pom-edit

Changes

  • service.yml: Add s390x_docker_repos and s390x_maven_modules config
  • .semaphore/semaphore.yml: Add s390x build block (PR builds)
  • .semaphore/cp_dockerfile_build.yml: Add s390x build, deploy, manifest blocks (task builds)
  • .semaphore/cp_dockerfile_promote.yml: Add s390x promote and manifest blocks
  • base/pom.xml, base-java/pom.xml, base-lite/pom.xml, jmxterm/pom.xml: Disable Spotify plugin
  • base-lite/Dockerfile.ubi9: Qualify golang FROM image

🤖 Generated with Claude Code

- service.yml: add s390x_docker_repos (cp-base-java) and
  s390x_maven_modules (base-java), increase execution_time_limit to 2h
- Disable spotify dockerfile-maven-plugin in base, base-java, base-lite,
  jmxterm pom.xml files (fabric8 migration from PR #1357)
- Fix golang image reference in base-lite/Dockerfile.ubi9

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@KrishVora01 Krish Vora (KrishVora01) requested a review from a team as a code owner March 16, 2026 04:54
Krish Vora (KrishVora01) and others added 10 commits March 16, 2026 10:55
The docker profile activates the Spotify dockerfile-maven-plugin,
which is disabled in the child POMs. Switch to docker-fabric8 so the
fabric8 docker-maven-plugin builds the images instead.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Change maven profile from jenkins,docker to jenkins,docker-fabric8
- Guard PACKAGING_BUILD_ARGS -D flags to prevent fabric8 null build
  arg failures from empty values

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
OS_PACKAGES_URL is always derived from PACKAGES_URL via sed, so it
will always be non-empty when PACKAGES_URL is set. No guard needed.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
When a guard condition is false, [[ -n "" ]] && ... returns exit
code 1 which fails the CI step. Append || true to ensure the block
always succeeds.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Was using ubi9-minimal.temurin-21-jdk.version (21.0.10.0.0.7-0)
instead of ubi9-minimal.image.version (9.7-...), causing fabric8 to
try pulling a non-existent ubi9-minimal image tag.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
s390x images are cross-built via docker buildx on amd64 CI machines,
but the resulting containers can't run on amd64 for testing. Adding
-Ddocker.skip-test=true to s390x maven commands to skip the tests.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The make-assembly-for-docker execution is disabled, so the package
directory is never created. The inherited create-licenses-for-docker
goal fails looking for that missing directory. Disable it too.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
… run

Instead of disabling make-assembly-for-docker (which broke the inherited
create-licenses-for-docker goal), just disable the Spotify plugin and
let fabric8 handle the Docker build while assembly and license generation
continue working as before.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
if statements always return 0 when the condition is false, avoiding
the exit code pitfall that required || true as a workaround.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Register QEMU binfmt for s390x before the maven build so Docker can
run s390x containers on amd64 CI machines for testing. Removes the
-Ddocker.skip-test=true workaround.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
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