mirror of https://github.com/harness/drone.git
fix: [CDE-473]: Checking default containerUser from the image. (#3105)
* fix: [CDE-473]: Checking default containerUser from the image.pull/3597/head
parent
aea3067a06
commit
ccf7673ee5
|
@ -309,21 +309,25 @@ func GetContainerInfo(
|
|||
return inspectResp.ID, usedPorts, remoteUser, nil
|
||||
}
|
||||
|
||||
func ExtractMetadataFromImage(
|
||||
func ExtractMetadataAndUserFromImage(
|
||||
ctx context.Context,
|
||||
imageName string,
|
||||
dockerClient *client.Client,
|
||||
) (map[string]any, error) {
|
||||
) (map[string]any, string, error) {
|
||||
imageInspect, _, err := dockerClient.ImageInspectWithRaw(ctx, imageName)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("error while inspecting image: %w", err)
|
||||
return nil, "", fmt.Errorf("error while inspecting image: %w", err)
|
||||
}
|
||||
imageUser := imageInspect.Config.User
|
||||
if imageUser == "" {
|
||||
imageUser = "root"
|
||||
}
|
||||
metadataMap := map[string]any{}
|
||||
if metadata, ok := imageInspect.Config.Labels["devcontainer.metadata"]; ok {
|
||||
dst := []map[string]any{}
|
||||
unmarshalErr := json.Unmarshal([]byte(metadata), &dst)
|
||||
if unmarshalErr != nil {
|
||||
return nil, fmt.Errorf("error while unmarshalling metadata: %w", err)
|
||||
return nil, imageUser, fmt.Errorf("error while unmarshalling metadata: %w", err)
|
||||
}
|
||||
for _, values := range dst {
|
||||
for k, v := range values {
|
||||
|
@ -331,7 +335,7 @@ func ExtractMetadataFromImage(
|
|||
}
|
||||
}
|
||||
}
|
||||
return metadataMap, nil
|
||||
return metadataMap, imageUser, nil
|
||||
}
|
||||
|
||||
func PullImage(
|
||||
|
|
|
@ -396,7 +396,7 @@ func (e *EmbeddedDockerOrchestrator) runGitspaceSetupSteps(
|
|||
return err
|
||||
}
|
||||
|
||||
metadataFromImage, err := ExtractMetadataFromImage(ctx, imageName, dockerClient)
|
||||
metadataFromImage, imageUser, err := ExtractMetadataAndUserFromImage(ctx, imageName, dockerClient)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -419,7 +419,7 @@ func (e *EmbeddedDockerOrchestrator) runGitspaceSetupSteps(
|
|||
gitspaceLogger.Info(fmt.Sprintf("Setting Environment : %v", environment))
|
||||
}
|
||||
|
||||
containerUser := GetContainerUser(runArgsMap, devcontainerConfig, metadataFromImage)
|
||||
containerUser := GetContainerUser(runArgsMap, devcontainerConfig, metadataFromImage, imageUser)
|
||||
remoteUser := GetRemoteUser(devcontainerConfig, metadataFromImage, containerUser)
|
||||
|
||||
homeDir := GetUserHomeDir(remoteUser)
|
||||
|
|
|
@ -51,6 +51,7 @@ func GetContainerUser(
|
|||
runArgsMap map[types.RunArg]*types.RunArgValue,
|
||||
devcontainerConfig types.DevcontainerConfig,
|
||||
metadataFromImage map[string]any,
|
||||
imageUser string,
|
||||
) string {
|
||||
if containerUser := getUser(runArgsMap); containerUser != "" {
|
||||
return containerUser
|
||||
|
@ -61,7 +62,7 @@ func GetContainerUser(
|
|||
if containerUser, ok := metadataFromImage["containerUser"].(string); ok {
|
||||
return containerUser
|
||||
}
|
||||
return ""
|
||||
return imageUser
|
||||
}
|
||||
|
||||
func ExtractRemoteUserFromLabels(inspectResp types2.ContainerJSON) string {
|
||||
|
|
Loading…
Reference in New Issue