builder-next: ensure timestamps set for metadata commands
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
(cherry picked from commit 1a2bd3cf7d
)
This commit is contained in:
parent
eaa83640fa
commit
6efcd74c6b
1 changed files with 31 additions and 0 deletions
|
@ -137,6 +137,37 @@ func normalizeLayersAndHistory(diffs []digest.Digest, history []ocispec.History,
|
||||||
history[i] = h
|
history[i] = h
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Find the first new layer time. Otherwise, the history item for a first
|
||||||
|
// metadata command would be the creation time of a base image layer.
|
||||||
|
// If there is no such then the last layer with timestamp.
|
||||||
|
var created *time.Time
|
||||||
|
var noCreatedTime bool
|
||||||
|
for _, h := range history {
|
||||||
|
if h.Created != nil {
|
||||||
|
created = h.Created
|
||||||
|
if noCreatedTime {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
noCreatedTime = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fill in created times for all history items to be either the first new
|
||||||
|
// layer time or the previous layer.
|
||||||
|
noCreatedTime = false
|
||||||
|
for i, h := range history {
|
||||||
|
if h.Created != nil {
|
||||||
|
if noCreatedTime {
|
||||||
|
created = h.Created
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
noCreatedTime = true
|
||||||
|
h.Created = created
|
||||||
|
}
|
||||||
|
history[i] = h
|
||||||
|
}
|
||||||
|
|
||||||
return diffs, history
|
return diffs, history
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue