Skip to content

Commit 2c0b023

Browse files
gloursndeloof
authored andcommitted
add dry-run support for publish command
Signed-off-by: Guillaume Lours <[email protected]>
1 parent a345515 commit 2c0b023

File tree

1 file changed

+34
-31
lines changed

1 file changed

+34
-31
lines changed

pkg/compose/publish.go

Lines changed: 34 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -102,44 +102,47 @@ func (s *composeService) publish(ctx context.Context, project *types.Project, re
102102
Digest: digest.FromBytes(emptyConfig),
103103
Size: int64(len(emptyConfig)),
104104
}
105-
err = resolver.Push(ctx, named, configDescriptor, emptyConfig)
106-
if err != nil {
107-
return err
108-
}
109-
110-
imageManifest, err := json.Marshal(v1.Manifest{
111-
Versioned: specs.Versioned{SchemaVersion: 2},
112-
MediaType: v1.MediaTypeImageManifest,
113-
ArtifactType: "application/vnd.docker.compose.project",
114-
Config: configDescriptor,
115-
Layers: layers,
116-
})
117-
if err != nil {
118-
return err
105+
var imageManifest []byte
106+
if !s.dryRun {
107+
err = resolver.Push(ctx, named, configDescriptor, emptyConfig)
108+
if err != nil {
109+
return err
110+
}
111+
imageManifest, err = json.Marshal(v1.Manifest{
112+
Versioned: specs.Versioned{SchemaVersion: 2},
113+
MediaType: v1.MediaTypeImageManifest,
114+
ArtifactType: "application/vnd.docker.compose.project",
115+
Config: configDescriptor,
116+
Layers: layers,
117+
})
118+
if err != nil {
119+
return err
120+
}
119121
}
120122

121123
w.Event(progress.Event{
122124
ID: repository,
123125
Text: "publishing",
124126
Status: progress.Working,
125127
})
126-
127-
err = resolver.Push(ctx, named, v1.Descriptor{
128-
MediaType: v1.MediaTypeImageManifest,
129-
Digest: digest.FromString(string(imageManifest)),
130-
Size: int64(len(imageManifest)),
131-
Annotations: map[string]string{
132-
"com.docker.compose.version": api.ComposeVersion,
133-
},
134-
ArtifactType: "application/vnd.docker.compose.project",
135-
}, imageManifest)
136-
if err != nil {
137-
w.Event(progress.Event{
138-
ID: repository,
139-
Text: "publishing",
140-
Status: progress.Error,
141-
})
142-
return err
128+
if !s.dryRun {
129+
err = resolver.Push(ctx, named, v1.Descriptor{
130+
MediaType: v1.MediaTypeImageManifest,
131+
Digest: digest.FromString(string(imageManifest)),
132+
Size: int64(len(imageManifest)),
133+
Annotations: map[string]string{
134+
"com.docker.compose.version": api.ComposeVersion,
135+
},
136+
ArtifactType: "application/vnd.docker.compose.project",
137+
}, imageManifest)
138+
if err != nil {
139+
w.Event(progress.Event{
140+
ID: repository,
141+
Text: "publishing",
142+
Status: progress.Error,
143+
})
144+
return err
145+
}
143146
}
144147
w.Event(progress.Event{
145148
ID: repository,

0 commit comments

Comments
 (0)