feat(builder): append YYYYMMDD to test versions
This commit is contained in:
@@ -11,8 +11,11 @@ With --docker, print the Docker tag rendering of that version.
|
||||
|
||||
Derivation (builder contract «版本号»):
|
||||
official HEAD exact-match of vX.Y.Z → X.Y.Z
|
||||
test nearest ancestor stable tag → X.Y.Z~branch.n+gSHA
|
||||
no tag no stable tag reachable from HEAD → 0.0.0~branch+gSHA
|
||||
test nearest ancestor stable tag → X.Y.Z~YYYYMMDD.branch.n+gSHA
|
||||
no tag no stable tag reachable from HEAD → 0.0.0~YYYYMMDD.branch+gSHA
|
||||
|
||||
YYYYMMDD is the build date. SOURCE_DATE_EPOCH, if set, is that instant in
|
||||
UTC; otherwise the local calendar date. Official X.Y.Z never gets a date.
|
||||
|
||||
Stable tags match v<major>.<minor>.<patch> only. Baseline is ancestry, not
|
||||
the highest version in the repository. This script does not fetch tags.
|
||||
@@ -100,6 +103,16 @@ short_sha() {
|
||||
gitc rev-parse HEAD | cut -c1-7
|
||||
}
|
||||
|
||||
# Build-day YYYYMMDD. SOURCE_DATE_EPOCH (UTC) wins when set, for reproducible
|
||||
# test packages; otherwise the machine's current local date.
|
||||
build_date() {
|
||||
if [[ -n "${SOURCE_DATE_EPOCH:-}" ]]; then
|
||||
date -u -d "@${SOURCE_DATE_EPOCH}" +%Y%m%d
|
||||
else
|
||||
date +%Y%m%d
|
||||
fi
|
||||
}
|
||||
|
||||
# Highest stable tag pointing at HEAD, or empty.
|
||||
official_tag_at_head() {
|
||||
local tag best=
|
||||
@@ -135,7 +148,7 @@ nearest_stable_tag() {
|
||||
}
|
||||
|
||||
derive_canonical() {
|
||||
local tag base n sha branch
|
||||
local tag base n sha branch ymd
|
||||
tag=$(official_tag_at_head)
|
||||
if [[ -n "$tag" ]]; then
|
||||
printf '%s' "${tag#v}"
|
||||
@@ -143,13 +156,14 @@ derive_canonical() {
|
||||
fi
|
||||
sha=$(short_sha)
|
||||
branch=$(branch_slug)
|
||||
ymd=$(build_date)
|
||||
base=$(nearest_stable_tag)
|
||||
if [[ -z "$base" ]]; then
|
||||
printf '0.0.0~%s+g%s' "$branch" "$sha"
|
||||
printf '0.0.0~%s.%s+g%s' "$ymd" "$branch" "$sha"
|
||||
return
|
||||
fi
|
||||
n=$(gitc rev-list --count "${base}..HEAD")
|
||||
printf '%s~%s.%s+g%s' "${base#v}" "$branch" "$n" "$sha"
|
||||
printf '%s~%s.%s.%s+g%s' "${base#v}" "$ymd" "$branch" "$n" "$sha"
|
||||
}
|
||||
|
||||
to_docker() {
|
||||
|
||||
Reference in New Issue
Block a user