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