dkbuild: corriger le calcul de la dernière version d'une distribution
This commit is contained in:
parent
a56ec0e0f1
commit
85e77e4bda
34
dkbuild
34
dkbuild
|
@ -212,8 +212,9 @@ Exemple:
|
|||
elif dist d9; then
|
||||
...
|
||||
fi
|
||||
NB: ici, la version 3.1 est listée après la version 3.0 pour que l'image
|
||||
construite aie le tag :latest
|
||||
Dans une même distribution, les versions doivent être ordonnées de la plus
|
||||
ancienne à la plus récente. ici, la version 3.1 est listée après la version 3.0
|
||||
pour que l'image construite aie le tag :latest
|
||||
|
||||
Note: 'setdists' ne doit être utilisé qu'une seule fois. Les invocations
|
||||
suivantes sont ignorées.
|
||||
|
@ -251,6 +252,8 @@ version. Exemple:
|
|||
...
|
||||
fi
|
||||
fi
|
||||
Dans un même profil, les versions doivent être ordonnées de la plus ancienne à
|
||||
la plus récente.
|
||||
|
||||
Si les distributions sont utilisées avec des versions, alors c'est une erreur de
|
||||
spécifier une version dans le profil
|
||||
|
@ -1072,14 +1075,37 @@ function define_functions_env() {
|
|||
SETVERSION_DONE=1
|
||||
}
|
||||
function dist() {
|
||||
local dist version
|
||||
local dist version latest
|
||||
for dist in "$@"; do
|
||||
[ "$dist" == LATEST ] && dist="${SETDISTS[0]}"
|
||||
if [ "$dist" == LATEST ]; then
|
||||
latest=1
|
||||
continue
|
||||
fi
|
||||
parse_dist "$dist" dist version
|
||||
[ "$dist" == "$DIST" ] || continue
|
||||
[ -z "$version" -o "$version" == "$DVERSION" ] || continue
|
||||
return 0
|
||||
done
|
||||
if [ -n "$latest" ]; then
|
||||
# trouver la dernière occurence de la première distribution
|
||||
# mentionnée. en effet, les versions doivent être ordonnées de la
|
||||
# plus ancienne à la plus récente.
|
||||
local first_dist last_version
|
||||
for dist in "${SETDISTS[@]}"; do
|
||||
parse_dist "$dist" dist version
|
||||
if [ -z "$first_dist" ]; then
|
||||
first_dist="$dist"
|
||||
last_version="$version"
|
||||
elif [ "$dist" == "$first_dist" ]; then
|
||||
last_version="$version"
|
||||
fi
|
||||
done
|
||||
if [ "$first_dist" == "$DIST" ]; then
|
||||
if [ -z "$last_version" -o "$last_version" == "$DVERSION" ]; then
|
||||
return 0
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
return 1
|
||||
}
|
||||
function version() {
|
||||
|
|
|
@ -2,10 +2,10 @@
|
|||
setdists d11 d10
|
||||
setprofiles prod test
|
||||
|
||||
if dist "#latest"; then
|
||||
if dist LATEST; then
|
||||
info "$DIST est la distribution la plus récente"
|
||||
fi
|
||||
if profile "#default"; then
|
||||
if profile DEFAULT; then
|
||||
info "$PROFILE est le profil par défaut"
|
||||
fi
|
||||
|
||||
|
|
|
@ -0,0 +1,20 @@
|
|||
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||
setdists v1-d11 v2-d11 v1-d10
|
||||
setenv IMAGE=dkbuild-tests/distversions
|
||||
|
||||
dockerfile
|
||||
# -*- coding: utf-8 mode: dockerfile -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||
FROM scratch
|
||||
ENV var=$DIST-$VERSION
|
||||
build
|
||||
|
||||
info "vérifier les images construites avec
|
||||
dk ls dkbuild-tests/distversions
|
||||
on devrait avoir les images suivantes:
|
||||
dkbuild-tests/distversions:v1-d10
|
||||
dkbuild-tests/distversions:d10 -> v1-d10
|
||||
dkbuild-tests/distversions:v1-d11
|
||||
dkbuild-tests/distversions:v2-d11
|
||||
dkbuild-tests/distversions:d11 -> v2-d11
|
||||
dkbuild-tests/distversions:latest -> v2-d11
|
||||
"
|
Loading…
Reference in New Issue