Skip to content

Commit

Permalink
fix(dependencies): introduce ImageDigest mode, hide ImageID mode
Browse files Browse the repository at this point in the history
Signed-off-by: Timofey Kirillov <timofey.kirillov@flant.com>
  • Loading branch information
distorhead committed Jan 17, 2023
1 parent 656c043 commit cc352fd
Show file tree
Hide file tree
Showing 15 changed files with 215 additions and 128 deletions.
8 changes: 4 additions & 4 deletions docs/_data/werf_yaml.yml
Expand Up @@ -276,8 +276,8 @@ sections:
- name: type
value: "string"
description:
en: "Type of image info: ImageName, ImageID, ImageRepo or ImageTag"
ru: "Тип импортируемой информации об образе: ImageName, ImageID, ImageRepo или ImageTag"
en: "Type of image info: ImageName, ImageDigest, ImageRepo or ImageTag"
ru: "Тип импортируемой информации об образе: ImageName, ImageDigest, ImageRepo или ImageTag"
- name: targetBuildArg
value: "string"
description:
Expand Down Expand Up @@ -797,8 +797,8 @@ sections:
- name: type
value: "string"
description:
en: "Type of image info: ImageName, ImageID, ImageRepo or ImageTag"
ru: "Тип импортируемой информации об образе: ImageName, ImageID, ImageRepo или ImageTag"
en: "Type of image info: ImageName, ImageDigest, ImageRepo or ImageTag"
ru: "Тип импортируемой информации об образе: ImageName, ImageDigest, ImageRepo или ImageTag"
- name: targetEnv
value: "string"
description:
Expand Down
4 changes: 2 additions & 2 deletions docs/pages_en/usage/build/images.md
Expand Up @@ -338,13 +338,13 @@ dependencies:
imports:
- type: ImageName
targetBuildArg: AUTH_IMAGE_NAME
- type: ImageID
- type: ImageDigest
targetBuildArg: AUTH_IMAGE_DIGEST
- image: controlplane
imports:
- type: ImageName
targetBuildArg: CONTROLPLANE_IMAGE_NAME
- type: ImageID
- type: ImageDigest
targetBuildArg: CONTROLPLANE_IMAGE_DIGEST
```

Expand Down
4 changes: 2 additions & 2 deletions docs/pages_ru/usage/build/images.md
Expand Up @@ -339,13 +339,13 @@ dependencies:
imports:
- type: ImageName
targetBuildArg: AUTH_IMAGE_NAME
- type: ImageID
- type: ImageDigest
targetBuildArg: AUTH_IMAGE_DIGEST
- image: controlplane
imports:
- type: ImageName
targetBuildArg: CONTROLPLANE_IMAGE_NAME
- type: ImageID
- type: ImageDigest
targetBuildArg: CONTROLPLANE_IMAGE_DIGEST
```

Expand Down
4 changes: 4 additions & 0 deletions pkg/build/conveyor.go
Expand Up @@ -721,6 +721,10 @@ func (c *Conveyor) GetImageIDForLastImageStage(imageName string) string {
return c.GetImage(imageName).GetLastNonEmptyStage().GetStageImage().Image.GetStageDescription().Info.ID
}

func (c *Conveyor) GetImageDigestForLastImageStage(imageName string) string {
return c.GetImage(imageName).GetLastNonEmptyStage().GetStageImage().Image.GetStageDescription().Info.RepoDigest
}

func (c *Conveyor) GetImageIDForImageStage(imageName, stageName string) string {
return c.getImageStage(imageName, stageName).GetStageImage().Image.GetStageDescription().Info.ID
}
Expand Down
1 change: 1 addition & 0 deletions pkg/build/stage/conveyor.go
Expand Up @@ -21,6 +21,7 @@ type Conveyor interface {
FetchLastNonEmptyImageStage(ctx context.Context, imageName string) error
GetImageNameForLastImageStage(imageName string) string
GetImageIDForLastImageStage(imageName string) string
GetImageDigestForLastImageStage(imageName string) string

GetImageNameForImageStage(imageName, stageName string) string
GetImageIDForImageStage(imageName, stageName string) string
Expand Down
44 changes: 31 additions & 13 deletions pkg/build/stage/data_test.go
Expand Up @@ -18,19 +18,22 @@ type TestDependencies struct {
type TestDependency struct {
ImageName string

TargetEnvImageName string
TargetEnvImageRepo string
TargetEnvImageTag string
TargetEnvImageID string

TargetBuildArgImageName string
TargetBuildArgImageRepo string
TargetBuildArgImageTag string
TargetBuildArgImageID string

DockerImageRepo string
DockerImageTag string
DockerImageID string
TargetEnvImageName string
TargetEnvImageRepo string
TargetEnvImageTag string
TargetEnvImageID string
TargetEnvImageDigest string

TargetBuildArgImageName string
TargetBuildArgImageRepo string
TargetBuildArgImageTag string
TargetBuildArgImageID string
TargetBuildArgImageDigest string

DockerImageRepo string
DockerImageTag string
DockerImageID string
DockerImageDigest string
}

func (dep *TestDependency) GetDockerImageName() string {
Expand Down Expand Up @@ -64,6 +67,12 @@ func (dep *TestDependency) ToConfigDependency() *config.Dependency {
TargetEnv: dep.TargetEnvImageID,
})
}
if dep.TargetEnvImageDigest != "" {
depCfg.Imports = append(depCfg.Imports, &config.DependencyImport{
Type: config.ImageDigestImport,
TargetEnv: dep.TargetEnvImageDigest,
})
}

if dep.TargetBuildArgImageName != "" {
depCfg.Imports = append(depCfg.Imports, &config.DependencyImport{
Expand All @@ -89,6 +98,12 @@ func (dep *TestDependency) ToConfigDependency() *config.Dependency {
TargetBuildArg: dep.TargetBuildArgImageID,
})
}
if dep.TargetBuildArgImageDigest != "" {
depCfg.Imports = append(depCfg.Imports, &config.DependencyImport{
Type: config.ImageDigestImport,
TargetBuildArg: dep.TargetBuildArgImageDigest,
})
}

return depCfg
}
Expand All @@ -115,6 +130,9 @@ func CheckImageDependenciesAfterPrepare(img *LegacyImageStub, stageBuilder *stag
if dep.TargetEnvImageID != "" {
Expect(img._Container._ServiceCommitChangeOptions.Env[dep.TargetEnvImageID]).To(Equal(dep.DockerImageID))
}
if dep.TargetEnvImageDigest != "" {
Expect(img._Container._ServiceCommitChangeOptions.Env[dep.TargetEnvImageDigest]).To(Equal(dep.DockerImageDigest))
}

if dep.TargetBuildArgImageName != "" {
Expect(util.IsStringsContainValue(stageBuilder.GetDockerfileBuilderImplementation().BuildDockerfileOptions.BuildArgs, fmt.Sprintf("%s=%s", dep.TargetBuildArgImageName, dep.GetDockerImageName()))).To(BeTrue())
Expand Down
10 changes: 10 additions & 0 deletions pkg/build/stage/dependencies.go
Expand Up @@ -127,6 +127,7 @@ func (s *DependenciesStage) prepareImageWithLegacyStapelBuilder(ctx context.Cont

depImageName := c.GetImageNameForLastImageStage(dep.ImageName)
depImageID := c.GetImageIDForLastImageStage(dep.ImageName)
depImageDigest := c.GetImageDigestForLastImageStage(dep.ImageName)
depImageRepo, depImageTag := imagePkg.ParseRepositoryAndTag(depImageName)

for _, img := range dep.Imports {
Expand All @@ -147,6 +148,10 @@ func (s *DependenciesStage) prepareImageWithLegacyStapelBuilder(ctx context.Cont
depImageServiceOptions.AddEnv(map[string]string{
img.TargetEnv: depImageID,
})
case config.ImageDigestImport:
depImageServiceOptions.AddEnv(map[string]string{
img.TargetEnv: depImageDigest,
})
}
}
}
Expand Down Expand Up @@ -182,6 +187,7 @@ func (s *DependenciesStage) prepareImage(ctx context.Context, c Conveyor, cr con
for _, dep := range s.dependencies {
depImageName := c.GetImageNameForLastImageStage(dep.ImageName)
depImageID := c.GetImageIDForLastImageStage(dep.ImageName)
depImageDigest := c.GetImageDigestForLastImageStage(dep.ImageName)
depImageRepo, depImageTag := imagePkg.ParseRepositoryAndTag(depImageName)

for _, img := range dep.Imports {
Expand All @@ -202,6 +208,10 @@ func (s *DependenciesStage) prepareImage(ctx context.Context, c Conveyor, cr con
stageImage.Builder.StapelStageBuilder().AddEnvs(map[string]string{
img.TargetEnv: depImageID,
})
case config.ImageDigestImport:
stageImage.Builder.StapelStageBuilder().AddEnvs(map[string]string{
img.TargetEnv: depImageDigest,
})
}
}
}
Expand Down

0 comments on commit cc352fd

Please sign in to comment.