Skip to content

Conversation

@lemeurherve
Copy link
Member

This change allow to build and publish experimental inbound agent image using jlink.

By default using a Debian JDK25 image as base, it cCan be extended to other distributions and experiments if needed.

If PUBLISH_EXPERIMENTAL is set to true, the experimental image would be published with a unique tag like 3355.v388858a_47b_33-1-debian_jdk25-experimental-jlink-not-prod-ready.

Extracted from:

Refs:

Testing done

$ make test
$ make test-experimental

$  make list
agent_alpine_jdk21
agent_alpine_jdk25
agent_debian_jdk17
agent_debian_jdk21
agent_debian_jdk25
agent_rhel_ubi9_jdk17
agent_rhel_ubi9_jdk21
agent_rhel_ubi9_jdk25
inbound-agent_alpine_jdk21
inbound-agent_alpine_jdk25
inbound-agent_debian_jdk17
inbound-agent_debian_jdk21
inbound-agent_debian_jdk25
inbound-agent_debian_jdk25_experimental-jlink
inbound-agent_rhel_ubi9_jdk17
inbound-agent_rhel_ubi9_jdk21
inbound-agent_rhel_ubi9_jdk25
$ make show-experimental
{
  "group": {
    "default": {
      "targets": [
        "experimental"
      ]
    },
    "experimental": {
      "targets": [
        "experimental_jlink"
      ]
    },
    "experimental_jlink": {
      "targets": [
        "inbound-agent_debian_jdk25_experimental-jlink"
      ]
    }
  },
  "target": {
    "inbound-agent_debian_jdk25_experimental-jlink": {
      "context": ".",
      "dockerfile": "debian/Dockerfile",
      "args": {
        "DEBIAN_RELEASE": "trixie-20260112",
        "EXPERIMENTAL_JLINK": "true",
        "JAVA_VERSION": "25.0.1+8",
        "VERSION": "3355.v388858a_47b_33"
      },
      "labels": {
        "org.opencontainers.image.title": "Jenkins experimental debian_jdk25 image using jlink"
      },
      "tags": [
        "docker.io/jenkins/inbound-agent:3355.v388858a_47b_33-1-debian_jdk25-experimental-jlink-not-prod-ready"
      ],
      "target": "inbound-agent",
      "platforms": [
        "linux/amd64",
        "linux/arm64",
        "linux/ppc64le",
        "linux/s390x"
      ],
      "output": [
        {
          "type": "cacheonly"
        }
      ]
    }
  }
}
# Check that no experimental image is pushed on publication by default if PUBLISH_EXPERIMENTAL is not set
$ export DOCKERHUB_ORGANISATION=hlemeur
$ ./build.sh publish
$ curl -s "https://registry.hub.docker.com/v2/repositories/${DOCKERHUB_ORGANISATION}/inbound-agent/tags?page_size=100" \
   | jq -r '.results[].name' | sort
3192.v713e3b_039fb_e-1-jdk21
3355.v388858a_47b_33-1
3355.v388858a_47b_33-1-alpine
3355.v388858a_47b_33-1-alpine-jdk17
3355.v388858a_47b_33-1-alpine-jdk21
3355.v388858a_47b_33-1-alpine-jdk25
3355.v388858a_47b_33-1-alpine3.23
3355.v388858a_47b_33-1-alpine3.23-jdk17
3355.v388858a_47b_33-1-alpine3.23-jdk21
3355.v388858a_47b_33-1-alpine3.23-jdk25
3355.v388858a_47b_33-1-inbound-agent_debian_jdk25-experimental-jlink-not-prod-ready
3355.v388858a_47b_33-1-jdk17
3355.v388858a_47b_33-1-jdk21
3355.v388858a_47b_33-1-jdk25
3355.v388858a_47b_33-1-rhel-ubi9
3355.v388858a_47b_33-1-rhel-ubi9-jdk17
3355.v388858a_47b_33-1-rhel-ubi9-jdk21
3355.v388858a_47b_33-1-rhel-ubi9-jdk25
alpine
alpine-jdk17
alpine-jdk21
alpine-jdk25
alpine3.23
alpine3.23-jdk17
alpine3.23-jdk21
alpine3.23-jdk25
bookworm-jdk21
jdk17
jdk21
jdk25
latest
latest-alpine
latest-alpine-jdk17
latest-alpine-jdk21
latest-alpine-jdk25
latest-alpine3.23
latest-alpine3.23-jdk17
latest-alpine3.23-jdk21
latest-alpine3.23-jdk25
latest-bookworm-jdk21
latest-jdk17
latest-jdk21
latest-jdk25
latest-rhel-ubi9
latest-rhel-ubi9-jdk17
latest-rhel-ubi9-jdk21
latest-rhel-ubi9-jdk25
latest-trixie
latest-trixie-jdk17
latest-trixie-jdk21
latest-trixie-jdk25
rhel-ubi9
rhel-ubi9-jdk17
rhel-ubi9-jdk21
rhel-ubi9-jdk25
trixie
trixie-jdk17
trixie-jdk21
trixie-jdk25

# Check that experimental image is pushed on publication if PUBLISH_EXPERIMENTAL is set to true
$ export PUBLISH_EXPERIMENTAL=true
$ make show-experimental
{
  "group": {
    "default": {
      "targets": [
        "experimental"
      ]
    },
    "experimental": {
      "targets": [
        "experimental_jlink"
      ]
    },
    "experimental_jlink": {
      "targets": [
        "inbound-agent_debian_jdk25_experimental-jlink"
      ]
    }
  },
  "target": {
    "inbound-agent_debian_jdk25_experimental-jlink": {
      "context": ".",
      "dockerfile": "debian/Dockerfile",
      "args": {
        "DEBIAN_RELEASE": "trixie-20260112",
        "EXPERIMENTAL_JLINK": "true",
        "JAVA_VERSION": "25.0.1+8",
        "VERSION": "3355.v388858a_47b_33"
      },
      "labels": {
        "org.opencontainers.image.title": "Jenkins experimental debian_jdk25 image using jlink"
      },
      "tags": [
        "docker.io/jenkins/inbound-agent:3355.v388858a_47b_33-1-debian_jdk25-experimental-jlink-not-prod-ready"
      ],
      "target": "inbound-agent",
      "platforms": [
        "linux/amd64",
        "linux/arm64",
        "linux/ppc64le",
        "linux/s390x"
      ],
      "output": [
        {
          "type": "image"
        },
        {
          "type": "docker"
        }
      ]
    }
  }
}
$ ./build.sh publish
$ curl -s "https://registry.hub.docker.com/v2/repositories/${DOCKERHUB_ORGANISATION}/inbound-agent/tags?page_size=100" \
   | jq -r '.results[].name' | sort | grep experimental
3355.v388858a_47b_33-1-debian_jdk25-experimental-jlink-not-prod-ready

Submitter checklist

  • Make sure you are opening from a topic/feature/bugfix branch (right side) and not your main branch!
  • Ensure that the pull request title represents the desired changelog entry
  • Please describe what you did
  • Link to relevant issues in GitHub or Jira
  • Link to relevant pull requests, esp. upstream and downstream changes
  • Ensure you have provided tests that demonstrate the feature works or the issue is fixed

Copy link
Contributor

@dduportal dduportal left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

#1131 (comment)

I think this is a bad idea to have experimental images in the normal DockerHub namespace. It will have consequences in term of usage and trust.

I think, though, that building a proper "incremental" (or "experimental", 2 words, same concept) system to provide early testers an image can be discussed and implemented. But not coupled with a specifc case such as jlink here: it is a "scope creep" approach which will only results in discussions and frictions by trying to kill 2 birds with one little stone

@lemeurherve lemeurherve mentioned this pull request Jan 20, 2026
6 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants