maj doc dkbuild

This commit is contained in:
Jephté Clain 2022-07-21 11:41:01 +04:00
parent 1db7d08e82
commit 2ae8406a4b
1 changed files with 22 additions and 20 deletions

42
dkbuild
View File

@ -164,8 +164,8 @@ Un fichier dkbuild est un script shell utilisé pour construire une ou plusieurs
images docker. images docker.
A cause de l'implémentation utilisée pour les directives, le fichier doit être A cause de l'implémentation utilisée pour les directives, le fichier doit être
est parcouru (i.e exécuté) à de multiples reprises pour analyser les paramètres parcouru (i.e exécuté) à de multiples reprises pour analyser les paramètres et
et variables définis. il faut donc \"protéger\" les appels de scripts externes ou variables définis. il faut donc \"protéger\" les appels de scripts externes ou
de fonctions gourmandes avec les commandes 'run' et 'call' pour éviter que ces de fonctions gourmandes avec les commandes 'run' et 'call' pour éviter que ces
commandes ne soient exécutées à plusieurs reprises. commandes ne soient exécutées à plusieurs reprises.
@ -188,7 +188,7 @@ La première distribution listée est spéciale: c'est la distribution la plus
récente, celle qui reçoit le tag :latest récente, celle qui reçoit le tag :latest
La commande 'dist' permet de tester si la distribution spécifiée en argument a La commande 'dist' permet de tester si la distribution spécifiée en argument a
été sélectionnée par l'utilisateur. L'argument '#latest' permet de tester la été sélectionnée par l'utilisateur. L'argument 'LATEST' permet de tester la
dernière distribution. dernière distribution.
La commande 'version' permet de tester si la version spécifiée en argument a été La commande 'version' permet de tester si la version spécifiée en argument a été
@ -208,6 +208,8 @@ Exemple:
elif dist d9; then elif dist d9; then
... ...
fi 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
Note: 'setdists' ne doit être utilisé qu'une seule fois. Les invocations Note: 'setdists' ne doit être utilisé qu'une seule fois. Les invocations
suivantes sont ignorées. suivantes sont ignorées.
@ -223,7 +225,7 @@ script s'arrête avec une erreur. Le premier profil listé est spécial: c'est l
profil par défaut. profil par défaut.
La commande 'profile' permet de tester si le profil spécifié en argument a été La commande 'profile' permet de tester si le profil spécifié en argument a été
sélectionné par l'utilisateur. L'argument '#default' permet de tester le profil sélectionné par l'utilisateur. L'argument 'DEFAULT' permet de tester le profil
par défaut. par défaut.
Exemple: Exemple:
@ -358,7 +360,7 @@ est équivalent à:
fi fi
En phase d'analyse, ces commandes retournent faux, donc cmd1 et cmd2 ne seront En phase d'analyse, ces commandes retournent faux, donc cmd1 et cmd2 ne seront
lancés qu'une seule fois lors de l'analyse du fichier. Cela signifie qu'il ne lancés qu'une seule fois lors de l'invocation de dkbuild. Cela signifie qu'il ne
faut pas utiliser des directives de définition de variables à l'intérieur. Par faut pas utiliser des directives de définition de variables à l'intérieur. Par
exemple, le script suivant ne produit pas forcément l'effet escompté: exemple, le script suivant ne produit pas forcément l'effet escompté:
if run; then if run; then
@ -522,7 +524,7 @@ Par exemple:
échoue si SRCDIR et/ou DESTDIR sont des fichiers échoue si SRCDIR et/ou DESTDIR sont des fichiers
* les commandes suivantes sont équivalentes: * les commandes suivantes sont équivalentes:
copy SRC DESTDIR/ copy SRC DESTDIR/
copy SRC DESTDIR/SRC copy SRC DESTDIR/SRCNAME
Les paramètres optionnels sont Les paramètres optionnels sont
* copy * copy
@ -546,7 +548,7 @@ Les paramètres optionnels sont
USAGE: genfile OUTPUT [INPUT] [PARAMS] USAGE: genfile OUTPUT [INPUT] [PARAMS]
Si le fichier INPUT est spécifié, il est utilisé pour créer le contenu initial Si le fichier INPUT est spécifié, il est utilisé pour créer le contenu initial
du fichier. Sinon, l'entrée standard doit être redirigée depuis un fichier, et du fichier. Sinon, l'entrée standard *doit* être redirigée depuis un fichier, et
elle est lue pour générer le contenu initial du fichier à générer. elle est lue pour générer le contenu initial du fichier à générer.
Les paramètres optionnels sont Les paramètres optionnels sont
@ -560,7 +562,7 @@ Les paramètres optionnels sont
USAGE: dockerfile [OUTPUT [INPUT]] [PARAMS] USAGE: dockerfile [OUTPUT [INPUT]] [PARAMS]
Si le fichier INPUT est spécifié, il est utilisé pour créer le contenu initial Si le fichier INPUT est spécifié, il est utilisé pour créer le contenu initial
du fichier. Sinon, si l'entrée standard est redirigée depuis un fichier, elle du fichier. Sinon, *si* l'entrée standard est redirigée depuis un fichier, elle
est lue pour générer le contenu initial du fichier. est lue pour générer le contenu initial du fichier.
Les paramètres optionnels sont Les paramètres optionnels sont
@ -635,9 +637,9 @@ Les actions valides sont
* shell -- lancer un shell utilisateur dans le répertoire du projet * shell -- lancer un shell utilisateur dans le répertoire du projet
* none -- ne rien faire * none -- ne rien faire
L'action est exécutée sur DESTDIR qui vaut par défaut le répertoire courant. L'action est exécutée sur DESTDIR. Juste avant de lancer l'action, le répertoire
Juste avant de lancer l'action, le répertoire courant est modifié pour être courant est modifié pour être DESTDIR, ce qui permet d'utiliser des chemins
DESTDIR, ce qui permet d'utiliser des chemins relatifs le cas échéant. relatifs le cas échéant.
La commande 'rshell' lance un shell bash avec l'utilisateur root au lieu de La commande 'rshell' lance un shell bash avec l'utilisateur root au lieu de
lancer la commande composer, ce qui permet de faire des opérations plus lancer la commande composer, ce qui permet de faire des opérations plus
@ -694,7 +696,7 @@ Les paramètres optionnels sont
liste de commandes à lancer pour configurer le container. Un container ayant liste de commandes à lancer pour configurer le container. Un container ayant
pour base COMPOSER_IMAGE et nommé d'après le nom du projet est préparé et les pour base COMPOSER_IMAGE et nommé d'après le nom du projet est préparé et les
commandes spécifiées y sont lancées. Ce container est réutilisé à chaque fois. commandes spécifiées y sont lancées. Ce container est réutilisé à chaque fois.
Ce paramétrage est utilisé pour par exemple installer certains packages Ce paramétrage est utilisé par exemple pour installer certains packages
nécessaire au projet. nécessaire au projet.
* project-name=PROJECT_NAME * project-name=PROJECT_NAME
si setup= est défini, nommer l'image sur la base de ce nom. par défaut, le nom si setup= est défini, nommer l'image sur la base de ce nom. par défaut, le nom
@ -725,9 +727,9 @@ Les actions valides sont
* java -- lancer java au lieu de lancer mvn. il est possible de spécifier la * java -- lancer java au lieu de lancer mvn. il est possible de spécifier la
version de java directement, e.g java7, java8, java11 version de java directement, e.g java7, java8, java11
L'action est exécutée sur DESTDIR qui vaut par défaut le répertoire courant. L'action est exécutée sur DESTDIR. Juste avant de lancer l'action, le répertoire
Juste avant de lancer l'action, le répertoire courant est modifié pour être courant est modifié pour être DESTDIR, ce qui permet d'utiliser des chemins
DESTDIR, ce qui permet d'utiliser des chemins relatifs le cas échéant. relatifs le cas échéant.
La commande 'rshell' lance un shell bash avec l'utilisateur root au lieu de La commande 'rshell' lance un shell bash avec l'utilisateur root au lieu de
lancer la commande mvn, ce qui permet de faire des opérations plus complexes si lancer la commande mvn, ce qui permet de faire des opérations plus complexes si
@ -765,7 +767,7 @@ Les paramètres optionnels sont
liste de commandes à lancer pour configurer le container. Un container ayant liste de commandes à lancer pour configurer le container. Un container ayant
pour base MAVEN_IMAGE et nommé d'après le nom du projet est préparé et les pour base MAVEN_IMAGE et nommé d'après le nom du projet est préparé et les
commandes spécifiées y sont lancées. Ce container est réutilisé à chaque fois. commandes spécifiées y sont lancées. Ce container est réutilisé à chaque fois.
Ce paramétrage est utilisé pour par exemple installer certains packages Ce paramétrage est utilisé par exemple pour installer certains packages
nécessaire au projet. nécessaire au projet.
* project-name=PROJECT_NAME * project-name=PROJECT_NAME
si setup= est défini, nommer l'image sur la base de ce nom. par défaut, le nom si setup= est défini, nommer l'image sur la base de ce nom. par défaut, le nom
@ -1066,7 +1068,7 @@ function define_functions_env() {
function dist() { function dist() {
local dist version local dist version
for dist in "$@"; do for dist in "$@"; do
[ "$dist" == "#latest" ] && dist="${SETDISTS[0]}" [ "$dist" == LATEST ] && dist="${SETDISTS[0]}"
parse_dist "$dist" dist version parse_dist "$dist" dist version
[ "$dist" == "$DIST" ] || continue [ "$dist" == "$DIST" ] || continue
[ -z "$version" -o "$version" == "$DVERSION" ] || continue [ -z "$version" -o "$version" == "$DVERSION" ] || continue
@ -1084,7 +1086,7 @@ function define_functions_env() {
function profile() { function profile() {
local profile version local profile version
for profile in "$@"; do for profile in "$@"; do
[ "$profile" == "#default" ] && profile="${SETPROFILES[0]}" [ "$profile" == DEFAULT ] && profile="${SETPROFILES[0]}"
parse_profile "$profile" profile version parse_profile "$profile" profile version
[ "$profile" == "$PROFILE" ] || continue [ "$profile" == "$PROFILE" ] || continue
[ -z "$version" -o "$version" == "$PVERSION" ] || continue [ -z "$version" -o "$version" == "$PVERSION" ] || continue
@ -1748,9 +1750,9 @@ function define_functions_cmd() {
done done
if [ -n "$autotag" ]; then if [ -n "$autotag" ]; then
if [ -n "$DIST" ]; then if [ -n "$DIST" ]; then
dist "#latest" && imagetags+=("$imagetag:latest") dist LATEST && imagetags+=("$imagetag:latest")
elif [ -n "$PROFILE" ]; then elif [ -n "$PROFILE" ]; then
profile "#default" && imagetags+=("$imagetag:latest") profile DEFAULT && imagetags+=("$imagetag:latest")
else else
imagetags+=("$imagetag:latest") imagetags+=("$imagetag:latest")
fi fi