Skip to content

Commit

Permalink
fix(multiplatform): images report contains correct digests
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 Mar 28, 2023
1 parent b70bdf8 commit 836fe04
Showing 1 changed file with 38 additions and 3 deletions.
41 changes: 38 additions & 3 deletions pkg/build/build_phase.go
Expand Up @@ -72,7 +72,7 @@ func NewBuildPhase(c *Conveyor, opts BuildPhaseOptions) *BuildPhase {
return &BuildPhase{
BasePhase: BasePhase{c},
BuildPhaseOptions: opts,
ImagesReport: &ImagesReport{Images: make(map[string]ReportImageRecord)},
ImagesReport: NewImagesReport(),
}
}

Expand Down Expand Up @@ -101,12 +101,29 @@ type ImagesReport struct {
ImagesByPlatform map[string]map[string]ReportImageRecord
}

func NewImagesReport() *ImagesReport {
return &ImagesReport{
Images: make(map[string]ReportImageRecord),
ImagesByPlatform: make(map[string]map[string]ReportImageRecord),
}
}

func (report *ImagesReport) SetImageRecord(name string, imageRecord ReportImageRecord) {
report.mux.Lock()
defer report.mux.Unlock()
report.Images[name] = imageRecord
}

func (report *ImagesReport) SetImageByPlatformRecord(targetPlatform, name string, imageRecord ReportImageRecord) {
report.mux.Lock()
defer report.mux.Unlock()

if _, hasKey := report.ImagesByPlatform[name]; !hasKey {
report.ImagesByPlatform[name] = make(map[string]ReportImageRecord)
}
report.ImagesByPlatform[name][targetPlatform] = imageRecord
}

func (report *ImagesReport) ToJsonData() ([]byte, error) {
report.mux.Lock()
defer report.mux.Unlock()
Expand Down Expand Up @@ -175,6 +192,17 @@ func (phase *BuildPhase) AfterImages(ctx context.Context) error {
}

func (phase *BuildPhase) createReport(ctx context.Context) error {
targetPlatforms, err := phase.Conveyor.GetTargetPlatforms()
if err != nil {
return fmt.Errorf("unable to get target platforms: %w", err)
}
if len(targetPlatforms) == 0 {
targetPlatforms = []string{phase.Conveyor.ContainerBackend.GetDefaultPlatform()}
}

// FIXME(multiarch): instead of using first specified platform use multiarch-manifest
targetPlatform := targetPlatforms[0]

for _, img := range phase.Conveyor.imagesTree.GetImages() {
if img.IsArtifact {
continue
Expand All @@ -186,15 +214,22 @@ func (phase *BuildPhase) createReport(ctx context.Context) error {
desc = stageImage.GetStageDescription()
}

phase.ImagesReport.SetImageRecord(img.GetName(), ReportImageRecord{
record := ReportImageRecord{
WerfImageName: img.GetName(),
DockerRepo: desc.Info.Repository,
DockerTag: desc.Info.Tag,
DockerImageID: desc.Info.ID,
DockerImageDigest: desc.Info.RepoDigest,
DockerImageName: desc.Info.Name,
Rebuilt: img.GetRebuilt(),
})
}

if os.Getenv("WERF_ENABLE_REPORT_BY_PLATFORM") == "1" {
phase.ImagesReport.SetImageByPlatformRecord(img.TargetPlatform, img.GetName(), record)
}
if img.TargetPlatform == targetPlatform {
phase.ImagesReport.SetImageRecord(img.GetName(), record)
}
}

debugJsonData, err := phase.ImagesReport.ToJsonData()
Expand Down

0 comments on commit 836fe04

Please sign in to comment.