ajout de update-apps en natif
This commit is contained in:
parent
6462bec2c6
commit
6a03853aa7
187
dk
187
dk
|
@ -45,14 +45,36 @@ COMMANDES
|
||||||
prune
|
prune
|
||||||
Supprimer les containers et les images inutilisées
|
Supprimer les containers et les images inutilisées
|
||||||
|
|
||||||
OPTIONS
|
OPTIONS générales
|
||||||
|
(ces options sont communes à toutes les commandes)
|
||||||
-d, --chdir PROJDIR
|
-d, --chdir PROJDIR
|
||||||
-p, --profile PROFILE
|
-p, --profile PROFILE
|
||||||
-P, --prod
|
-P, --prod
|
||||||
-T, --test
|
-T, --test
|
||||||
-n, --fake
|
-n, --fake
|
||||||
-j, --no-cache
|
-j, --no-cache
|
||||||
-h, --host HOST"
|
-h, --host HOST
|
||||||
|
|
||||||
|
OPTIONS build
|
||||||
|
(ces options ne sont valides que pour les commandes build, brd, bs)
|
||||||
|
-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_BRANCH=
|
||||||
|
APPS=()
|
||||||
|
app_URL=
|
||||||
|
app_DEST=
|
||||||
|
app_ORIGIN=
|
||||||
|
app_BRANCH=
|
||||||
|
app_TYPE=
|
||||||
|
app_AFTER_UPDATE=()
|
||||||
|
-u, --uu, --update-apps-only
|
||||||
|
Ne faire que la mise à jour depuis les dépôts dépendants.
|
||||||
|
--uo, --update-apps-origin ORIGIN
|
||||||
|
Spécifier l'origine par défaut pour update-apps
|
||||||
|
--ub, --update-apps-branch BRANCH
|
||||||
|
Spécifier la branche par défaut pour update-apps"
|
||||||
}
|
}
|
||||||
|
|
||||||
function get_version() {
|
function get_version() {
|
||||||
|
@ -187,6 +209,145 @@ function local_run() {
|
||||||
runscript_as_root "$script" "$@"
|
runscript_as_root "$script" "$@"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BUILD_UPDATE_APPS=
|
||||||
|
BUILD_BUILD=
|
||||||
|
UPDATE_APPS_ORIGIN=
|
||||||
|
UPDATE_APPS_BRANCH=
|
||||||
|
function build_set_options() {
|
||||||
|
case "$1" in
|
||||||
|
u) BUILD_UPDATE_APPS=1; BUILD_BUILD=;;
|
||||||
|
b) BUILD_UPDATE_APPS=; BUILD_BUILD=1;;
|
||||||
|
*) BUILD_UPDATE_APPS=1; BUILD_BUILD=1;;
|
||||||
|
esac
|
||||||
|
UPDATE_APPS_ORIGIN="$2"
|
||||||
|
UPDATE_APPS_BRANCH="$3"
|
||||||
|
}
|
||||||
|
|
||||||
|
function update_apps_func_sqlmig() {
|
||||||
|
local destdir="$1" srcdir="$2"
|
||||||
|
[ -n "$destdir" ] || destdir=db
|
||||||
|
[ "${destdir%/config/mariadb/sqlmig}" != "$destdir" ] || destdir="$destdir/config/mariadb/sqlmig"
|
||||||
|
|
||||||
|
[ -n "$srcdir" ] || srcdir="$dest"
|
||||||
|
[ "${srcdir%/config/sqlmig}" != "$srcdir" ] || srcdir="$srcdir/config/sqlmig"
|
||||||
|
|
||||||
|
[ -d "$srcdir" ] || return 0
|
||||||
|
|
||||||
|
local -a sqlmigs; local sqlmig name
|
||||||
|
array_lsall sqlmigs "$srcdir"
|
||||||
|
mkdir -p "$destdir" || return 1
|
||||||
|
for sqlmig in "${sqlmigs[@]}"; do
|
||||||
|
if [ -d "$sqlmig" ]; then
|
||||||
|
setx name=basename -- "$sqlmig"
|
||||||
|
rsync -av --delete-after "$sqlmig/" "$destdir/$name"
|
||||||
|
else
|
||||||
|
rsync -av "$sqlmig" "$destdir"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
function build_update_apps() {
|
||||||
|
[ -n "$BUILD_UPDATE_APPS" ] || return 0
|
||||||
|
[ -f update-apps.conf ] || return 0
|
||||||
|
|
||||||
|
# charger le fichier de configuration
|
||||||
|
local DEFAULT_ORIGIN DEFAULT_BRANCH APPS
|
||||||
|
DEFAULT_ORIGIN="$UPDATE_APPS_ORIGIN"
|
||||||
|
[ -z "$DEFAULT_ORIGIN" ] && DEFAULT_ORIGIN=origin
|
||||||
|
DEFAULT_BRANCH="$UPDATE_APPS_BRANCH"
|
||||||
|
#XXX à terme, on déploiera la branche master en prod
|
||||||
|
[ -z "$DEFAULT_BRANCH" -a "$PROFILE" == prod ] && DEFAULT_BRANCH=develop #master
|
||||||
|
[ -z "$DEFAULT_BRANCH" ] && DEFAULT_BRANCH=develop
|
||||||
|
APPS=()
|
||||||
|
[ -f update-apps.conf ] && source ./update-apps.conf
|
||||||
|
[ ${#APPS[*]} -gt 0 ] || return 0
|
||||||
|
|
||||||
|
local PRODUCTION DEVELOPMENT
|
||||||
|
case "$PROFILE" in
|
||||||
|
prod) PRODUCTION=1; DEVELOPMENT=;;
|
||||||
|
test) PRODUCTION=1; DEVELOPMENT=1;;
|
||||||
|
devel) PRODUCTION=; DEVELOPMENT=;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
etitle "Mise à jour des dépendances"
|
||||||
|
local app type url dest branch after_update after_updates
|
||||||
|
for app in "${APPS[@]}"; do
|
||||||
|
etitle "$app"
|
||||||
|
url="${app}_URL"; url="${!url}"
|
||||||
|
dest="${app}_DEST"; dest="${!dest}"
|
||||||
|
origin="${app}_ORIGIN"; origin="${!origin}"
|
||||||
|
branch="${app}_BRANCH"; branch="${!branch}"
|
||||||
|
type="${app}_TYPE"; type="${!type}"
|
||||||
|
after_updates="${app}_AFTER_UPDATE"
|
||||||
|
if is_defined "$after_updates"; then
|
||||||
|
after_updates="$after_updates[@]"; after_updates="${!after_updates}"
|
||||||
|
else
|
||||||
|
# script par défaut après update-apps
|
||||||
|
after_updates=(sqlmig)
|
||||||
|
fi
|
||||||
|
|
||||||
|
[ -n "$url" ] || {
|
||||||
|
ewarn "$app: vous devez définir l'url"
|
||||||
|
eend; return 1
|
||||||
|
}
|
||||||
|
[ -n "$dest" ] || dest="$app"
|
||||||
|
mkdir -p "$dest" || { eend; return 1; }
|
||||||
|
[ -n "$origin" ] || origin="$DEFAULT_ORIGIN"
|
||||||
|
[ -n "$branch" ] || branch="$DEFAULT_BRANCH"
|
||||||
|
|
||||||
|
dest="$dest/$app"
|
||||||
|
if [ ! -d "$dest" ]; then
|
||||||
|
# clonage initial
|
||||||
|
estep "Clonage $url:$branch --> $dest"
|
||||||
|
git clone -o "$origin" -b "$branch" "$url" "$dest" || { eend; return 1; }
|
||||||
|
else
|
||||||
|
# mise à jour
|
||||||
|
estep "Maj dépôt $url:$branch --> $dest"
|
||||||
|
setx cwd=pwd
|
||||||
|
cd "$dest"
|
||||||
|
git fetch --all -p -f || { eend; return 1; }
|
||||||
|
git reset --hard "$origin/$branch" || { eend; return 1; }
|
||||||
|
cd "$cwd"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$type" ]; then
|
||||||
|
if [ -f "$dest/composer.json" ]; then
|
||||||
|
type=composer
|
||||||
|
else
|
||||||
|
type=inconnu
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
estep "Type de dépôt: $type"
|
||||||
|
if [ "$type" == composer ]; then
|
||||||
|
composer=/usr/bin/composer
|
||||||
|
[ -x "$dest/composer.phar" ] && composer="$dest/composer.phar"
|
||||||
|
|
||||||
|
estep "Installation des dépendances composer"
|
||||||
|
"$composer" -d"$dest" install ${PRODUCTION:+--no-dev -o} || { eend; return 1; }
|
||||||
|
fi
|
||||||
|
|
||||||
|
for after_update in "${after_updates[@]}"; do
|
||||||
|
if [ "${after_update#/}" != "$after_update" ]; then
|
||||||
|
# commande absolue, la lancer telle quelle
|
||||||
|
estep "$after_update"
|
||||||
|
eval "$after_update" || { eend; return 1; }
|
||||||
|
elif [ "${after_update#./}" != "$after_update" ]; then
|
||||||
|
# commande relative, la lancer telle quelle
|
||||||
|
estep "$after_update"
|
||||||
|
eval "$after_update" || { eend; return 1; }
|
||||||
|
else
|
||||||
|
# c'est une fonction update_apps_func_*
|
||||||
|
estep "$after_update"
|
||||||
|
eval "update_apps_func_$after_update" || { eend; return 1; }
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
eend
|
||||||
|
done
|
||||||
|
eend
|
||||||
|
}
|
||||||
|
|
||||||
function initialize_build_env() {
|
function initialize_build_env() {
|
||||||
CTXDIR=.
|
CTXDIR=.
|
||||||
NAME=
|
NAME=
|
||||||
|
@ -218,8 +379,14 @@ function default_docker_build() {
|
||||||
"${replace_build_args[@]}" "${build_args[@]}" \
|
"${replace_build_args[@]}" "${build_args[@]}" \
|
||||||
"$@" "$CTXDIR"
|
"$@" "$CTXDIR"
|
||||||
}
|
}
|
||||||
function compose_build() { default_compose_build "$@"; }
|
function compose_build() {
|
||||||
function docker_build() { default_docker_build "$@"; }
|
[ -n "$BUILD_BUILD" ] || return 0
|
||||||
|
default_compose_build "$@"
|
||||||
|
}
|
||||||
|
function docker_build() {
|
||||||
|
[ -n "$BUILD_BUILD" ] || return 0
|
||||||
|
default_docker_build "$@"
|
||||||
|
}
|
||||||
function auto_build() {
|
function auto_build() {
|
||||||
local -a replace_env_args env_args
|
local -a replace_env_args env_args
|
||||||
local -a replace_build_args build_args
|
local -a replace_build_args build_args
|
||||||
|
@ -227,12 +394,14 @@ function auto_build() {
|
||||||
if [ -f docker-compose.yml ]; then
|
if [ -f docker-compose.yml ]; then
|
||||||
compose_set_env_args
|
compose_set_env_args
|
||||||
update_build_env
|
update_build_env
|
||||||
|
build_update_apps || return 1
|
||||||
compose_build
|
compose_build
|
||||||
else
|
else
|
||||||
docker_parse_env_args
|
docker_parse_env_args
|
||||||
docker_check_name
|
docker_check_name
|
||||||
docker_add_build_arg build_date "$(date +%y%m%d)"
|
docker_add_build_arg build_date "$(date +%y%m%d)"
|
||||||
update_build_env
|
update_build_env
|
||||||
|
build_update_apps || return 1
|
||||||
docker_build
|
docker_build
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
@ -517,6 +686,9 @@ chdir=
|
||||||
FAKE=
|
FAKE=
|
||||||
NO_CACHE=
|
NO_CACHE=
|
||||||
HOST=
|
HOST=
|
||||||
|
update_apps_mode=ub
|
||||||
|
update_apps_origin=
|
||||||
|
update_apps_branch=
|
||||||
args=(
|
args=(
|
||||||
--help '$exit_with display_help'
|
--help '$exit_with display_help'
|
||||||
-d:,--chdir: chdir=
|
-d:,--chdir: chdir=
|
||||||
|
@ -526,6 +698,10 @@ args=(
|
||||||
-n,--fake FAKE=1
|
-n,--fake FAKE=1
|
||||||
-j,--no-cache NO_CACHE=1
|
-j,--no-cache NO_CACHE=1
|
||||||
-h:,--host: HOST=
|
-h:,--host: HOST=
|
||||||
|
-g,--ug,--no-update-apps update_apps_mode=b
|
||||||
|
-u,--uu,--update-apps-only update_apps_mode=u
|
||||||
|
--uo:,--update-apps-origin: update_apps_origin=
|
||||||
|
--ub:,--update-apps-branch: update_apps_branch=
|
||||||
)
|
)
|
||||||
parse_args "$@"; set -- "${args[@]}"
|
parse_args "$@"; set -- "${args[@]}"
|
||||||
|
|
||||||
|
@ -540,6 +716,7 @@ while [ $# -gt 0 ]; do
|
||||||
cmd="$1"; shift
|
cmd="$1"; shift
|
||||||
case "$cmd" in
|
case "$cmd" in
|
||||||
b|build)
|
b|build)
|
||||||
|
build_set_options "$update_apps_mode" "$update_apps_origin" "$update_apps_branch"
|
||||||
[ -f .build.scripts.sh ] && source ./.build.scripts.sh
|
[ -f .build.scripts.sh ] && source ./.build.scripts.sh
|
||||||
[ -f build.scripts.sh ] && source ./build.scripts.sh
|
[ -f build.scripts.sh ] && source ./build.scripts.sh
|
||||||
args=()
|
args=()
|
||||||
|
@ -606,6 +783,7 @@ while [ $# -gt 0 ]; do
|
||||||
}
|
}
|
||||||
trap auto_down_trap 1 3 15 EXIT
|
trap auto_down_trap 1 3 15 EXIT
|
||||||
|
|
||||||
|
build_set_options "$update_apps_mode" "$update_apps_origin" "$update_apps_branch"
|
||||||
[ -f .build.scripts.sh ] && source ./.build.scripts.sh
|
[ -f .build.scripts.sh ] && source ./.build.scripts.sh
|
||||||
[ -f build.scripts.sh ] && source ./build.scripts.sh
|
[ -f build.scripts.sh ] && source ./build.scripts.sh
|
||||||
args=()
|
args=()
|
||||||
|
@ -620,6 +798,7 @@ while [ $# -gt 0 ]; do
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
bs)
|
bs)
|
||||||
|
build_set_options "$update_apps_mode" "$update_apps_origin" "$update_apps_branch"
|
||||||
[ -f .build.scripts.sh ] && source ./.build.scripts.sh
|
[ -f .build.scripts.sh ] && source ./.build.scripts.sh
|
||||||
[ -f build.scripts.sh ] && source ./build.scripts.sh
|
[ -f build.scripts.sh ] && source ./build.scripts.sh
|
||||||
args=()
|
args=()
|
||||||
|
|
Loading…
Reference in New Issue