GoogleContainerTools / jib

🏗 Build container images for your Java applications.
Apache License 2.0
13.6k stars 1.43k forks source link

Add option to tag child images when publishing multi platform #3518

Open ghost opened 2 years ago

ghost commented 2 years ago

Environment:

Description of the issue: When one uses the platforms section to upload multi-arch images, you end up with untagged images in ECR(probably others too) Stack overflow version of the same issue with docker buildx here.
When you look in ECR, you see the 2 child images as well as the manifest file. image

Expected behavior: It would be nice if the child images had an option to append a -ARCH to the tag used as the Manifest one. In the above example, it would be awesome if there was an option to tag them with 0.0.130-userAdd -- Manifest 0.0.130-userAdd-amd64 -- AMD version 0.0.130-userAdd-arm64 -- ARM version

The jib section's from block

    from {
        image = baseDockerImage
        platforms {
            platform {
                architecture = 'amd64'
                os = 'linux'
            }
            platform {
                architecture = 'arm64'
                os = 'linux'
            }
        }
    }
ghost commented 2 years ago

Would it be possible here: https://github.com/GoogleContainerTools/jib/blob/master/jib-core/src/main/java/com/google/cloud/tools/jib/builder/steps/PushImageStep.java#L81-L82

      Set<String> imageQualifiers =
          singlePlatform ? tags : Collections.singleton(manifestDigest.toString());

to optionally change the ternary else from a manifestDigest to

val platforImageTags = if (platformTagingEnabled) {
  tags.map{
     it + "currentPlatformHere"
  }
}else{
  listOf(manifestDigest.toString())
}

where currentPlatformHere is the archname(or os-archname)?

ghost commented 2 years ago

A prototype. I hardcoded the feature flag on. https://github.com/GoogleContainerTools/jib/pull/3519

mpeddada1 commented 2 years ago

Thanks for filing the feature request and the contribution @robert-csdisco! We will take a look at it.

ghost commented 2 years ago

I started wiring up the boolean through buildContext, but it looks like there's quite a few places to add it. Will wait to see if this is something y'all could accept before doing the config part

msvticket commented 1 week ago

@mpeddada1 I was a bout to open a PR to fix this, but I see that this issue is not labelled "Accepting Contributions". Is there a reason for that?