fix(auth): complete Task 13 deployment review

This commit is contained in:
2026-08-17 22:15:41 +02:00
parent 7e52df2702
commit 0d0c15b4b8
11 changed files with 228 additions and 50 deletions
+25 -13
View File
@@ -394,7 +394,8 @@ type renderedCompose struct {
Name string `json:"name"`
} `json:"volumes"`
Services map[string]struct {
Image string `json:"image"`
Image string `json:"image"`
ContainerName string `json:"container_name"`
} `json:"services"`
}
@@ -474,18 +475,13 @@ func imageIdentities(ctx context.Context, installation config.Installation, runn
if err != nil {
return nil, err
}
matching := make([]composeImageIdentity, 0, len(inspected))
for _, item := range inspected {
if item.Service == "" || item.Service == name {
matching = append(matching, item)
}
expectedContainer := rendered.Services[name].ContainerName
if expectedContainer == "" {
expectedContainer = installation.ProjectName() + "-" + name + "-1"
}
if len(matching) > 1 {
return nil, errors.New("Docker Compose returned invalid image identities")
}
id := ""
if len(matching) == 1 {
id = matching[0].ID
id, err := selectComposeImageIdentity(name, expectedContainer, inspected)
if err != nil {
return nil, err
}
images = append(images, ImageIdentity{Service: name, Reference: rendered.Services[name].Image, ID: id})
}
@@ -500,7 +496,7 @@ type composeImageIdentity struct {
func decodeComposeImageIdentities(value string) ([]composeImageIdentity, error) {
trimmed := strings.TrimSpace(value)
if trimmed == "" {
if trimmed == "" || trimmed == "null" {
return nil, nil
}
var identities []composeImageIdentity
@@ -530,6 +526,22 @@ func decodeComposeImageIdentities(value string) ([]composeImageIdentity, error)
return identities, nil
}
func selectComposeImageIdentity(service string, expectedContainer string, identities []composeImageIdentity) (string, error) {
if len(identities) == 0 {
return "", nil
}
matching := make([]composeImageIdentity, 0, len(identities))
for _, item := range identities {
if item.Service == service || item.Service == "" && item.ContainerName == expectedContainer {
matching = append(matching, item)
}
}
if len(matching) != 1 {
return "", errors.New("Docker Compose returned invalid image identities")
}
return matching[0].ID, nil
}
func installationRunning(ctx context.Context, installation config.Installation, runner archiveRunner) (bool, error) {
result, err := runner.Run(ctx, installation.ComposeArgs("ps", "--all", "--format", "json"), nil)
if err != nil {