dk: support des mappings d'hôtes
This commit is contained in:
parent
543d2d2f79
commit
b3983edd2a
146
dk
146
dk
|
@ -341,7 +341,9 @@ OPTIONS build
|
|||
DEFAULT_ORIGIN= # origine par défaut des branches
|
||||
CLEAN= # fonction de nettoyage
|
||||
APPS=() # applications à mettre à jour
|
||||
HOST_MAPPINGS=() # mappings d'hôtes pour les builds docker
|
||||
## valeurs par défaut pour les projets composer
|
||||
COMPOSER_DEVEL_SRCDIR= # répertoire de base des projets composer
|
||||
COMPOSER_ACTION= # action projet composer (install|update|none)
|
||||
COMPOSER_ARGS=() # arguments de composer install|update
|
||||
COMPOSER_PHP=
|
||||
|
@ -350,6 +352,7 @@ OPTIONS build
|
|||
COMPOSER_CMD=
|
||||
COMPOSER_SETUP=
|
||||
## valeurs par défaut pour les projets maven
|
||||
MAVEN_DEVEL_SRCDIR= # répertoire de base des projets maven
|
||||
MAVEN_ACTION= # action projet maven (package|none)
|
||||
MAVEN_ARGS=() # arguments de mvn
|
||||
MAVEN_JAVA=
|
||||
|
@ -391,6 +394,7 @@ OPTIONS build
|
|||
Certaines valeurs peuvent être valuées selon le profil
|
||||
{profile}_CLEAN=
|
||||
{profile}_APPS=()
|
||||
{profile}_HOST_MAPPINGS=()
|
||||
{profile}_COMPOSER_ACTION=
|
||||
{profile}_COMPOSER_ARGS=()
|
||||
{profile}_COMPOSER_PHP=
|
||||
|
@ -418,7 +422,8 @@ OPTIONS build
|
|||
-w, --ww, --update-apps-devel
|
||||
Faire la mise à jour en mode devel: le projet ainsi que ses fichiers des
|
||||
répertoires vendor/lib et vendor/ur sont synchronisés via rsync depuis
|
||||
\$DEFAULT_DEVEL_SRCDIR qui vaut par défaut \$HOME/wop/php
|
||||
\$DEFAULT_DEVEL_SRCDIR, \$COMPOSER_DEVEL_SRCDIR ou \$MAVEN_DEVEL_SRCDIR
|
||||
en fonction du type de projet
|
||||
--uo, --update-apps-origin ORIGIN
|
||||
Spécifier l'origine par défaut pour update-apps
|
||||
--ub, --update-apps-branch BRANCH
|
||||
|
@ -437,8 +442,8 @@ VARIABLES de update-apps.conf
|
|||
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
|
||||
du projet, alors que DEFAULT_DEVEL_SRCDIR est le répertoire de base par
|
||||
défaut des projets
|
||||
du projet, alors que DEFAULT_DEVEL_SRCDIR, COMPOSER_DEVEL_SRCDIR et
|
||||
MAVEN_DEVEL_SRCDIR sont les répertoires de base par défaut des projets
|
||||
ORIGIN
|
||||
vaut 'origin' par défaut
|
||||
BRANCH
|
||||
|
@ -450,8 +455,13 @@ VARIABLES de update-apps.conf
|
|||
- si un fichier composer.json existe, vaut 'composer' par défaut
|
||||
- si un fichier pom.xml existe, vaut 'maven' par défaut
|
||||
- sinon vaut 'none' par défaut
|
||||
BEFORE_BUILD
|
||||
Cette variable est une liste de commandes à lancer après le clonage (ou
|
||||
la mise à jour) du dépôt et avant le build, en fonction du type de
|
||||
projet. La syntaxe à utiliser est la même que pour AFTER_UPDATE
|
||||
AFTER_UPDATE
|
||||
Cette variable est une liste de commandes à lancer après la maj du dépôt
|
||||
et le build éventuel du projet
|
||||
- si le chemin est absolu ou relatif, lancer la commande telle quelle
|
||||
- s'il n'y a pas de chemin, alors ce doit être le nom d'une fonction
|
||||
existante auquel on enlève le préfixe update_apps_func_
|
||||
|
@ -470,14 +480,23 @@ VARIABLES de update-apps.conf
|
|||
TYPE= # type de projet (composer|none)
|
||||
COMPOSER_ACTION
|
||||
vaut 'install' par défaut. Indique ce qu'il faut faire pour un projet de
|
||||
type 'composer' après avoir lancé les commandes de AFTER_UPDATE. Les
|
||||
directives supportées sont 'install', 'update' et 'none'
|
||||
type 'composer' après avoir lancé les commandes de BEFORE_BUILD et avant
|
||||
les commandes de AFTER_UPDATE. Les directives supportées sont 'install',
|
||||
'update' et 'none'
|
||||
COMPOSER_ARGS
|
||||
options à utiliser avec composer install|update. La valeur par défaut
|
||||
dépend du profil:
|
||||
options à utiliser avec 'composer \$COMPOSER_ACTION'. La valeur par
|
||||
défaut dépend du profil:
|
||||
prod: --no-dev -o
|
||||
test: --no-dev -o
|
||||
autres: (pas d'options)
|
||||
MAVEN_ACTION
|
||||
vaut 'package' par défaut. Indique ce qu'il faut faire pour un projet de
|
||||
type 'maven' après avoir lancé les commandes de BEFORE_BUILD et avant
|
||||
les commandes de AFTER_UPDATE. Les directives supportées sont 'package'
|
||||
(alias de 'clean package'), 'package_only' qui ne lance pas de clean
|
||||
avant le build, et 'none'
|
||||
MAVEN_ARGS
|
||||
options à utiliser avec la commande 'mvn \$MAVEN_ACTION'
|
||||
|
||||
FONCTIONS de update-apps.conf
|
||||
sqlmig [DESTDIR [SRCDIR [NOFIX]]]
|
||||
|
@ -807,6 +826,7 @@ function update_apps_func_pff() {
|
|||
}
|
||||
|
||||
function update_apps_func_mvn() {
|
||||
# XXX obsolète: remplacé par le support natif des projets maven
|
||||
local cwd="$(pwd)"
|
||||
cd "$DEST"
|
||||
mvn "$@" || die
|
||||
|
@ -818,17 +838,16 @@ function build_update_apps() {
|
|||
[ -f update-apps.conf ] || return 0
|
||||
|
||||
# charger le fichier de configuration
|
||||
local DEFAULT_ORIGIN DEFAULT_BRANCH APPS
|
||||
local DEFAULT_ORIGIN DEFAULT_BRANCH
|
||||
local -a APPS
|
||||
DEFAULT_ORIGIN="$UPDATE_APPS_ORIGIN"
|
||||
[ -z "$DEFAULT_ORIGIN" ] && DEFAULT_ORIGIN=origin
|
||||
DEFAULT_BRANCH="$UPDATE_APPS_BRANCH"
|
||||
#XXX à terme, ne déployer en prod que la branche master
|
||||
[ -z "$DEFAULT_BRANCH" -a "$PROFILE" == prod ] && DEFAULT_BRANCH=develop #XXX master
|
||||
[ -z "$DEFAULT_BRANCH" ] && DEFAULT_BRANCH=develop
|
||||
DEFAULT_DEVEL_SRCDIR="$HOME/wop/php"
|
||||
DEFAULT_COMPOSER_ACTION=install
|
||||
APPS=()
|
||||
CLEAN=
|
||||
APPS=()
|
||||
[ -f update-apps.conf ] && source ./update-apps.conf
|
||||
|
||||
local apps # liste des applications spécifique au profil
|
||||
|
@ -869,11 +888,6 @@ function build_update_apps() {
|
|||
fi
|
||||
fi
|
||||
|
||||
DEVEL_SRCDIR="${var}_DEVEL_SRCDIR"; DEVEL_SRCDIR="${!DEVEL_SRCDIR}"
|
||||
if [ -z "$DEVEL_SRCDIR" -a -n "$URL" ]; then
|
||||
DEVEL_SRCDIR="$DEFAULT_DEVEL_SRCDIR/${URL##*/}"
|
||||
fi
|
||||
|
||||
DEST="${var}_DEST"; DEST="${!DEST}"
|
||||
[ -n "$DEST" ] || DEST="$app/b"
|
||||
|
||||
|
@ -899,6 +913,16 @@ function build_update_apps() {
|
|||
# calculer le type maintenant, on en a besoin pour le mode devel
|
||||
TYPE="${var}_TYPE"; TYPE="${!TYPE}"
|
||||
|
||||
DEVEL_SRCDIR="${var}_DEVEL_SRCDIR"; DEVEL_SRCDIR="${!DEVEL_SRCDIR}"
|
||||
if [ -z "$DEVEL_SRCDIR" -a -n "$URL" ]; then
|
||||
case "$TYPE" in
|
||||
composer) DEVEL_SRCDIR="${COMPOSER_DEVEL_SRCDIR:-$DEFAULT_DEVEL_SRCDIR}";;
|
||||
maven) DEVEL_SRCDIR="${MAVEN_DEVEL_SRCDIR:-$DEFAULT_DEVEL_SRCDIR}";;
|
||||
*) DEVEL_SRCDIR="$DEFAULT_DEVEL_SRCDIR";;
|
||||
esac
|
||||
DEVEL_SRCDIR="$DEVEL_SRCDIR/${URL##*/}"
|
||||
fi
|
||||
|
||||
if [ -n "$BUILD_UPDATE_DEVEL" -a -n "$DEVEL_SRCDIR" ]; then
|
||||
mkdir -p "$DEST" || { eend; return 1; }
|
||||
DEST="$DEST/$NAME"
|
||||
|
@ -1068,7 +1092,7 @@ function build_update_apps() {
|
|||
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="${PROFILE}_COMPOSER_ACTION"; composer_action="${!composer_action}"; }
|
||||
[ -n "$composer_action" ] || composer_action="$COMPOSER_ACTION"
|
||||
[ -n "$composer_action" ] || composer_action="${COMPOSER_ACTION:-install}"
|
||||
|
||||
composer_args="${var}_${PROFILE}_COMPOSER_ARGS"
|
||||
is_defined "$composer_args" || composer_args="${var}_COMPOSER_ARGS"
|
||||
|
@ -1077,7 +1101,7 @@ function build_update_apps() {
|
|||
composer_args="${composer_args}[@]"; composer_args=("${!composer_args}")
|
||||
|
||||
if [ -z "$BUILD_UPDATE_DEVEL" ]; then
|
||||
case "${composer_action:-install}" in
|
||||
case "$composer_action" in
|
||||
i|install) composer_action=install;;
|
||||
u|update) composer_action=update;;
|
||||
none|nop) composer_action=;;
|
||||
|
@ -1107,7 +1131,7 @@ function build_update_apps() {
|
|||
maven_action="${var}_${PROFILE}_MAVEN_ACTION"; maven_action="${!maven_action}"
|
||||
[ -n "$maven_action" ] || { maven_action="${var}_MAVEN_ACTION"; maven_action="${!maven_action}"; }
|
||||
[ -n "$maven_action" ] || { maven_action="${PROFILE}_MAVEN_ACTION"; maven_action="${!maven_action}"; }
|
||||
[ -n "$maven_action" ] || maven_action="$MAVEN_ACTION"
|
||||
[ -n "$maven_action" ] || maven_action="${MAVEN_ACTION:-package}"
|
||||
|
||||
maven_args="${var}_${PROFILE}_MAVEN_ARGS"
|
||||
is_defined "$maven_args" || maven_args="${var}_MAVEN_ARGS"
|
||||
|
@ -1116,10 +1140,9 @@ function build_update_apps() {
|
|||
maven_args="${maven_args}[@]"; maven_args=("${!maven_args}")
|
||||
|
||||
if [ -z "$BUILD_UPDATE_DEVEL" ]; then
|
||||
case "${maven_action:-p}" in
|
||||
c|clean) maven_action=clean;;
|
||||
po|package_only) maven_action=package;;
|
||||
p|package) maven_action="clean package";;
|
||||
case "$maven_action" in
|
||||
package_only|po) maven_action="package";;
|
||||
"clean package"|package|cp|p) maven_action="clean package";;
|
||||
none|nop) maven_action=;;
|
||||
*) ewarn "$maven_action: action invalide"; maven_action=;;
|
||||
esac
|
||||
|
@ -1926,7 +1949,7 @@ function default_docker_composer() {
|
|||
esac
|
||||
setx args=qvals "$@"
|
||||
|
||||
local -a basecmd cmd setupscript runscript
|
||||
local -a basecmd setupscript runscript cmd
|
||||
basecmd=(
|
||||
-e user="$user"
|
||||
-e group="$group"
|
||||
|
@ -1934,8 +1957,11 @@ function default_docker_composer() {
|
|||
-e setup="$COMPOSER_SETUP"
|
||||
-e composer="$COMPOSER_CMD"
|
||||
-e args="$args"
|
||||
-v "$HOME:$HOME"
|
||||
)
|
||||
for host_mapping in "${HOST_MAPPINGS[@]}"; do
|
||||
basecmd+=(--add-host "$host_mapping")
|
||||
done
|
||||
basecmd+=(-v "$HOME:$HOME")
|
||||
if [ "${projdir#$HOME/}" == "$projdir" ]; then
|
||||
# si le répertoire de projet ne se trouve pas dans $HOME, le monter aussi
|
||||
cmd+=(-v "$projdir:$projdir")
|
||||
|
@ -1999,6 +2025,12 @@ fi
|
|||
function local_composer() { default_local_composer "$@"; }
|
||||
function docker_composer() { default_docker_composer "$@"; }
|
||||
function auto_composer() {
|
||||
# mappings d'hôtes
|
||||
if [ -z "$HOST_MAPPINGS" ]; then
|
||||
HOST_MAPPINGS="${PROFILE}_HOST_MAPPINGS[@]"; HOST_MAPPINGS=("${!HOST_MAPPINGS}")
|
||||
[ ${#HOST_MAPPINGS[*]} -gt 0 ] || HOST_MAPPINGS=("${DEFAULT_HOST_MAPPINGS[@]}")
|
||||
fi
|
||||
|
||||
local COMPOSER_PHP=
|
||||
local COMPOSER_PHP_MAX=
|
||||
local COMPOSER_IMAGE="$DEFAULT_COMPOSER_IMAGE"
|
||||
|
@ -2009,13 +2041,14 @@ function auto_composer() {
|
|||
# les premiers arguments peuvent servir à redéfinir les variables
|
||||
while [ $# -gt 0 ]; do
|
||||
case "$1" in
|
||||
COMPOSER_PHP=*) setv "$1"; shift;;
|
||||
COMPOSER_PHP_MAX=*) setv "$1"; shift;;
|
||||
COMPOSER_IMAGE=*) setv "$1"; shift;;
|
||||
COMPOSER_MACHINE=*) setv "$1"; shift;;
|
||||
COMPOSER_CMD=*) setv "$1"; shift;;
|
||||
COMPOSER_SETUP=*) setv "$1"; shift;;
|
||||
COMPOSER_*=*) shift;; # ignorer variable inconnue
|
||||
COMPOSER_*=*)
|
||||
setv "$1"
|
||||
shift
|
||||
;;
|
||||
HOST_MAPPING=*)
|
||||
HOST_MAPPINGS+=("${1#HOST_MAPPING=}")
|
||||
shift
|
||||
;;
|
||||
*) break;;
|
||||
esac
|
||||
done
|
||||
|
@ -2127,7 +2160,7 @@ function default_docker_maven() {
|
|||
esac
|
||||
setx args=qvals "$@"
|
||||
|
||||
local -a basecmd cmd setupscript runscript
|
||||
local -a basecmd host_mapping setupscript runscript cmd
|
||||
basecmd=(
|
||||
-e user="$user"
|
||||
-e group="$group"
|
||||
|
@ -2136,11 +2169,14 @@ function default_docker_maven() {
|
|||
-e maven="$MAVEN_CMD"
|
||||
-e args="$args"
|
||||
${MAVEN_JAVA:+-e JAVA="$MAVEN_JAVA"}
|
||||
-v "$HOME:$HOME"
|
||||
)
|
||||
for host_mapping in "${HOST_MAPPINGS[@]}"; do
|
||||
basecmd+=(--add-host "$host_mapping")
|
||||
done
|
||||
basecmd+=(-v "$HOME:$HOME")
|
||||
if [ "${projdir#$HOME/}" == "$projdir" ]; then
|
||||
# si le répertoire de projet ne se trouve pas dans $HOME, le monter aussi
|
||||
cmd+=(-v "$projdir:$projdir")
|
||||
basecmd+=(-v "$projdir:$projdir")
|
||||
fi
|
||||
setupscript='eval "$setup"'
|
||||
runscript='
|
||||
|
@ -2196,6 +2232,12 @@ cd "$projdir"
|
|||
function local_maven() { default_local_maven "$@"; }
|
||||
function docker_maven() { default_docker_maven "$@"; }
|
||||
function auto_maven() {
|
||||
# mappings d'hôtes
|
||||
if [ -z "$HOST_MAPPINGS" ]; then
|
||||
HOST_MAPPINGS="${PROFILE}_HOST_MAPPINGS[@]"; HOST_MAPPINGS=("${!HOST_MAPPINGS}")
|
||||
[ ${#HOST_MAPPINGS[*]} -gt 0 ] || HOST_MAPPINGS=("${DEFAULT_HOST_MAPPINGS[@]}")
|
||||
fi
|
||||
|
||||
local MAVEN_JAVA=
|
||||
local MAVEN_IMAGE="$DEFAULT_MAVEN_IMAGE"
|
||||
local MAVEN_MACHINE=-u
|
||||
|
@ -2205,12 +2247,14 @@ function auto_maven() {
|
|||
# les premiers arguments peuvent servir à redéfinir les variables
|
||||
while [ $# -gt 0 ]; do
|
||||
case "$1" in
|
||||
MAVEN_JAVA=*) setv "$1"; shift;;
|
||||
MAVEN_IMAGE=*) setv "$1"; shift;;
|
||||
MAVEN_MACHINE=*) setv "$1"; shift;;
|
||||
MAVEN_CMD=*) setv "$1"; shift;;
|
||||
MAVEN_SETUP=*) setv "$1"; shift;;
|
||||
MAVEN_*=*) shift;; # ignorer variable inconnue
|
||||
MAVEN_*=*)
|
||||
setv "$1"
|
||||
shift
|
||||
;;
|
||||
HOST_MAPPING=*)
|
||||
HOST_MAPPINGS+=("${1#HOST_MAPPING=}")
|
||||
shift
|
||||
;;
|
||||
*) break;;
|
||||
esac
|
||||
done
|
||||
|
@ -2330,15 +2374,27 @@ else DOCKER=docker
|
|||
fi
|
||||
|
||||
DEFAULT_PROFILE=devel
|
||||
DEFAULT_COMPOSER_IMAGE=docker.univ-reunion.fr/image/phpbuilder
|
||||
DEFAULT_MAVEN_IMAGE=docker.univ-reunion.fr/image/javabuilder
|
||||
PROFILE=
|
||||
DM_ALIASES=()
|
||||
DM_PROFILES=()
|
||||
CLUSTERDIRS=()
|
||||
DEFAULT_DEVEL_SRCDIR="$HOME/wop"
|
||||
COMPOSER_DEVEL_SRCDIR="$HOME/wop/php"
|
||||
MAVEN_DEVEL_SRCDIR="$HOME/wop/sn"
|
||||
DEFAULT_COMPOSER_IMAGE=docker.univ-reunion.fr/image/phpbuilder
|
||||
DEFAULT_MAVEN_IMAGE=docker.univ-reunion.fr/image/javabuilder
|
||||
DEFAULT_HOST_MAPPINGS=()
|
||||
prod_HOST_MAPPINGS=(
|
||||
docker.univ-reunion.fr:10.82.70.154
|
||||
repos.univ-reunion.fr:10.82.70.246
|
||||
git.univ-reunion.fr:10.82.70.247
|
||||
)
|
||||
test_HOST_MAPPINGS=("${prod_HOST_MAPPINGS}")
|
||||
set_defaults dk
|
||||
export PROFILE
|
||||
|
||||
HOST_MAPPINGS=()
|
||||
|
||||
chdir=
|
||||
CONFIG=
|
||||
DM_SET_MACHINE=
|
||||
|
@ -2855,6 +2911,8 @@ NR == 1 { print; next }
|
|||
while [ $# -gt 0 -a "$1" != -- ]; do
|
||||
if [[ "$1" == COMPOSER_*=* ]]; then
|
||||
args+=("$1"); shift
|
||||
elif [[ "$1" == HOST_MAPPING=* ]]; then
|
||||
args+=("$1"); shift
|
||||
else
|
||||
break
|
||||
fi
|
||||
|
@ -2878,6 +2936,8 @@ NR == 1 { print; next }
|
|||
while [ $# -gt 0 -a "$1" != -- ]; do
|
||||
if [[ "$1" == MAVEN_*=* ]]; then
|
||||
args+=("$1"); shift
|
||||
elif [[ "$1" == HOST_MAPPING=* ]]; then
|
||||
args+=("$1"); shift
|
||||
else
|
||||
break
|
||||
fi
|
||||
|
|
|
@ -14,5 +14,16 @@
|
|||
# d'aliases
|
||||
#CLUSTERDIRS=(~/wop/containers/*.univ.run)
|
||||
|
||||
# Image à utiliser pour lancer composer
|
||||
#COMPOSER_IMAGE=docker.univ-reunion.fr/image/apache-php-myiccas-utils:d10
|
||||
# Répertoire de base par défaut des projets en mode devel
|
||||
#DEFAULT_DEVEL_SRCDIR="$HOME/wop"
|
||||
#COMPOSER_DEVEL_SRCDIR="$HOME/wop/php"
|
||||
#MAVEN_DEVEL_SRCDIR="$HOME/wop/sn"
|
||||
|
||||
# Image à utiliser pour les builds
|
||||
#DEFAULT_COMPOSER_IMAGE=docker.univ-reunion.fr/image/phpbuilder:d10
|
||||
#DEFAULT_MAVEN_IMAGE=docker.univ-reunion.fr/image/javabuilder:d10
|
||||
|
||||
# Mappings d'hôtes à activer pour les builds à base d'image
|
||||
#DEFAULT_HOST_MAPPINGS=()
|
||||
#prod_HOST_MAPPINGS=(docker.univ-reunion.fr:10.82.70.154 repos.univ-reunion.fr:10.82.70.246 git.univ-reunion.fr:10.82.70.247)
|
||||
#test_HOST_MAPPINGS=("${prod_HOST_MAPPINGS}")
|
||||
|
|
Loading…
Reference in New Issue