Intégration de la branche rwoinst-updates
This commit is contained in:
commit
6f1d5e5947
|
@ -412,7 +412,7 @@ if test "\$keep" = n; then
|
||||||
fi
|
fi
|
||||||
eval \$finish;
|
eval \$finish;
|
||||||
if test x"\$tmp_archive" = xy; then
|
if test x"\$tmp_archive" = xy; then
|
||||||
exec /bin/rm -f "\$thisarch"
|
/bin/rm -f "\$thisarch"; exit \$res
|
||||||
else
|
else
|
||||||
exit \$res
|
exit \$res
|
||||||
fi
|
fi
|
||||||
|
|
131
lib/ulib/woinst
131
lib/ulib/woinst
|
@ -410,27 +410,52 @@ OPTIONS
|
||||||
PREFIX=value
|
PREFIX=value
|
||||||
Spécifier une valeur pour un préfixe, plutôt que de laisser uprefix
|
Spécifier une valeur pour un préfixe, plutôt que de laisser uprefix
|
||||||
l'autodétecter. Utiliser uprefix -l pour une liste de préfixes valides.
|
l'autodétecter. Utiliser uprefix -l pour une liste de préfixes valides.
|
||||||
-b Redémarrer les instances en mode bounce.
|
--prefix
|
||||||
Par défaut, les instances sont arrêtées avant le déploiement, et
|
Corriger les chemins des variables qui commencent par des préfixes
|
||||||
redémarrées après
|
valides (c'est la valeur par défaut). Utiliser 'uprefix -l' pour avoir
|
||||||
-W Ne déployer que les resources web. Implique -n
|
une liste de préfixes valides
|
||||||
-n Ne pas tagger les bundles déployés avec un numéro de version. Par
|
--no-prefix
|
||||||
défaut, l'utilisateur est invité à compléter des informations telles
|
Ne jamais corriger un chemin.
|
||||||
que n° de version et date de release si ces informations ne sont pas
|
-W, --webres
|
||||||
|
Ne déployer que les resources web. Implique -n
|
||||||
|
-n, --no-tag
|
||||||
|
Ne pas tagger les bundles déployés avec un numéro de version. En temps
|
||||||
|
normal, l'utilisateur est invité à compléter des informations telles que
|
||||||
|
n° de version et date de release si ces informations ne sont pas
|
||||||
disponible.
|
disponible.
|
||||||
-x CMD
|
-d, --active-dbconfig DBCONFIG
|
||||||
|
Spécifier le profil de connexion à utiliser par défaut pour tous les
|
||||||
|
eomodels du bundle. S'il faut un profil différent en fonction de l'eomodel, utiliser l'option -m
|
||||||
|
-m, --active-dbconfig-map EOMODEL:DBCONFIG
|
||||||
|
Spécifier un mapping entre un nom d'eomodel et le profil de connexion à
|
||||||
|
utiliser. Pour les eomodels qui ne sont pas spécifiés, la valeur par
|
||||||
|
défaut est utilisée si elle existe. Il est possible de spécifier
|
||||||
|
plusieurs mappings en les séparant par des virgules.
|
||||||
|
--stop-start
|
||||||
|
Redémarrer les instances de la manière classique: les instances sont
|
||||||
|
arrêtées avant le déploiement, et redémarrées après. C'est la valeur par
|
||||||
|
défaut.
|
||||||
|
-b, --bounce
|
||||||
|
Redémarrer les instances en mode bounce.
|
||||||
|
-x, --exec CMD
|
||||||
Exécuter la commande CMD après avoir effectué le déploiement"
|
Exécuter la commande CMD après avoir effectué le déploiement"
|
||||||
}
|
}
|
||||||
|
|
||||||
local bounce webinst notag scripts istmpdir tmpdir
|
local istmpdir tmpdir autoprefix=1 bounce webinst notag default_dbconfig
|
||||||
scripts=()
|
local -a dbconfigs scripts
|
||||||
parse_opts "${PRETTYOPTS[@]}" \
|
parse_opts "${PRETTYOPTS[@]}" \
|
||||||
--help '$exit_with __woinst_display_help' \
|
--help '$exit_with __woinst_display_help' \
|
||||||
-b,--bounce bounce=1 \
|
|
||||||
-W,--webres webinst=1 \
|
|
||||||
-n,--notag notag=1 \
|
|
||||||
-x:,--exec: scripts \
|
|
||||||
--is-tmpdir '$istmpdir=1; tmpdir=.' \
|
--is-tmpdir '$istmpdir=1; tmpdir=.' \
|
||||||
|
--prefix autoprefix=1 \
|
||||||
|
--no-prefix autoprefix= \
|
||||||
|
-W,--webres webinst=1 \
|
||||||
|
--tag notag= \
|
||||||
|
-n,--no-tag notag=1 \
|
||||||
|
-d:,--active-dbconfig: default_dbconfig= \
|
||||||
|
-m:,--active-dbconfig-map: dbconfigs \
|
||||||
|
--stop-start bounce= \
|
||||||
|
-b,--bounce bounce=1 \
|
||||||
|
-x:,--exec: scripts \
|
||||||
@ args -- "$@" &&
|
@ args -- "$@" &&
|
||||||
set -- "${args[@]}" || {
|
set -- "${args[@]}" || {
|
||||||
eerror "$args"
|
eerror "$args"
|
||||||
|
@ -457,7 +482,8 @@ OPTIONS
|
||||||
for src in "${@:-.}"; do
|
for src in "${@:-.}"; do
|
||||||
if [[ "$src" == *=* ]]; then
|
if [[ "$src" == *=* ]]; then
|
||||||
splitvar "$src" name value
|
splitvar "$src" name value
|
||||||
array_add variables "$name"
|
array_addu variables "$name"
|
||||||
|
[ -n "$autoprefix" ] && value="$(expand_prefix "$value")"
|
||||||
_setv "$name" "$value"
|
_setv "$name" "$value"
|
||||||
else
|
else
|
||||||
src="$(abspath "$src")"
|
src="$(abspath "$src")"
|
||||||
|
@ -469,6 +495,19 @@ OPTIONS
|
||||||
copied=1
|
copied=1
|
||||||
fi
|
fi
|
||||||
if [ -d "$src" ]; then
|
if [ -d "$src" ]; then
|
||||||
|
setx name=basename -- "$src"
|
||||||
|
case "$src" in
|
||||||
|
*.woa|*.framework) ;;
|
||||||
|
*) # support projet maven
|
||||||
|
if [ ! -f "$src/pom.xml" ]; then
|
||||||
|
: # non, pas un projet maven
|
||||||
|
elif [ -d "$src/target/$name.woa" ]; then
|
||||||
|
src="$src/target/$name.woa"
|
||||||
|
elif [ -d "$src/target/$name.framework" ]; then
|
||||||
|
src="$src/target/$name.framework"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
if endswith "$src" .framework; then
|
if endswith "$src" .framework; then
|
||||||
is_wofwkdir "$src" || {
|
is_wofwkdir "$src" || {
|
||||||
eerror "Framework invalide: $(ppath "$src")"
|
eerror "Framework invalide: $(ppath "$src")"
|
||||||
|
@ -504,6 +543,68 @@ OPTIONS
|
||||||
done
|
done
|
||||||
eend
|
eend
|
||||||
|
|
||||||
|
# Corriger les eomodelds
|
||||||
|
array_fix_paths dbconfigs ,
|
||||||
|
if [ -n "$default_dbconfig" -o ${#dbconfigs[*]} -gt 0 ]; then
|
||||||
|
etitle "Configuration des eomodels"
|
||||||
|
local -a eonames eomodels tmpeomodels
|
||||||
|
local eom dbc eoname eomodel dbconfig found
|
||||||
|
|
||||||
|
estep "Calcul de la liste des eomodels"
|
||||||
|
if [ ${#dbconfigs[*]} -eq 0 ]; then
|
||||||
|
for src in "${frameworks[@]}"; do
|
||||||
|
array_from_lines tmpeomodels "$(find "$src" -type d -name "*.eomodeld")"
|
||||||
|
for eom in "${tmpeomodels[@]}"; do
|
||||||
|
array_addu eonames "$(basename -- "$eom")"
|
||||||
|
done
|
||||||
|
done
|
||||||
|
for src in "${applications[@]}"; do
|
||||||
|
array_from_lines tmpeomodels "$(find "$src" -type d -name "*.eomodeld")"
|
||||||
|
for eom in "${tmpeomodels[@]}"; do
|
||||||
|
array_addu eonames "$(basename -- "$eom")"
|
||||||
|
done
|
||||||
|
done
|
||||||
|
else
|
||||||
|
for dbc in "${dbconfigs[@]}"; do
|
||||||
|
splitpair "$dbc" eom dbc
|
||||||
|
[ "${eom%.eomodeld}" != "$eom" ] || eom="$eom.eomodeld"
|
||||||
|
array_addu eonames "$(basename -- "$eom")"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
for eom in "${eonames[@]}"; do
|
||||||
|
for src in "${frameworks[@]}"; do
|
||||||
|
array_from_lines tmpeomodels "$(find "$src" -type d -name "$eom")"
|
||||||
|
array_extendu eomodels tmpeomodels
|
||||||
|
done
|
||||||
|
for src in "${applications[@]}"; do
|
||||||
|
array_from_lines tmpeomodels "$(find "$src" -type d -name "$eom")"
|
||||||
|
array_extendu eomodels tmpeomodels
|
||||||
|
done
|
||||||
|
done
|
||||||
|
|
||||||
|
for eomodel in "${eomodels[@]}"; do
|
||||||
|
setx eoname=basename -- "$eomodel"
|
||||||
|
if [ ! -f "$eomodel/index.eomodeld" ]; then
|
||||||
|
ewarn "$eomodel: eomode invalide"
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
found=
|
||||||
|
for dbc in "${dbconfigs[@]}"; do
|
||||||
|
splitpair "$dbc" eom dbconfig
|
||||||
|
[ "${eom%.eomodeld}" != "$eom" ] || eom="$eom.eomodeld"
|
||||||
|
if [ "$(basename -- "$eom")" == "$eoname" ]; then
|
||||||
|
found="$dbconfig"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
[ -z "$found" -a -n "$default_dbconfig" ] && found="$default_dbconfig"
|
||||||
|
if [ -n "$found" ]; then
|
||||||
|
estep "$eomodel [$found]"
|
||||||
|
sed -i "/^ *activeDatabaseConfigName *=/s/=.*;/=\"$found\";/" "$eomodel/index.eomodeld"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
# Tagger les bundles
|
# Tagger les bundles
|
||||||
if [ -z "$webinst" -a -z "$notag" ]; then
|
if [ -z "$webinst" -a -z "$notag" ]; then
|
||||||
etitle "Tagger les bundles"
|
etitle "Tagger les bundles"
|
||||||
|
|
9
rtoinst
9
rtoinst
|
@ -235,22 +235,24 @@ eend
|
||||||
|
|
||||||
## Déploiement
|
## Déploiement
|
||||||
|
|
||||||
# sur l'hôte distant, ne rendre interactif qu'à partir de -yy
|
# sur l'hôte distant, ne rendre non interactif qu'à partir de -yy
|
||||||
rinteraction=$__interaction
|
rinteraction=$__interaction
|
||||||
[ $rinteraction -lt 2 ] && rinteraction=$(($rinteraction + 1))
|
[ $rinteraction -lt 2 ] && rinteraction=$(($rinteraction + 1))
|
||||||
|
|
||||||
for host in "${hosts[@]}"; do
|
for host in "${hosts[@]}"; do
|
||||||
if [ "$host" == "localhost" ]; then
|
if [ "$host" == "localhost" ]; then
|
||||||
etitle -s "Déploiement sur l'hôte local"
|
etitle "Déploiement sur l'hôte local"
|
||||||
"$archive" ${tmproot:+--tmproot "$tmproot"} -- "${webapps[@]}" "$@" "${toinst_options[@]}"
|
"$archive" ${tmproot:+--tmproot "$tmproot"} -- "${webapps[@]}" "$@" "${toinst_options[@]}"
|
||||||
eend
|
eend
|
||||||
else
|
else
|
||||||
splituserhost "$host" user host
|
splituserhost "$host" user host
|
||||||
[ -n "$user" ] || user=root
|
[ -n "$user" ] || user=root
|
||||||
|
|
||||||
etitle -s "Déploiement sur $user@$host"
|
etitle "Déploiement sur $user@$host"
|
||||||
|
|
||||||
estep "Copie de l'archive"
|
estep "Copie de l'archive"
|
||||||
scp -S "$SSH" "$archive" "$user@$host:" || die
|
scp -S "$SSH" "$archive" "$user@$host:" || die
|
||||||
|
|
||||||
estep "Lancement du script de déploiement"
|
estep "Lancement du script de déploiement"
|
||||||
"$SSH" -qt "$user@$host" "\
|
"$SSH" -qt "$user@$host" "\
|
||||||
__interaction=$rinteraction
|
__interaction=$rinteraction
|
||||||
|
@ -259,6 +261,7 @@ __tlevel=$(qval "$__tlevel")
|
||||||
export __interaction __estack __tlevel
|
export __interaction __estack __tlevel
|
||||||
${UTOOLS_LANG:+UTOOLS_LANG='$UTOOLS_LANG'; export UTOOLS_LANG
|
${UTOOLS_LANG:+UTOOLS_LANG='$UTOOLS_LANG'; export UTOOLS_LANG
|
||||||
}$(qvals "./$archivename" ${tmproot:+--tmproot "$tmproot"} -- "${webapps[@]}" "$@" "${toinst_options[@]}")"
|
}$(qvals "./$archivename" ${tmproot:+--tmproot "$tmproot"} -- "${webapps[@]}" "$@" "${toinst_options[@]}")"
|
||||||
|
|
||||||
eend
|
eend
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
12
ruinst
12
ruinst
|
@ -222,7 +222,7 @@ fi
|
||||||
## Répertoires à déployer et hôtes sur lesquels faire le déploiement
|
## Répertoires à déployer et hôtes sur lesquels faire le déploiement
|
||||||
confirm_src=
|
confirm_src=
|
||||||
if [ $# -eq 0 ] || [[ "$1" == -* ]] || [[ "$1" == *=* ]]; then
|
if [ $# -eq 0 ] || [[ "$1" == -* ]] || [[ "$1" == *=* ]]; then
|
||||||
# pas d'argument, ou c'est une option (qui fait donc partie des arguments de toinst)
|
# pas d'argument, ou c'est une option (qui fait donc partie des arguments de uinst)
|
||||||
src=.
|
src=.
|
||||||
confirm_src=1
|
confirm_src=1
|
||||||
else
|
else
|
||||||
|
@ -247,7 +247,7 @@ $(array_to_lines host "" " ")"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -n "$confirm_src" ]; then
|
if [ -n "$confirm_src" ]; then
|
||||||
# pas d'argument, ou c'est une option (qui fait donc partie des arguments de toinst)
|
# pas d'argument, ou c'est une option (qui fait donc partie des arguments de uinst)
|
||||||
read_value "Entrez le répertoire à déployer" src "$src" O
|
read_value "Entrez le répertoire à déployer" src "$src" O
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -273,13 +273,14 @@ if [ -n "$make_archive" ]; then
|
||||||
ac_set_tmpfile archive
|
ac_set_tmpfile archive
|
||||||
archivename="$(basename "$archive")"
|
archivename="$(basename "$archive")"
|
||||||
|
|
||||||
etitle "Création de l'archive pour le déploiement" \
|
etitle "Création de l'archive pour le déploiement"
|
||||||
"$scriptdir/mkusfx" --tmp-archive --self-contained -o "$archive" "$src" || die
|
"$scriptdir/mkusfx" --tmp-archive --self-contained -o "$archive" "$src" || die
|
||||||
|
eend
|
||||||
fi
|
fi
|
||||||
|
|
||||||
## Déploiement
|
## Déploiement
|
||||||
|
|
||||||
# sur l'hôte distant, ne rendre interactif qu'à partir de -yy
|
# sur l'hôte distant, ne rendre non interactif qu'à partir de -yy
|
||||||
rinteraction=$__interaction
|
rinteraction=$__interaction
|
||||||
[ $rinteraction -lt 2 ] && rinteraction=$(($rinteraction + 1))
|
[ $rinteraction -lt 2 ] && rinteraction=$(($rinteraction + 1))
|
||||||
|
|
||||||
|
@ -297,8 +298,10 @@ for host in "${hosts[@]}"; do
|
||||||
[ -n "$user" ] || user=root
|
[ -n "$user" ] || user=root
|
||||||
|
|
||||||
etitle -s "Déploiement sur $user@$host"
|
etitle -s "Déploiement sur $user@$host"
|
||||||
|
|
||||||
estep "Copie de l'archive"
|
estep "Copie de l'archive"
|
||||||
scp -S "$SSH" "$archive" "$user@$host:" || die
|
scp -S "$SSH" "$archive" "$user@$host:" || die
|
||||||
|
|
||||||
estep "Lancement du script de déploiement"
|
estep "Lancement du script de déploiement"
|
||||||
"$SSH" -qt "$user@$host" "\
|
"$SSH" -qt "$user@$host" "\
|
||||||
__interaction=$rinteraction
|
__interaction=$rinteraction
|
||||||
|
@ -307,6 +310,7 @@ __tlevel=$(qval "$__tlevel")
|
||||||
export __interaction __estack __tlevel
|
export __interaction __estack __tlevel
|
||||||
${UTOOLS_LANG:+UTOOLS_LANG='$UTOOLS_LANG'; export UTOOLS_LANG
|
${UTOOLS_LANG:+UTOOLS_LANG='$UTOOLS_LANG'; export UTOOLS_LANG
|
||||||
}$(qvals "./$archivename" ${tmproot:+--tmproot "$tmproot"} -- MYHOST="$host" "$@")"
|
}$(qvals "./$archivename" ${tmproot:+--tmproot "$tmproot"} -- MYHOST="$host" "$@")"
|
||||||
|
|
||||||
eend
|
eend
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
187
rwoinst
187
rwoinst
|
@ -9,6 +9,10 @@ function display_help() {
|
||||||
USAGE
|
USAGE
|
||||||
$scriptname [-H host] [-T tmproot] <file|archive|dir>... [-- options de woinst]
|
$scriptname [-H host] [-T tmproot] <file|archive|dir>... [-- options de woinst]
|
||||||
|
|
||||||
|
note: à cause d'une limitation de makeself, les options de toinst ne devraient
|
||||||
|
pas contenir d'espaces ni de caractères spéciaux. L'échappement de ces
|
||||||
|
caractères n'est pas garanti.
|
||||||
|
|
||||||
OPTIONS
|
OPTIONS
|
||||||
-T, --tmproot TMPROOT
|
-T, --tmproot TMPROOT
|
||||||
Spécifier le répertoire temporaire sur l'hôte distant, comme par exemple
|
Spécifier le répertoire temporaire sur l'hôte distant, comme par exemple
|
||||||
|
@ -18,7 +22,6 @@ OPTIONS
|
||||||
Spécifier le programme à utiliser pour la connection par ssh.
|
Spécifier le programme à utiliser pour la connection par ssh.
|
||||||
-h, --host hosts
|
-h, --host hosts
|
||||||
-h, --host @hostsfile
|
-h, --host @hostsfile
|
||||||
-H host
|
|
||||||
Spécifier un ou plusieurs hôtes sur lequels faire le déploiement. Pour
|
Spécifier un ou plusieurs hôtes sur lequels faire le déploiement. Pour
|
||||||
spécifier plusieurs hôtes, il est possible d'utiliser plusieurs fois
|
spécifier plusieurs hôtes, il est possible d'utiliser plusieurs fois
|
||||||
l'option -h, ou spécifier en une seule fois plusieurs hôtes en les
|
l'option -h, ou spécifier en une seule fois plusieurs hôtes en les
|
||||||
|
@ -31,6 +34,17 @@ OPTIONS
|
||||||
user@host, e.g -h user@host
|
user@host, e.g -h user@host
|
||||||
La forme @hostsfile permet de lire la liste des hôtes depuis le fichier
|
La forme @hostsfile permet de lire la liste des hôtes depuis le fichier
|
||||||
hostsfile, à raison d'un hôte par ligne.
|
hostsfile, à raison d'un hôte par ligne.
|
||||||
|
-w, -W, --whost host[:htdocs]
|
||||||
|
Comme --host, mais pour le déploiement des resources web. Contrairement
|
||||||
|
à --host, un seul hôte peut être spécifié par occurence de l'option,
|
||||||
|
pour permettre de spécifier éventuellement le répertoire vers lequel
|
||||||
|
copier les resources web. Ainsi, les deux commandes suivantes sont
|
||||||
|
équivalentes:
|
||||||
|
rwoinst -h host.tld -- -W HTDOCSDIR=HTDOCSBASE/wo
|
||||||
|
rwoinst -w host.tld:HTDOCSBASE/wo
|
||||||
|
Il est possible de spécifier en une seule invocation --host et --whost
|
||||||
|
pour déployer l'application sur un hôte et les resources web sur un
|
||||||
|
autre.
|
||||||
--deploy
|
--deploy
|
||||||
--no-deploy
|
--no-deploy
|
||||||
Autoriser (respectivement interdire) l'utilisation de la configuration
|
Autoriser (respectivement interdire) l'utilisation de la configuration
|
||||||
|
@ -40,7 +54,10 @@ OPTIONS
|
||||||
déploiement est interrogée pour avoir cette information.
|
déploiement est interrogée pour avoir cette information.
|
||||||
-c, --deploy-config CONFNAME
|
-c, --deploy-config CONFNAME
|
||||||
Cette option permet de spécifier le nom de la configuration à utiliser
|
Cette option permet de spécifier le nom de la configuration à utiliser
|
||||||
pour effectuer la requête. Par défaut, utiliser le nom 'rwoinst'"
|
pour effectuer la requête. Par défaut, utiliser le nom 'rwoinst'
|
||||||
|
-p, --deploy-profile PROFILE
|
||||||
|
Spécifier le profil à utiliser pour l'interrogation de la configuration
|
||||||
|
locale de déploiement. Par défaut, aucun profil n'est sélectionné."
|
||||||
}
|
}
|
||||||
|
|
||||||
__PARSED_HOSTS=()
|
__PARSED_HOSTS=()
|
||||||
|
@ -106,20 +123,65 @@ function fix_hosts() {
|
||||||
array_map hosts __dot_is_localhost
|
array_map hosts __dot_is_localhost
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function deploy_to() {
|
||||||
|
local archive="$1" host="$2" tmproot="$3"
|
||||||
|
shift; shift; shift
|
||||||
|
|
||||||
|
local r=
|
||||||
|
if [ "$host" == "localhost" ]; then
|
||||||
|
etitle "Sur l'hôte local"
|
||||||
|
"$archive" ${tmproot:+--tmproot "$tmproot"} -- "$@" || r=1
|
||||||
|
eend
|
||||||
|
else
|
||||||
|
local user
|
||||||
|
local archivename="$(basename "$archive")"
|
||||||
|
|
||||||
|
splituserhost "$host" user host
|
||||||
|
[ -n "$user" ] || user=root
|
||||||
|
|
||||||
|
# sur l'hôte distant, ne rendre non interactif qu'à partir de -yy
|
||||||
|
rinteraction=$__interaction
|
||||||
|
[ $rinteraction -lt 2 ] && rinteraction=$(($rinteraction + 1))
|
||||||
|
|
||||||
|
etitle "Vers $user@$host"
|
||||||
|
|
||||||
|
estep "Copie de l'archive"
|
||||||
|
scp -S "$SSH" "$archive" "$user@$host:" || r=1
|
||||||
|
|
||||||
|
if [ -z "$r" ]; then
|
||||||
|
estep "Lancement du script de déploiement"
|
||||||
|
"$SSH" -qt "$user@$host" "\
|
||||||
|
__interaction=$rinteraction
|
||||||
|
__estack=$(qval "$__estack")
|
||||||
|
__tlevel=$(qval "$__tlevel")
|
||||||
|
export __interaction __estack __tlevel
|
||||||
|
${UTOOLS_LANG:+UTOOLS_LANG='$UTOOLS_LANG'; export UTOOLS_LANG
|
||||||
|
}$(qvals "./$archivename" ${tmproot:+--tmproot "$tmproot"} -- MYHOST="$host" "$@")" || r=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
eend
|
||||||
|
fi
|
||||||
|
return ${r:-0}
|
||||||
|
}
|
||||||
|
|
||||||
action=deploy
|
action=deploy
|
||||||
tmproot=
|
tmproot=
|
||||||
SSH=
|
SSH=
|
||||||
hosts=()
|
hosts=()
|
||||||
|
whosts=()
|
||||||
deploy_enable=1
|
deploy_enable=1
|
||||||
deploy_confname=rwoinst
|
deploy_confname=rwoinst
|
||||||
|
deploy_profile=
|
||||||
parse_opts "${PRETTYOPTS[@]}" \
|
parse_opts "${PRETTYOPTS[@]}" \
|
||||||
--help '$exit_with display_help' \
|
--help '$exit_with display_help' \
|
||||||
-T:,--tmproot: tmproot= \
|
-T:,--tmproot: tmproot= \
|
||||||
-S:,--ssh: SSH= \
|
-S:,--ssh: SSH= \
|
||||||
-h:,-H:,--host: hosts \
|
-h:,-H:,--host: hosts \
|
||||||
|
-w:,-W:,--whost: whosts \
|
||||||
--deploy deploy_enable=1 \
|
--deploy deploy_enable=1 \
|
||||||
--no-deploy deploy_enable= \
|
--no-deploy deploy_enable= \
|
||||||
-c:,--deploy-config deploy_confname= \
|
-c:,--deploy-config deploy_confname= \
|
||||||
|
-p:,--deploy-profile: deploy_profile= \
|
||||||
@ args -- "$@" && set -- "${args[@]}" || die "$args"
|
@ args -- "$@" && set -- "${args[@]}" || die "$args"
|
||||||
|
|
||||||
: "${SSH:=ssh}"
|
: "${SSH:=ssh}"
|
||||||
|
@ -127,7 +189,7 @@ parse_opts "${PRETTYOPTS[@]}" \
|
||||||
## Bundle à déployer et hôtes sur lesquels faire le déploiement
|
## Bundle à déployer et hôtes sur lesquels faire le déploiement
|
||||||
confirm_bundle=
|
confirm_bundle=
|
||||||
if [ $# -eq 0 ] || [[ "$1" == -* ]] || [[ "$1" == *=* ]]; then
|
if [ $# -eq 0 ] || [[ "$1" == -* ]] || [[ "$1" == *=* ]]; then
|
||||||
# pas d'argument, ou c'est une option (qui fait donc partie des arguments de toinst)
|
# pas d'argument, ou c'est une option (qui fait donc partie des arguments de woinst)
|
||||||
case "$(basename -- "$(pwd)")" in
|
case "$(basename -- "$(pwd)")" in
|
||||||
*.woa|*.framework) bundle=.;;
|
*.woa|*.framework) bundle=.;;
|
||||||
*) bundle=;;
|
*) bundle=;;
|
||||||
|
@ -137,16 +199,51 @@ else
|
||||||
bundle="$1"
|
bundle="$1"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
woinst_options=()
|
||||||
if array_isempty hosts && [ -n "$deploy_enable" -a -n "$bundle" ]; then
|
if array_isempty hosts && [ -n "$deploy_enable" -a -n "$bundle" ]; then
|
||||||
urequire deploy
|
urequire deploy
|
||||||
deploy_setconf "$deploy_confname"
|
deploy_setconf "$deploy_confname"
|
||||||
if deploy_loadconf; then
|
if deploy_loadconf; then
|
||||||
setxx bundlename=abspath "$bundle" // basename --
|
setxx bundlename=abspath "$bundle" // basename --
|
||||||
if eval "$(deploy_query -v host DEST wobundle rwoinst_bundle "" shell "$bundlename")"; then
|
host=(); bounce=; notag=; exec=; dbconfig=; dbconfigmap=
|
||||||
check_interaction -c && einfo "$bundlename: ce bundle sera déployé vers les hôtes suivants:
|
if eval "$(deploy_query -v host,bounce,notag,exec,dbconfig,dbconfigmap DEST wobundle rwoinst_bundle "$deploy_profile" shell "$bundlename")"; then
|
||||||
$(array_to_lines host "" " ")"
|
array_copy deploy_hosts host
|
||||||
|
deploy_options=()
|
||||||
|
[ -n "$bounce" ] && array_add deploy_options -b
|
||||||
|
[ -n "$notag" ] && array_add deploy_options -n
|
||||||
|
if [ -n "$exec" ]; then
|
||||||
|
for x in "${exec[@]}"; do
|
||||||
|
array_add deploy_options -x "$x"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
[ -n "$dbconfig" ] && array_add deploy_options -d "$dbconfig"
|
||||||
|
if [ -n "$dbconfigmap" ]; then
|
||||||
|
for m in "${dbconfigmap[@]}"; do
|
||||||
|
array_add deploy_options -m "$m"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
deploy_whosts=()
|
||||||
|
host=(); destdir=
|
||||||
|
if eval "$(deploy_query -v host,destdir DEST wobundle rwoinst_webres "$deploy_profile" shell "$bundlename")"; then
|
||||||
|
for wh in "${host[@]}"; do
|
||||||
|
array_add deploy_whosts "$wh:$destdir"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
msg="$bundlename: ce bundle sera déployé vers les hôtes suivants:
|
||||||
|
$(array_to_lines deploy_hosts "" " ")"
|
||||||
|
if [ ${#deploy_whosts[*]} -gt 0 -o ${#deploy_options[*]} -gt 0 ]; then
|
||||||
|
msg="$msg
|
||||||
|
avec le(s) paramètre(s) suivant(s):"
|
||||||
|
[ ${#deploy_whosts[*]} -gt 0 ] && msg="$msg
|
||||||
|
$(array_to_lines deploy_whosts "" " --whost ")"
|
||||||
|
[ ${#deploy_options[*]} -gt 0 ] && msg="$msg
|
||||||
|
$(qvals "${deploy_options[@]}")"
|
||||||
|
fi
|
||||||
|
check_interaction -c && einfo "$msg"
|
||||||
ask_any "Voulez-vous continuer?" Oq || die
|
ask_any "Voulez-vous continuer?" Oq || die
|
||||||
array_copy hosts host
|
array_extend hosts deploy_hosts
|
||||||
|
array_extend woinst_options deploy_options
|
||||||
|
array_extend whosts deploy_whosts
|
||||||
if [ -n "$confirm_bundle" ]; then
|
if [ -n "$confirm_bundle" ]; then
|
||||||
confirm_bundle=
|
confirm_bundle=
|
||||||
set -- "$bundle" "$@"
|
set -- "$bundle" "$@"
|
||||||
|
@ -156,7 +253,7 @@ $(array_to_lines host "" " ")"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -n "$confirm_bundle" ]; then
|
if [ -n "$confirm_bundle" ]; then
|
||||||
# pas d'argument, ou c'est une option (qui fait donc partie des arguments de toinst)
|
# pas d'argument, ou c'est une option (qui fait donc partie des arguments de woinst)
|
||||||
read_value "Veuillez entrer la bundle à déployer" bundle "$bundle" O
|
read_value "Veuillez entrer la bundle à déployer" bundle "$bundle" O
|
||||||
set -- "$bundle" "$@"
|
set -- "$bundle" "$@"
|
||||||
fi
|
fi
|
||||||
|
@ -165,8 +262,10 @@ array_isempty hosts && read_value "Entrez une liste d'hôtes séparés par ':'"
|
||||||
fix_hosts
|
fix_hosts
|
||||||
|
|
||||||
## Création de l'archive
|
## Création de l'archive
|
||||||
|
|
||||||
etitle "Création du répertoire de travail"
|
etitle "Création du répertoire de travail"
|
||||||
ac_set_tmpdir workdir
|
ac_set_tmpdir workdir
|
||||||
|
|
||||||
bundles=()
|
bundles=()
|
||||||
while [ -n "$1" ]; do
|
while [ -n "$1" ]; do
|
||||||
if [ "$1" == "--" ]; then
|
if [ "$1" == "--" ]; then
|
||||||
|
@ -184,6 +283,19 @@ while [ -n "$1" ]; do
|
||||||
cp_R "$src" "$workdir" || die
|
cp_R "$src" "$workdir" || die
|
||||||
elif [ -d "$src" ]; then
|
elif [ -d "$src" ]; then
|
||||||
src="$(abspath "$src")"
|
src="$(abspath "$src")"
|
||||||
|
setx srcname=basename -- "$src"
|
||||||
|
case "$src" in
|
||||||
|
*.woa|*.framework) ;;
|
||||||
|
*) # support projet maven
|
||||||
|
if [ ! -f "$src/pom.xml" ]; then
|
||||||
|
: # non, pas un projet maven
|
||||||
|
elif [ -d "$src/target/$srcname.woa" ]; then
|
||||||
|
src="$src/target/$srcname.woa"
|
||||||
|
elif [ -d "$src/target/$srcname.framework" ]; then
|
||||||
|
src="$src/target/$srcname.framework"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
if endswith "$src" .framework; then
|
if endswith "$src" .framework; then
|
||||||
is_wofwkdir "$src" || die "Framework invalide: $(ppath "$src")"
|
is_wofwkdir "$src" || die "Framework invalide: $(ppath "$src")"
|
||||||
elif endswith "$src" .woa; then
|
elif endswith "$src" .woa; then
|
||||||
|
@ -202,55 +314,34 @@ while [ -n "$1" ]; do
|
||||||
done
|
done
|
||||||
|
|
||||||
estep "Copie de l'environnement de déploiement"
|
estep "Copie de l'environnement de déploiement"
|
||||||
ulibsync "$workdir"
|
mkdir "$workdir/lib"
|
||||||
echo '#!/bin/sh
|
ulibsync "$workdir/lib"
|
||||||
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
cp "$scriptdir/woinst.sh" "$workdir"
|
||||||
if . `dirname "$0"`/ulib/ulibsh; then
|
chmod +x "$workdir/woinst.sh"
|
||||||
urequire DEFAULTS woinst
|
|
||||||
else
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
OENC="$UTF8"
|
|
||||||
woinst "$@"' >"$workdir/woinst"
|
|
||||||
chmod +x "$workdir/woinst"
|
|
||||||
|
|
||||||
eend
|
eend
|
||||||
|
|
||||||
|
etitle "Création de l'archive pour le déploiement"
|
||||||
ac_set_tmpfile archive
|
ac_set_tmpfile archive
|
||||||
archivename="$(basename "$archive")"
|
|
||||||
|
|
||||||
etitle "Création de l'archive pour le déploiement" \
|
"$scriptdir/mkusfx" --bare --tmp-archive -o "$archive" "$workdir" -- ./woinst.sh --is-tmpdir "${bundles[@]}" || die
|
||||||
"$scriptdir/mkusfx" --bare --tmp-archive -o "$archive" "$workdir" -- ./woinst --is-tmpdir "${bundles[@]}" || die
|
|
||||||
|
eend
|
||||||
|
|
||||||
## Déploiement
|
## Déploiement
|
||||||
|
|
||||||
# sur l'hôte distant, ne rendre interactif qu'à partir de -yy
|
etitle "Déploiement des bundles"
|
||||||
rinteraction=$__interaction
|
|
||||||
[ $rinteraction -lt 2 ] && rinteraction=$(($rinteraction + 1))
|
|
||||||
|
|
||||||
for host in "${hosts[@]}"; do
|
for host in "${hosts[@]}"; do
|
||||||
if [ "$host" == "localhost" ]; then
|
deploy_to "$archive" "$host" "$tmproot" "$@" "${woinst_options[@]}" || die
|
||||||
etitle "Déploiement sur l'hôte local" \
|
done
|
||||||
"$archive" ${tmproot:+--tmproot "$tmproot"} -- "$@"
|
eend
|
||||||
else
|
|
||||||
if [[ "$host" == *@* ]]; then
|
|
||||||
user="${host%%@*}"
|
|
||||||
host="${host#*@}"
|
|
||||||
else
|
|
||||||
user=root
|
|
||||||
fi
|
|
||||||
|
|
||||||
etitle "Déploiement sur $user@$host"
|
if [ ${#whosts[*]} -gt 0 ]; then
|
||||||
estep "Copie de l'archive"
|
etitle "Déploiement des resources web"
|
||||||
scp -S "$SSH" "$archive" "$user@$host:" || die
|
for hostdestdir in "${whosts[@]}"; do
|
||||||
estep "Lancement du script de déploiement"
|
splitpair "$hostdestdir" host destdir
|
||||||
"$SSH" -qt "$user@$host" "\
|
deploy_to "$archive" "$host" "$tmproot" \
|
||||||
__interaction=$rinteraction
|
-y -W ${destdir:+HTDOCSDIR="$destdir"} "$@" "${woinst_options[@]}" || die
|
||||||
__estack=$(qval "$__estack")
|
done
|
||||||
__tlevel=$(qval "$__tlevel")
|
|
||||||
export __interaction __estack __tlevel
|
|
||||||
${UTOOLS_LANG:+UTOOLS_LANG='$UTOOLS_LANG'; export UTOOLS_LANG
|
|
||||||
}$(qvals "./$archivename" ${tmproot:+--tmproot "$tmproot"} -- MYHOST="$host" "$@")"
|
|
||||||
eend
|
eend
|
||||||
fi
|
fi
|
||||||
done
|
|
||||||
|
|
2
uinst
2
uinst
|
@ -1,6 +1,6 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
source "$(dirname "$0")/lib/ulib/ulib" || exit 1
|
source "$(dirname -- "$0")/lib/ulib/ulib" || exit 1
|
||||||
urequire DEFAULTS uinst
|
urequire DEFAULTS uinst
|
||||||
|
|
||||||
uinst_nolocal "$@"
|
uinst_nolocal "$@"
|
||||||
|
|
2
uinst.sh
2
uinst.sh
|
@ -2,7 +2,7 @@
|
||||||
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
# Version de uinst qui fonctionne avec /bin/sh. Le contrôle est transmis à
|
# Version de uinst qui fonctionne avec /bin/sh. Le contrôle est transmis à
|
||||||
# bash, qui est recherché dans une liste de répertoires standards
|
# bash, qui est recherché dans une liste de répertoires standards
|
||||||
. `dirname "$0"`/lib/ulib/ulibsh || exit 1
|
. `dirname -- "$0"`/lib/ulib/ulibsh || exit 1
|
||||||
urequire DEFAULTS uinst
|
urequire DEFAULTS uinst
|
||||||
|
|
||||||
uinst_nolocal "$@"
|
uinst_nolocal "$@"
|
||||||
|
|
2
woinst
2
woinst
|
@ -1,6 +1,6 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
source "$(dirname "$0")/lib/ulib/ulib" || exit 1
|
source "$(dirname -- "$0")/lib/ulib/ulib" || exit 1
|
||||||
urequire DEFAULTS woinst
|
urequire DEFAULTS woinst
|
||||||
|
|
||||||
woinst "$@"
|
woinst "$@"
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
#!/bin/sh
|
||||||
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
|
# Version de woinst qui fonctionne avec /bin/sh. Le contrôle est transmis à
|
||||||
|
# bash, qui est recherché dans une liste de répertoires standards
|
||||||
|
. `dirname -- "$0"`/lib/ulib/ulibsh || exit 1
|
||||||
|
urequire DEFAULTS woinst
|
||||||
|
|
||||||
|
woinst "$@"
|
Loading…
Reference in New Issue