dk: support build dans une image pour les projets composer
This commit is contained in:
parent
40d6605472
commit
ad44a1c2e5
130
dk
130
dk
|
@ -295,31 +295,62 @@ OPTIONS build
|
|||
-g, --ug, --no-update-apps
|
||||
ne pas mettre à jour les dépôts dépendants. ces dépôts sont définis dans
|
||||
le fichier update-apps.conf qui a le format suivant:
|
||||
DEFAULT_DEVEL_SRCDIR=
|
||||
DEFAULT_ORIGIN=
|
||||
DEFAULT_BRANCH=
|
||||
DEFAULT_COMPOSER_ACTION=
|
||||
PROFILE_CLEAN= # fonction de nettoyage spécifique au profil
|
||||
CLEAN= # ou... fonction de nettoyage par défaut
|
||||
APPS=() # applications à mettre à jour par défaut
|
||||
PROFILE_APPS=() # ou... spécifique au profil 'PROFILE'
|
||||
app_URL= # url du dépôt
|
||||
app_DEVEL_SRCDIR= # répertoire source du dépôt en mode devel
|
||||
app_SRC= # répertoire/fichier source (si URL='')
|
||||
app_DEST= # répertoire dans lequel faire le checkout
|
||||
# ou destination si synchro avec app_SRC
|
||||
app_NAME= # nom du répertoire dest si checkout; par
|
||||
# défaut prendre la valeur 'app'
|
||||
app_RSYNC_OPTS= # options de rsync si synchro (avec app_SRC
|
||||
# ou app_DEVEL_SRCDIR)
|
||||
app_PROFILE_ORIGIN= # origine spécifique au profil 'PROFILE'
|
||||
app_ORIGIN= # ou... origine par défaut de la branche
|
||||
app_PROFILE_BRANCH= # branche spécifique au profil 'PROFILE'
|
||||
app_BRANCH= # ou... branche par défaut
|
||||
app_TYPE= # type de projet (composer|none)
|
||||
app_AFTER_UPDATE=() # liste de commandes à lancer après le checkout
|
||||
app_COMPOSER_ACTION= # action projet composer (install|update|none)
|
||||
app_COMPOSER_ARGS=() # arguments de composer install|update
|
||||
## valeurs par défaut
|
||||
DEFAULT_DEVEL_SRCDIR= # répertoire de base des dépôts
|
||||
DEFAULT_BRANCH= # branche par défaut pour les checkouts
|
||||
DEFAULT_ORIGIN= # origine par défaut des branches
|
||||
CLEAN= # fonction de nettoyage
|
||||
APPS=() # applications à mettre à jour
|
||||
## valeurs par défaut pour les projets composer
|
||||
COMPOSER_ACTION= # action projet composer (install|update|none)
|
||||
COMPOSER_ARGS=() # arguments de composer install|update
|
||||
COMPOSER_PHP=
|
||||
COMPOSER_PHP_MAX=
|
||||
COMPOSER_IMAGE=
|
||||
COMPOSER_CMD=
|
||||
COMPOSER_SETUP=
|
||||
## pour chaque application définie dans APPS
|
||||
{app}_URL= # url du dépôt
|
||||
{app}_DEVEL_SRCDIR= # répertoire source du dépôt en mode devel
|
||||
{app}_SRC= # répertoire/fichier source (si URL='')
|
||||
{app}_DEST= # répertoire dans lequel faire le checkout
|
||||
# ou destination si synchro avec {app}_SRC
|
||||
{app}_NAME= # nom du répertoire dest si checkout; par
|
||||
# défaut prendre la valeur {app}
|
||||
{app}_RSYNC_OPTS= # options de rsync si synchro avec {app}_SRC
|
||||
# ou {app}_DEVEL_SRCDIR
|
||||
{app}_BRANCH= # branche à sélectionner pour le checkout
|
||||
{app}_ORIGIN= # origine de la branche à sélectionner
|
||||
{app}_TYPE= # type de projet (composer|none)
|
||||
{app}_AFTER_UPDATE=() # liste de commandes à lancer après le checkout
|
||||
# valeurs pour les projets composer. ces valeurs remplacent le cas
|
||||
# échéant celles définies dans le fichier .composer.conf du projet
|
||||
{app}_COMPOSER_ACTION=
|
||||
{app}_COMPOSER_ARGS=()
|
||||
{app}_COMPOSER_PHP=
|
||||
{app}_COMPOSER_PHP_MAX=
|
||||
{app}_COMPOSER_IMAGE=
|
||||
{app}_COMPOSER_CMD=
|
||||
{app}_COMPOSER_SETUP=
|
||||
Certaines valeurs peuvent être valuées selon le profil
|
||||
{profile}_CLEAN=
|
||||
{profile}_APPS=()
|
||||
{profile}_COMPOSER_ACTION=
|
||||
{profile}_COMPOSER_ARGS=()
|
||||
{profile}_COMPOSER_PHP=
|
||||
{profile}_COMPOSER_PHP_MAX=
|
||||
{profile}_COMPOSER_IMAGE=
|
||||
{profile}_COMPOSER_CMD=
|
||||
{profile}_COMPOSER_SETUP=
|
||||
{app}_{profile}_ORIGIN=
|
||||
{app}_{profile}_BRANCH=
|
||||
{app}_{profile}_COMPOSER_ACTION=
|
||||
{app}_{profile}_COMPOSER_ARGS=()
|
||||
{app}_{profile}_COMPOSER_PHP=
|
||||
{app}_{profile}_COMPOSER_PHP_MAX=
|
||||
{app}_{profile}_COMPOSER_IMAGE=
|
||||
{app}_{profile}_COMPOSER_CMD=
|
||||
{app}_{profile}_COMPOSER_SETUP=
|
||||
-u, --uu, --update-apps-only
|
||||
Ne faire que la mise à jour depuis les dépôts dépendants.
|
||||
-w, --ww, --update-apps-devel
|
||||
|
@ -340,7 +371,7 @@ VARIABLES de update-apps.conf
|
|||
SRC
|
||||
répertoire/fichier source, si URL n'est pas défini. si ce chemin est
|
||||
relatif, il doit être exprimé par rapport au répertoire du projet.
|
||||
IMPORTANT: dans ce cas, DEST n'est pas le répertoire de base du
|
||||
IMPORTANT: si SRC est définit, DEST n'est pas le répertoire de base du
|
||||
checkout, mais le répertoire destination pour la synchro
|
||||
DEVEL_SRCDIR
|
||||
répertoire source pour le mode devel. attention, il s'agit du répertoire
|
||||
|
@ -446,19 +477,23 @@ function docker_parse_build_args() {
|
|||
sed -r 's/([^=]+)=(.*)/\1=\2; replace_build_args+=(--build-arg \1="$\1")/'
|
||||
}
|
||||
function docker_parse_env_args() {
|
||||
[ -f .build.env ] && eval "$(docker_parse_build_args .build.env)"
|
||||
[ -f .build.env ] && eval "$(docker_parse_build_args .build.env)" # DEPRECATED
|
||||
[ -f build.env ] && eval "$(docker_parse_build_args build.env)"
|
||||
[ -n "$PROFILE" -a -f ".build.$PROFILE.env" ] && eval "$(docker_parse_build_args ".build.$PROFILE.env")"
|
||||
[ -f build.env.local ] && eval "$(docker_parse_build_args build.env.local)"
|
||||
[ -n "$PROFILE" -a -f ".build.$PROFILE.env" ] && eval "$(docker_parse_build_args ".build.$PROFILE.env")" # DEPRECATED
|
||||
[ -n "$PROFILE" -a -f "build.$PROFILE.env" ] && eval "$(docker_parse_build_args "build.$PROFILE.env")"
|
||||
[ -n "$PROFILE" -a -f "build.$PROFILE.env.local" ] && eval "$(docker_parse_build_args "build.$PROFILE.env.local")"
|
||||
}
|
||||
function docker_set_env_args() {
|
||||
[ -f .build.env ] && source ./.build.env
|
||||
[ -f .build.env ] && source ./.build.env # DEPRECATED
|
||||
[ -f build.env ] && source ./build.env
|
||||
[ -n "$PROFILE" -a -f ".build.$PROFILE.env" ] && source "./.build.$PROFILE.env"
|
||||
[ -f build.env.local ] && source ./build.env.local
|
||||
[ -n "$PROFILE" -a -f ".build.$PROFILE.env" ] && source "./.build.$PROFILE.env" # DEPRECATED
|
||||
[ -n "$PROFILE" -a -f "build.$PROFILE.env" ] && source "./build.$PROFILE.env"
|
||||
[ -n "$PROFILE" -a -f "build.$PROFILE.env.local" ] && source "./build.$PROFILE.env.local"
|
||||
}
|
||||
function docker_check_name() {
|
||||
[ -n "$NAME" ] || die "Vous devez définir NAME dans .build.env"
|
||||
[ -n "$NAME" ] || die "Vous devez définir NAME dans build.env"
|
||||
|
||||
if [ "$1" == set_container_name ]; then
|
||||
project_name="$NAME"
|
||||
|
@ -754,8 +789,7 @@ function build_update_apps() {
|
|||
fi
|
||||
|
||||
etitle "Mise à jour des dépendances"
|
||||
local app var URL SRC DEVEL_SRCDIR DEST NAME have_RSYNC_OPTS RSYNC_OPTS ORIGIN BRANCH TYPE after_update after_updates composer_action
|
||||
local -a composer_args
|
||||
local app var URL SRC DEVEL_SRCDIR DEST NAME have_RSYNC_OPTS RSYNC_OPTS ORIGIN BRANCH TYPE after_update after_updates
|
||||
for app in "${APPS[@]}"; do
|
||||
etitle "$app"
|
||||
|
||||
|
@ -935,13 +969,27 @@ 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 -a composer_vars composer_args
|
||||
|
||||
for cvname in composer_php composer_php_max composer_image composer_cmd composer_setup; do
|
||||
cvvalue="${var}_${PROFILE}_${cvname^^}"; cvvalue="${!cvvalue}"
|
||||
[ -n "$cvvalue" ] || { cvvalue="${var}_${cvname^^}"; cvvalue="${!cvvalue}"; }
|
||||
[ -n "$cvvalue" ] || { cvvalue="${PROFILE}_${cvname^^}"; cvvalue="${!cvvalue}"; }
|
||||
[ -n "$cvvalue" ] || { cvvalue="${cvname^^}"; cvvalue="${!cvvalue}"; }
|
||||
[ -n "$cvvalue" ] && composer_vars+=("${cvname^^}=$cvvalue")
|
||||
done
|
||||
|
||||
composer_action="${var}_${PROFILE}_COMPOSER_ACTION"; composer_action="${!composer_action}"
|
||||
[ -n "$composer_action" ] || { composer_action="${var}_COMPOSER_ACTION"; composer_action="${!composer_action}"; }
|
||||
[ -n "$composer_action" ] || composer_action="$DEFAULT_COMPOSER_ACTION"
|
||||
[ -n "$composer_action" ] || { composer_action="${PROFILE}_COMPOSER_ACTION"; composer_action="${!composer_action}"; }
|
||||
[ -n "$composer_action" ] || composer_action="$COMPOSER_ACTION"
|
||||
|
||||
composer_args="${var}_${PROFILE}_COMPOSER_ARGS"
|
||||
is_defined "$composer_args" || composer_args="${var}_COMPOSER_ARGS"
|
||||
is_defined "$composer_args" || composer_args="DEFAULT_COMPOSER_ARGS"
|
||||
is_defined "$composer_args" || composer_args="${PROFILE}_COMPOSER_ARGS"
|
||||
is_defined "$composer_args" || composer_args="COMPOSER_ARGS"
|
||||
composer_args="${composer_args}[@]"; composer_args=("${!composer_args}")
|
||||
|
||||
if [ -z "$BUILD_UPDATE_DEVEL" ]; then
|
||||
|
@ -955,7 +1003,7 @@ function build_update_apps() {
|
|||
setx cwd=pwd
|
||||
cd "$DEST"
|
||||
estep "Installation des dépendances composer"
|
||||
auto_composer "$composer_action" "${composer_args[@]}" || { eend; return 1; }
|
||||
auto_composer "${composer_vars[@]}" "$composer_action" "${composer_args[@]}" || { eend; return 1; }
|
||||
cd "$cwd"
|
||||
fi
|
||||
fi
|
||||
|
@ -1826,7 +1874,7 @@ function auto_composer() {
|
|||
local COMPOSER_CMD=
|
||||
local COMPOSER_SETUP=
|
||||
[ -f .composer.conf ] && source ./.composer.conf
|
||||
# les premiers arguments peuvent service à redéfinir les variables
|
||||
# les premiers arguments peuvent servir à redéfinir les variables
|
||||
while [ $# -gt 0 ]; do
|
||||
case "$1" in
|
||||
COMPOSER_PHP=*) setv "$1"; shift;;
|
||||
|
@ -1840,7 +1888,9 @@ function auto_composer() {
|
|||
done
|
||||
|
||||
local use_image
|
||||
if [ -n "$COMPOSER_PHP_MAX" -a "$COMPOSER_PHP_MAX" != none ]; then
|
||||
if [ "$COMPOSER_PHP" == force -o "$COMPOSER_PHP" == any ]; then
|
||||
use_image=1
|
||||
elif [ -n "$COMPOSER_PHP_MAX" -a "$COMPOSER_PHP_MAX" != none ]; then
|
||||
# Vérifier la version de PHP
|
||||
php -r '
|
||||
$version = $argv[1];
|
||||
|
@ -1856,8 +1906,6 @@ exit((PHP_VERSION_ID > $version)? 0: 1);
|
|||
elif [ -z "$COMPOSER_PHP" ]; then
|
||||
# pas de version minimum, tester simplement la valeur de COMPOSER_IMAGE
|
||||
[ "$COMPOSER_IMAGE" != none ] && use_image=1
|
||||
elif [ "$COMPOSER_PHP" == force -o "$COMPOSER_PHP" == any ]; then
|
||||
use_image=1
|
||||
else
|
||||
# Vérifier la version de PHP
|
||||
php -r '
|
||||
|
@ -1966,7 +2014,7 @@ fi
|
|||
|
||||
DEFAULT_PROFILE=devel
|
||||
# pour le moment ne pas lancer composer dans un container par défaut
|
||||
DEFAULT_COMPOSER_IMAGE=none #docker.univ-reunion.fr/image/apache-php-myiccas-utils:d10
|
||||
DEFAULT_COMPOSER_IMAGE=none #docker.univ-reunion.fr/image/phpbuilder
|
||||
PROFILE=
|
||||
DM_ALIASES=()
|
||||
DM_PROFILES=()
|
||||
|
|
Loading…
Reference in New Issue