Skip to content

Commit 374860c

Browse files
committed
fix: do not error if failed to push image
1 parent d14ab3d commit 374860c

File tree

2 files changed

+17
-7
lines changed

2 files changed

+17
-7
lines changed

envbuilder.go

+4-2
Original file line numberDiff line numberDiff line change
@@ -582,9 +582,11 @@ func run(ctx context.Context, opts options.Options, execArgs *execArgsInfo) erro
582582
if opts.PushImage {
583583
endStage = startStage("🏗️ Pushing image...")
584584
if err := executor.DoPush(image, kOpts); err != nil {
585-
return nil, xerrors.Errorf("do push: %w", err)
585+
opts.Logger(log.LevelError, "Failed to push image: %s", err)
586+
endStage("⚠️ Failed to push image!")
587+
} else {
588+
endStage("🏗️ Pushed image!")
586589
}
587-
endStage("🏗️ Pushed image!")
588590
}
589591

590592
return image, err

integration/integration_test.go

+13-5
Original file line numberDiff line numberDiff line change
@@ -1684,8 +1684,8 @@ RUN date --utc > /root/date.txt`, testImageAlpine),
16841684
_, err = runEnvbuilder(t, runOpts{env: append(opts,
16851685
envbuilderEnv("PUSH_IMAGE", "1"),
16861686
)})
1687-
// Then: it should fail with an Unauthorized error
1688-
require.ErrorContains(t, err, "401 Unauthorized", "expected unauthorized error using no auth when cache repo requires it")
1687+
// Then: it should succeed but not push the image
1688+
require.NoError(t, err)
16891689

16901690
// Then: the image should not be pushed
16911691
_, err = remote.Image(ref, remoteAuthOpt)
@@ -1901,14 +1901,22 @@ RUN date --utc > /root/date.txt`, testImageAlpine),
19011901
notRegURL := strings.TrimPrefix(notRegSrv.URL, "http://") + "/test"
19021902

19031903
// When: we run envbuilder with PUSH_IMAGE set
1904-
_, err := runEnvbuilder(t, runOpts{env: []string{
1904+
ctrID, err := runEnvbuilder(t, runOpts{env: []string{
19051905
envbuilderEnv("GIT_URL", srv.URL),
19061906
envbuilderEnv("CACHE_REPO", notRegURL),
19071907
envbuilderEnv("PUSH_IMAGE", "1"),
1908+
envbuilderEnv("INIT_SCRIPT", "exit \\${ENVBUILDER_EXIT_CODE:-254}"),
19081909
}})
1910+
require.NoError(t, err)
19091911

1910-
// Then: envbuilder should fail with a descriptive error
1911-
require.ErrorContains(t, err, "failed to push to destination")
1912+
// Then: envbuilder should fail with a descriptive status code.
1913+
client, err := client.NewClientWithOpts(client.FromEnv, client.WithAPIVersionNegotiation())
1914+
require.NoError(t, err)
1915+
defer client.Close()
1916+
// Get the container exit status.
1917+
status, err := client.ContainerInspect(context.Background(), ctrID)
1918+
require.NoError(t, err)
1919+
require.Equal(t, 254, status.State.ExitCode)
19121920
})
19131921

19141922
t.Run("CacheAndPushDevcontainerFeatures", func(t *testing.T) {

0 commit comments

Comments
 (0)