Skip to content

Commit 6a1c487

Browse files
bkneispascalbreuninger
authored andcommitted
Detect arch when getting image for prebuild
1 parent bcbe87c commit 6a1c487

File tree

2 files changed

+25
-1
lines changed

2 files changed

+25
-1
lines changed

pkg/devcontainer/build.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -307,7 +307,7 @@ func (r *runner) buildImage(
307307
r.Log.Debugf("Try to find prebuild image %s in repositories %s", prebuildHash, strings.Join(options.PrebuildRepositories, ","))
308308
for _, prebuildRepo := range options.PrebuildRepositories {
309309
prebuildImage := prebuildRepo + ":" + prebuildHash
310-
img, err := image.GetImage(ctx, prebuildImage)
310+
img, err := image.GetImageForArch(ctx, prebuildImage, targetArch)
311311
if err == nil && img != nil {
312312
// prebuild image found
313313
r.Log.Infof("Found existing prebuilt image %s", prebuildImage)

pkg/image/image.go

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,30 @@ func GetImage(ctx context.Context, image string) (v1.Image, error) {
3737
return img, err
3838
}
3939

40+
func GetImageForArch(ctx context.Context, image, arch string) (v1.Image, error) {
41+
ref, err := name.ParseReference(image)
42+
if err != nil {
43+
return nil, err
44+
}
45+
46+
keychain, err := getKeychain(ctx)
47+
if err != nil {
48+
return nil, fmt.Errorf("create authentication keychain: %w", err)
49+
}
50+
51+
remoteOptions := []remote.Option{
52+
remote.WithAuthFromKeychain(keychain),
53+
remote.WithPlatform(v1.Platform{Architecture: arch, OS: "linux"}),
54+
}
55+
56+
img, err := remote.Image(ref, remoteOptions...)
57+
if err != nil {
58+
return nil, errors.Wrapf(err, "retrieve image %s", image)
59+
}
60+
61+
return img, err
62+
}
63+
4064
func CheckPushPermissions(image string) error {
4165
ref, err := name.ParseReference(image)
4266
if err != nil {

0 commit comments

Comments
 (0)