diff --git a/pkg/action/package.go b/pkg/action/package.go index 3bba01a75..b85e8efe0 100644 --- a/pkg/action/package.go +++ b/pkg/action/package.go @@ -135,10 +135,6 @@ func (p *Package) Run(path string, _ map[string]any) (string, error) { dest = p.Destination } - if p.SourceDateEpoch != nil { - ch.StampModTimes(*p.SourceDateEpoch) - } - name, err := chartutil.Save(ch, dest) if err != nil { return "", fmt.Errorf("failed to save: %w", err) diff --git a/pkg/chart/v2/chart.go b/pkg/chart/v2/chart.go index 643e012be..96e862f6b 100644 --- a/pkg/chart/v2/chart.go +++ b/pkg/chart/v2/chart.go @@ -118,20 +118,28 @@ func (ch *Chart) Dependencies() []*Chart { return ch.dependencies } func (ch *Chart) StampModTimes(t time.Time) { t = t.UTC().Truncate(time.Second) ch.ModTime = t - ch.SchemaModTime = t + if len(ch.Schema) > 0 { + ch.SchemaModTime = t + } if ch.Lock != nil { ch.Lock.Generated = t } for _, f := range ch.Raw { - f.ModTime = t + if f != nil { + f.ModTime = t + } } for _, f := range ch.Templates { - f.ModTime = t + if f != nil { + f.ModTime = t + } } for _, f := range ch.Files { - f.ModTime = t + if f != nil { + f.ModTime = t + } } - for _, dep := range ch.dependencies { + for _, dep := range ch.Dependencies() { dep.StampModTimes(t) } } @@ -208,37 +216,6 @@ func (ch *Chart) CRDObjects() []CRD { return crds } -// StampModTimes sets timestamps on the chart (and dependencies) to epoch. -// This is used for reproducible builds via SOURCE_DATE_EPOCH. -func (ch *Chart) StampModTimes(epoch time.Time) { - ch.ModTime = epoch - if len(ch.Schema) > 0 { - ch.SchemaModTime = epoch - } - if ch.Lock != nil { - ch.Lock.Generated = epoch - } - - for _, f := range ch.Raw { - if f != nil { - f.ModTime = epoch - } - } - for _, f := range ch.Templates { - if f != nil { - f.ModTime = epoch - } - } - for _, f := range ch.Files { - if f != nil { - f.ModTime = epoch - } - } - for _, dep := range ch.Dependencies() { - dep.StampModTimes(epoch) - } -} - func hasManifestExtension(fname string) bool { ext := filepath.Ext(fname) return strings.EqualFold(ext, ".yaml") || strings.EqualFold(ext, ".yml") || strings.EqualFold(ext, ".json")