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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user