dk et dkbuild: support .composer.yaml et setup_image
This commit is contained in:
parent
0bf0f48ad0
commit
5cc1826744
54
dk
54
dk
|
@ -230,6 +230,7 @@ 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 nécessaire au projet.
|
||||
* COMPOSER_SETUP_IMAGE -- nom final de l'image pour COMPOSER_SETUP
|
||||
La commande 'rshell' est une extension qui lance un shell bash au lieu
|
||||
de lancer la commande composer, ce qui permet de faire des opérations
|
||||
plus complexes si le besoin s'en fait sentir. NB: le shell est lancé
|
||||
|
@ -267,6 +268,7 @@ 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 nécessaire au projet.
|
||||
* MAVEN_SETUP_IMAGE -- nom final de l'image pour MAVEN_SETUP
|
||||
La commande 'rshell' est une extension qui lance un shell bash au lieu
|
||||
de lancer la commande mvn, ce qui permet de faire des opérations
|
||||
plus complexes si le besoin s'en fait sentir. NB: le shell est lancé
|
||||
|
@ -1083,10 +1085,10 @@ function build_update_apps() {
|
|||
estep "Type de dépôt: $TYPE"
|
||||
if [ "$TYPE" == composer ]; then
|
||||
local cvname cvvalue
|
||||
local composer_php composer_php_max composer_image composer_cmd composer_setup composer_action
|
||||
local composer_php composer_php_max composer_image composer_cmd composer_setup composer_setup_image composer_action
|
||||
local -a composer_vars composer_args
|
||||
|
||||
for cvname in composer_php composer_php_max composer_image composer_cmd composer_setup; do
|
||||
for cvname in composer_php composer_php_max composer_image composer_cmd composer_setup composer_setup_image; do
|
||||
cvvalue="${var}_${PROFILE}_${cvname^^}"; cvvalue="${!cvvalue}"
|
||||
[ -n "$cvvalue" ] || { cvvalue="${var}_${cvname^^}"; cvvalue="${!cvvalue}"; }
|
||||
[ -n "$cvvalue" ] || { cvvalue="${PROFILE}_${cvname^^}"; cvvalue="${!cvvalue}"; }
|
||||
|
@ -1122,10 +1124,10 @@ function build_update_apps() {
|
|||
fi
|
||||
elif [ "$TYPE" == maven ]; then
|
||||
local cvname cvvalue
|
||||
local maven_java maven_image maven_cmd maven_setup maven_action
|
||||
local maven_java maven_image maven_cmd maven_setup maven_setup_image maven_action
|
||||
local -a maven_vars maven_args
|
||||
|
||||
for cvname in maven_java maven_image maven_cmd maven_setup; do
|
||||
for cvname in maven_java maven_image maven_cmd maven_setup maven_setup_image; do
|
||||
cvvalue="${var}_${PROFILE}_${cvname^^}"; cvvalue="${!cvvalue}"
|
||||
[ -n "$cvvalue" ] || { cvvalue="${var}_${cvname^^}"; cvvalue="${!cvvalue}"; }
|
||||
[ -n "$cvvalue" ] || { cvvalue="${PROFILE}_${cvname^^}"; cvvalue="${!cvvalue}"; }
|
||||
|
@ -1979,6 +1981,7 @@ function default_docker_composer() {
|
|||
-e group="$group"
|
||||
-e projdir="$projdir"
|
||||
-e setup="$COMPOSER_SETUP"
|
||||
-e setup_image="$COMPOSER_SETUP_IMAGE"
|
||||
-e composer="$COMPOSER_CMD"
|
||||
-e args="$args"
|
||||
)
|
||||
|
@ -2008,35 +2011,36 @@ fi
|
|||
|
||||
if [ -n "$COMPOSER_SETUP" ]; then
|
||||
# lancement dans un container docker à préparer
|
||||
local NAME project_name container_name dkid
|
||||
local NAME setup_image project_name container_name dkid
|
||||
if [ -f docker-compose.yml ]; then
|
||||
compose_set_project_name set_container_name
|
||||
else
|
||||
NAME="$(basename -- "$(pwd)")"
|
||||
docker_check_name set_container_name
|
||||
fi
|
||||
container_name="dk_composer_${container_name}"
|
||||
setup_image="$COMPOSER_SETUP_IMAGE"
|
||||
[ -n "$setup_image" ] || setup_image="dk_composer_${container_name}_image"
|
||||
|
||||
# vérifier l'existence de l'image
|
||||
setx dkid=docker image ls --format '{{.ID}}' "${container_name}_image"
|
||||
setx dkid=docker image ls --format '{{.ID}}' "$setup_image"
|
||||
|
||||
# créer le container le cas échéant
|
||||
if [ -z "$dkid" ]; then
|
||||
estep "Création du container $container_name avec l'image $COMPOSER_IMAGE"
|
||||
estep "Création de l'image $setup_image à partir de $COMPOSER_IMAGE"
|
||||
cmd=(
|
||||
"$DOCKER" create -it --name "${container_name}_ct"
|
||||
"$DOCKER" create -it --name "${setup_image}_tmpct"
|
||||
"${basecmd[@]}"
|
||||
"$COMPOSER_IMAGE"
|
||||
bash -c "$setupscript"
|
||||
)
|
||||
setx dkid="${cmd[@]}" || return 1
|
||||
"$DOCKER" container start -ai "$dkid" || return 1
|
||||
"$DOCKER" container commit "$dkid" "${container_name}_image" || return 1
|
||||
"$DOCKER" container commit "$dkid" "$setup_image" || return 1
|
||||
"$DOCKER" container rm "$dkid" || return 1
|
||||
fi
|
||||
|
||||
# prendre comme image le container créé
|
||||
COMPOSER_IMAGE="${container_name}_image"
|
||||
COMPOSER_IMAGE="$setup_image"
|
||||
fi
|
||||
|
||||
cmd=(
|
||||
|
@ -2062,13 +2066,16 @@ function auto_composer() {
|
|||
local COMPOSER_MACHINE=-u
|
||||
local COMPOSER_CMD=
|
||||
local COMPOSER_SETUP=
|
||||
local COMPOSER_SETUP_IMAGE=
|
||||
if [ -f .composer.yaml ]; then
|
||||
local registry
|
||||
eval "$(<.composer.yaml grep ^composer_ |
|
||||
sed 's/^composer_php_min: /COMPOSER_PHP=/;
|
||||
s/^composer_php_max: /COMPOSER_PHP_MAX=/;
|
||||
s/^composer_registry: /registry=/;
|
||||
s/^composer_image: \(.*\)/COMPOSER_IMAGE="${registry:-$REGISTRY}\/\1"/')"
|
||||
sed 's/^composer_php_min: /COMPOSER_PHP=/
|
||||
s/^composer_php_max: /COMPOSER_PHP_MAX=/
|
||||
s/^composer_registry: /registry=/
|
||||
s/^composer_image: \(.*\)/COMPOSER_IMAGE="${registry:-$REGISTRY}\/\1"/
|
||||
s/^composer_setup: /COMPOSER_SETUP=/
|
||||
s/^composer_setup_image: /COMPOSER_SETUP_IMAGE=/')"
|
||||
elif [ -f .composer.conf ]; then
|
||||
source ./.composer.conf
|
||||
fi
|
||||
|
@ -2213,6 +2220,7 @@ function default_docker_maven() {
|
|||
-e group="$group"
|
||||
-e projdir="$projdir"
|
||||
-e setup="$MAVEN_SETUP"
|
||||
-e setup_image="$MAVEN_SETUP_IMAGE"
|
||||
-e maven="$MAVEN_CMD"
|
||||
-e args="$args"
|
||||
${MAVEN_JAVA:+-e JAVA="$MAVEN_JAVA"}
|
||||
|
@ -2237,35 +2245,36 @@ cd "$projdir"
|
|||
|
||||
if [ -n "$MAVEN_SETUP" ]; then
|
||||
# lancement dans un container docker à préparer
|
||||
local NAME project_name container_name dkid
|
||||
local NAME setup_image project_name container_name dkid
|
||||
if [ -f docker-compose.yml ]; then
|
||||
compose_set_project_name set_container_name
|
||||
else
|
||||
NAME="$(basename -- "$(pwd)")"
|
||||
docker_check_name set_container_name
|
||||
fi
|
||||
container_name="dk_maven_${container_name}"
|
||||
setup_image="$MAVEN_SETUP_IMAGE"
|
||||
[ -n "$setup_image" ] || setup_image="dk_maven_${container_name}_image"
|
||||
|
||||
# vérifier l'existence de l'image
|
||||
setx dkid=docker image ls --format '{{.ID}}' "${container_name}_image"
|
||||
setx dkid=docker image ls --format '{{.ID}}' "$setup_image"
|
||||
|
||||
# créer le container le cas échéant
|
||||
if [ -z "$dkid" ]; then
|
||||
estep "Création du container $container_name avec l'image $MAVEN_IMAGE"
|
||||
estep "Création de l'image $setup_image à partir de $MAVEN_IMAGE"
|
||||
cmd=(
|
||||
"$DOCKER" create -it --name "${container_name}_ct"
|
||||
"$DOCKER" create -it --name "${setup_image}_tmpct"
|
||||
"${basecmd[@]}"
|
||||
"$MAVEN_IMAGE"
|
||||
bash -c "$setupscript"
|
||||
)
|
||||
setx dkid="${cmd[@]}" || return 1
|
||||
"$DOCKER" container start -ai "$dkid" || return 1
|
||||
"$DOCKER" container commit "$dkid" "${container_name}_image" || return 1
|
||||
"$DOCKER" container commit "$dkid" "$setup_image" || return 1
|
||||
"$DOCKER" container rm "$dkid" || return 1
|
||||
fi
|
||||
|
||||
# prendre comme image le container créé
|
||||
MAVEN_IMAGE="${container_name}_image"
|
||||
MAVEN_IMAGE="$setup_image"
|
||||
fi
|
||||
|
||||
cmd=(
|
||||
|
@ -2290,6 +2299,7 @@ function auto_maven() {
|
|||
local MAVEN_MACHINE=-u
|
||||
local MAVEN_CMD=
|
||||
local MAVEN_SETUP=
|
||||
local MAVEN_SETUP_IMAGE=
|
||||
[ -f .maven.conf ] && source ./.maven.conf
|
||||
# les premiers arguments peuvent servir à redéfinir les variables
|
||||
while [ $# -gt 0 ]; do
|
||||
|
|
76
dkbuild
76
dkbuild
|
@ -786,18 +786,29 @@ Les paramètres optionnels sont
|
|||
commandes spécifiées y sont lancées. Ce container est réutilisé à chaque fois.
|
||||
Ce paramétrage est utilisé par exemple pour installer certains packages
|
||||
nécessaire au projet.
|
||||
* setup-image=SETUP_IMAGE
|
||||
forcer le nom de l'image pour setup= (la valeur de project-name= est ignorée)
|
||||
* project-name=PROJECT_NAME
|
||||
si setup= est défini, nommer l'image sur la base de ce nom. par défaut, le nom
|
||||
est calculé automatiquement
|
||||
|
||||
Si un fichier .composer.conf existe dans le répertoire du projet, il est sourcé
|
||||
pour obtenir les valeurs par défaut des paramètres:
|
||||
Si un fichier .composer.yaml existe dans le répertoire du projet, il est analysé
|
||||
pour obtenir les valeurs par défaut des paramètres suivants:
|
||||
* composer_php_min: valeur par défaut de php=
|
||||
* composer_php_max: valeur par défaut de php-max=
|
||||
* composer_registry: ET composer_image: valeur par défaut de image=
|
||||
* composer_setup: valeur par défaut de setup=
|
||||
* composer_setup_image: valeur par défaut de setup-image=
|
||||
|
||||
Sinon, si un fichier .composer.conf existe dans le répertoire du projet, il est
|
||||
sourcé pour obtenir les valeurs par défaut des paramètres:
|
||||
* COMPOSER_PHP -- valeur par défaut de php=
|
||||
* COMPOSER_PHP_MAX -- valeur par défaut de php-max=
|
||||
* COMPOSER_IMAGE -- valeur par défaut de image=
|
||||
* COMPOSER_MACHINE -- valeur par défaut de machine=
|
||||
* COMPOSER_CMD -- valeur par défaut de composer=
|
||||
* COMPOSER_SETUP -- valeur par défaut de setup=
|
||||
* COMPOSER_SETUP_IMAGE -- valeur par défaut de setup-image=
|
||||
|
||||
## mvn -- construire projet maven
|
||||
|
||||
|
@ -859,6 +870,8 @@ Les paramètres optionnels sont
|
|||
commandes spécifiées y sont lancées. Ce container est réutilisé à chaque fois.
|
||||
Ce paramétrage est utilisé par exemple pour installer certains packages
|
||||
nécessaire au projet.
|
||||
* setup-image=SETUP_IMAGE
|
||||
forcer le nom de l'image pour setup= (la valeur de project-name= est ignorée)
|
||||
* project-name=PROJECT_NAME
|
||||
si setup= est défini, nommer l'image sur la base de ce nom. par défaut, le nom
|
||||
est calculé automatiquement
|
||||
|
@ -870,6 +883,7 @@ pour obtenir les valeurs par défaut des paramètres:
|
|||
* MAVEN_MACHINE -- valeur par défaut de machine=
|
||||
* MAVEN_CMD -- valeur par défaut de mvn=
|
||||
* MAVEN_SETUP -- valeur par défaut de setup=
|
||||
* MAVEN_SETUP_IMAGE -- valeur par défaut de setup-image=
|
||||
|
||||
## run -- lancer des commandes
|
||||
|
||||
|
@ -2214,6 +2228,7 @@ function define_functions_cmd() {
|
|||
-e group="$group"
|
||||
-e projdir="$projdir"
|
||||
-e setup="$setup"
|
||||
-e setup_image="$setup_image"
|
||||
-e composer="$composer"
|
||||
-e args="$args"
|
||||
)
|
||||
|
@ -2243,32 +2258,33 @@ fi
|
|||
|
||||
if [ -n "$setup" ]; then
|
||||
local project_name container_name ctid
|
||||
local setup_image="$setup_image"
|
||||
|
||||
# lancement dans un container docker à préparer
|
||||
[ -n "$project_name" ] || setx project_name=get_project_name
|
||||
setx container_name=get_container_name "$project_name"
|
||||
container_name="dkbuild_composer_${container_name}"
|
||||
[ -n "$setup_image" ] || setup_image="dkbuild_composer_${container_name}_image"
|
||||
|
||||
# vérifier l'existence de l'image
|
||||
setx ctid=docker image ls --format '{{.ID}}' "${container_name}_image"
|
||||
setx ctid=docker image ls --format '{{.ID}}' "$setup_image"
|
||||
|
||||
# créer le container le cas échéant
|
||||
if [ -z "$ctid" ]; then
|
||||
estep "Création du container $container_name à partir de l'image $image"
|
||||
estep "Création de l'image $setup_image à partir de $image"
|
||||
cmd=(
|
||||
docker create -it --name "${container_name}_ct"
|
||||
docker create -it --name "${setup_image}_tmpct"
|
||||
"${basecmd[@]}"
|
||||
"$image"
|
||||
bash -c "$setupscript"
|
||||
)
|
||||
setx ctid="${cmd[@]}" &&
|
||||
docker container start -ai "$ctid" &&
|
||||
docker container commit "$ctid" "${container_name}_image" &&
|
||||
docker container commit "$ctid" "$setup_image" &&
|
||||
docker container rm "$ctid" || die
|
||||
fi
|
||||
|
||||
# prendre comme image le container créé
|
||||
image="${container_name}_image"
|
||||
image="$setup_image"
|
||||
fi
|
||||
|
||||
case "$action" in
|
||||
|
@ -2317,8 +2333,29 @@ fi
|
|||
[ "$host_mappings" == __UNDEFINED__ ] && host_mappings="${DEFAULTS[docker_host-mappings]}"
|
||||
local composer="${DEFAULTS[composer_composer]}"
|
||||
local setup="${DEFAULTS[composer_setup]}"
|
||||
local setup_image="${DEFAULTS[composer_setup-image]}"
|
||||
local project_name="${DEFAULTS[composer_project-name]}"
|
||||
if [ -f "$destdir/.composer.conf" ]; then
|
||||
if [ -f "$destdir/.composer.yaml" ]; then
|
||||
eval "$(
|
||||
COMPOSER_PHP=
|
||||
COMPOSER_PHP_MAX=
|
||||
COMPOSER_IMAGE="$COMPOSER_IMAGE"
|
||||
COMPOSER_SETUP=
|
||||
COMPOSER_SETUP_IMAGE=
|
||||
eval "$(<"$destdir/.composer.yaml" grep ^composer_ |
|
||||
sed 's/^composer_php_min: /COMPOSER_PHP=/
|
||||
s/^composer_php_max: /COMPOSER_PHP_MAX=/
|
||||
s/^composer_registry: /registry=/
|
||||
s/^composer_image: \(.*\)/COMPOSER_IMAGE="${registry:-$REGISTRY}\/\1"/
|
||||
s/^composer_setup: /COMPOSER_SETUP=/
|
||||
s/^composer_setup_image: /COMPOSER_SETUP_IMAGE=/')"
|
||||
[ -z "$php" ] && echo_setv php="$COMPOSER_PHP"
|
||||
[ -z "$php_max" ] && echo_setv php_max="$COMPOSER_PHP_MAX"
|
||||
[ -z "$image" ] && echo_setv image="$COMPOSER_IMAGE"
|
||||
[ -z "$setup" ] && echo_setv setup="$COMPOSER_SETUP"
|
||||
[ -z "$setup_image" ] && echo_setv setup_image="$COMPOSER_SETUP_IMAGE"
|
||||
)"
|
||||
elif [ -f "$destdir/.composer.conf" ]; then
|
||||
eval "$(
|
||||
COMPOSER_PHP=
|
||||
COMPOSER_PHP_MAX=
|
||||
|
@ -2326,6 +2363,7 @@ fi
|
|||
COMPOSER_MACHINE=-u
|
||||
COMPOSER_CMD=
|
||||
COMPOSER_SETUP=
|
||||
COMPOSER_SETUP_IMAGE=
|
||||
source "$destdir/.composer.conf"
|
||||
[ -z "$php" ] && echo_setv php="$COMPOSER_PHP"
|
||||
[ -z "$php_max" ] && echo_setv php_max="$COMPOSER_PHP_MAX"
|
||||
|
@ -2333,6 +2371,7 @@ fi
|
|||
[ -z "$machine" ] && echo_setv machine="$COMPOSER_MACHINE"
|
||||
[ -z "$composer" ] && echo_setv composer="$COMPOSER_CMD"
|
||||
[ -z "$setup" ] && echo_setv setup="$COMPOSER_SETUP"
|
||||
[ -z "$setup_image" ] && echo_setv setup_image="$COMPOSER_SETUP_IMAGE"
|
||||
)"
|
||||
fi
|
||||
|
||||
|
@ -2348,6 +2387,7 @@ fi
|
|||
host-mappings=*) host_mappings="${1#host-mappings=}";;
|
||||
composer=*) composer="${1#composer=}";;
|
||||
setup=*) setup="${1#setup=}";;
|
||||
setup-image=*) setup_image="${1#setup-image=}";;
|
||||
project-name=*) project_name="${1#project-name=}";;
|
||||
*=*) ewarn "composer: $1: argument ignoré";;
|
||||
*) break;;
|
||||
|
@ -2513,6 +2553,7 @@ exit((PHP_VERSION_ID < $version)? 0: 1);
|
|||
-e group="$group"
|
||||
-e projdir="$projdir"
|
||||
-e setup="$setup"
|
||||
-e setup_image="$setup_image"
|
||||
-e mvn="$mvn"
|
||||
-e args="$args"
|
||||
${java:+-e JAVA="$java"}
|
||||
|
@ -2538,32 +2579,33 @@ cd "$projdir"
|
|||
|
||||
if [ -n "$setup" ]; then
|
||||
local project_name container_name ctid
|
||||
local setup_image="$setup_image"
|
||||
|
||||
# lancement dans un container docker à préparer
|
||||
[ -n "$project_name" ] || setx project_name=get_project_name
|
||||
setx container_name=get_container_name "$project_name"
|
||||
container_name="dkbuild_maven_${container_name}"
|
||||
[ -n "$setup_image" ] || setup_image="dkbuild_maven_${container_name}_image"
|
||||
|
||||
# vérifier l'existence de l'image
|
||||
setx ctid=docker image ls --format '{{.ID}}' "${container_name}_image"
|
||||
setx ctid=docker image ls --format '{{.ID}}' "$setup_image"
|
||||
|
||||
# créer le container le cas échéant
|
||||
if [ -z "$ctid" ]; then
|
||||
estep "Création du container $container_name à partir de l'image $image"
|
||||
estep "Création de l'image $setup_image à partir de $image"
|
||||
cmd=(
|
||||
docker create -it --name "${container_name}_ct"
|
||||
docker create -it --name "${setup_image}_tmpct"
|
||||
"${basecmd[@]}"
|
||||
"$image"
|
||||
bash -c "$setupscript"
|
||||
)
|
||||
setx ctid="${cmd[@]}" &&
|
||||
docker container start -ai "$ctid" &&
|
||||
docker container commit "$ctid" "${container_name}_image" &&
|
||||
docker container commit "$ctid" "$setup_image" &&
|
||||
docker container rm "$ctid" || die
|
||||
fi
|
||||
|
||||
# prendre comme image le container créé
|
||||
image="${container_name}_image"
|
||||
image="$setup_image"
|
||||
fi
|
||||
|
||||
case "$action" in
|
||||
|
@ -2608,6 +2650,7 @@ cd "$projdir"
|
|||
[ "$host_mappings" == __UNDEFINED__ ] && host_mappings="${DEFAULTS[docker_host-mappings]}"
|
||||
local mvn="${DEFAULTS[mvn_mvn]}"
|
||||
local setup="${DEFAULTS[mvn_setup]}"
|
||||
local setup_image="${DEFAULTS[mvn_setup-image]}"
|
||||
local project_name="${DEFAULTS[mvn_project-name]}"
|
||||
if [ -f "$destdir/.maven.conf" ]; then
|
||||
eval "$(
|
||||
|
@ -2616,12 +2659,14 @@ cd "$projdir"
|
|||
MAVEN_MACHINE=-u
|
||||
MAVEN_CMD=
|
||||
MAVEN_SETUP=
|
||||
MAVEN_SETUP_IMAGE=
|
||||
source "$destdir/.maven.conf"
|
||||
[ -z "$java" ] && echo_setv java="$MAVEN_JAVA"
|
||||
[ -z "$image" ] && echo_setv image="$MAVEN_IMAGE"
|
||||
[ -z "$machine" ] && echo_setv machine="$MAVEN_MACHINE"
|
||||
[ -z "$mvn" ] && echo_setv mvn="$MAVEN_CMD"
|
||||
[ -z "$setup" ] && echo_setv setup="$MAVEN_SETUP"
|
||||
[ -z "$setup_image" ] && echo_setv setup_image="$MAVEN_SETUP_IMAGE"
|
||||
)"
|
||||
fi
|
||||
|
||||
|
@ -2636,6 +2681,7 @@ cd "$projdir"
|
|||
host-mappings=*) host_mappings="${1#host-mappings=}";;
|
||||
mvn=*) mvn="${1#mvn=}";;
|
||||
setup=*) setup="${1#setup=}";;
|
||||
setup-image=*) setup_image="${1#setup-image=}";;
|
||||
project-name=*) project_name="${1#project-name=}";;
|
||||
*=*) ewarn "mvn: $1: argument ignoré";;
|
||||
*) break;;
|
||||
|
|
Loading…
Reference in New Issue