mirror of
https://github.com/YunoHost-Apps/jenkins_ynh.git
synced 2024-09-03 19:26:18 +02:00
Merge pull request #5 from maniackcrudelis/master
Timeout, Fix db_user, set -eu
This commit is contained in:
commit
64e3a7b5ea
3 changed files with 24 additions and 17 deletions
|
@ -7,11 +7,18 @@ CHECK_VAR () { # Vérifie que la variable n'est pas vide.
|
|||
}
|
||||
|
||||
EXIT_PROPERLY () { # Provoque l'arrêt du script en cas d'erreur. Et nettoye les résidus.
|
||||
trap '' ERR
|
||||
exit_code=$?
|
||||
if [ "$exit_code" -eq 0 ]; then
|
||||
exit 0 # Quitte sans erreur si le script se termine correctement.
|
||||
fi
|
||||
trap '' EXIT
|
||||
set +eu
|
||||
echo -e "\e[91m \e[1m" # Shell in light red bold
|
||||
echo -e "!!\n $app install's script has encountered an error. Installation was cancelled.\n!!" >&2
|
||||
|
||||
CLEAN_SETUP # Appel la fonction de nettoyage spécifique du script install.
|
||||
if type -t CLEAN_SETUP > /dev/null; then # Vérifie l'existance de la fonction avant de l'exécuter.
|
||||
CLEAN_SETUP # Appel la fonction de nettoyage spécifique du script install.
|
||||
fi
|
||||
|
||||
# Compense le bug de ssowat qui ne supprime pas l'entrée de l'app en cas d'erreur d'installation.
|
||||
sudo sed -i "\@\"$domain$path/\":@d" /etc/ssowat/conf.json
|
||||
|
@ -20,14 +27,8 @@ EXIT_PROPERLY () { # Provoque l'arrêt du script en cas d'erreur. Et nettoye les
|
|||
}
|
||||
|
||||
TRAP_ON () { # Activate signal capture
|
||||
trap EXIT_PROPERLY ERR # Capturing exit signals on error
|
||||
}
|
||||
|
||||
TRAP_OFF () { # Ignoring signal capture until TRAP_ON
|
||||
# Pour une raison que j'ignore, la fonction TRAP_ON fonctionne très bien.
|
||||
# Mais pas la fonction TRAP_OFF...
|
||||
# Utiliser directement `trap '' ERR` dans le code pour l'utiliser, à la place de la fonction.
|
||||
trap '' ERR # Ignoring exit signals
|
||||
set -eu # Exit if a command fail, and if a variable is used unset.
|
||||
trap EXIT_PROPERLY EXIT # Capturing exit signals on shell script
|
||||
}
|
||||
|
||||
CHECK_USER () { # Vérifie la validité de l'user admin
|
||||
|
@ -60,13 +61,14 @@ CHECK_FINALPATH () { # Vérifie que le dossier de destination n'est pas déjà u
|
|||
GENERATE_DB () { # Créer une base de données et un utilisateur dédié au nom de l'app.
|
||||
# $1 = Nom de la base de donnée
|
||||
db_user=$1
|
||||
db_user=${db_user//-/_} # mariadb ne supporte pas les - dans les noms de base de données. Ils sont donc remplacé par des _
|
||||
# Génère un mot de passe aléatoire.
|
||||
# db_pwd=$(head -n20 /dev/urandom | tr -c -d 'A-Za-z0-9' | head -c20)
|
||||
db_pwd=$(ynh_string_random)
|
||||
CHECK_VAR "$db_pwd" "db_pwd empty"
|
||||
# Utilise '$app' comme nom d'utilisateur et de base de donnée
|
||||
# Initialise la base de donnée et stocke le mot de passe mysql.
|
||||
ynh_mysql_create_db $db_user $db_user $db_pwd
|
||||
ynh_mysql_create_db "$db_user" "$db_user" $db_pwd
|
||||
ynh_app_setting_set $app mysqlpwd $db_pwd
|
||||
}
|
||||
|
||||
|
@ -92,7 +94,7 @@ SETUP_SOURCE () { # Télécharge la source, décompresse et copie dans $final_pa
|
|||
}
|
||||
|
||||
ADD_SYS_USER () { # Créer un utilisateur système dédié à l'app
|
||||
if ynh_system_user_exists "$app" # Test l'existence de l'utilisateur
|
||||
if ! ynh_system_user_exists "$app" # Test l'existence de l'utilisateur
|
||||
then
|
||||
sudo useradd -d /var/www/$app --system --user-group $app --shell /usr/sbin/nologin || (echo "Unable to create $app system account" >&2 && false)
|
||||
fi
|
||||
|
@ -165,7 +167,7 @@ REMOVE_LOGROTATE_CONF () { # Suppression de la configuration de logrotate
|
|||
}
|
||||
|
||||
SECURE_REMOVE () { # Suppression de dossier avec vérification des variables
|
||||
chaine="$1"
|
||||
chaine="$1" # L'argument doit être donné entre quotes simple '', pour éviter d'interpréter les variables.
|
||||
no_var=0
|
||||
while (echo "$chaine" | grep -q '\$') # Boucle tant qu'il y a des $ dans la chaine
|
||||
do
|
||||
|
|
|
@ -96,8 +96,8 @@ sudo yunohost service add $app -l /var/log/$app/$app.log
|
|||
# Surveille le démarrage du service.
|
||||
config_OK=0
|
||||
echo "127.0.0.1 $domain #jenkins" | sudo tee -a /etc/hosts # Renseigne le domain dans le host, pour prévenir d'un dns pas encore propagé.
|
||||
for i in `seq 1 60`
|
||||
do # La boucle attend le démarrage de jenkins Ou 60 secondes.
|
||||
for i in `seq 1 120`
|
||||
do # La boucle attend le démarrage de jenkins Ou 2 minutes.
|
||||
if grep -q "INFOS: Jenkins is fully up and running" "$tempfile" && [ "$config_OK" -eq 0 ]; then
|
||||
# Si le log annonce une première fois le démarrage de jenkins. Fait sauter la sécurité de la première connexion de l'admin. Qui bloque curl et demande une identification inexistante une fois sur deux...
|
||||
sudo wget -nv --no-check-certificate https://$domain$path/jnlpJars/jenkins-cli.jar -O /var/lib/jenkins/jenkins-cli.jar
|
||||
|
@ -149,6 +149,7 @@ do # La boucle attend le démarrage de jenkins Ou 60 secondes.
|
|||
i=1;
|
||||
fi
|
||||
if grep -q "INFOS: Jenkins is fully up and running" "$tempfile" && [ "$config_OK" -eq 1 ]; then
|
||||
echo "Le service $app a démarré correctement." >&2
|
||||
break # Si le log annonce une deuxième fois le démarrage de jenkins, sort de la boucle.
|
||||
fi
|
||||
echo -n "." >&2
|
||||
|
@ -156,6 +157,9 @@ do # La boucle attend le démarrage de jenkins Ou 60 secondes.
|
|||
done
|
||||
kill -s 15 $PID_TAIL > /dev/null # Arrête l'exécution de tail.
|
||||
sudo rm "$tempfile"
|
||||
if [ "$i" -ge 120 ]; then
|
||||
echo "Le service $app n'a pas démarré dans le temps imparti." >&2; false
|
||||
fi
|
||||
|
||||
# Si Jenkins est privé, retire l'autorisation publique.
|
||||
if [ "$is_public" = "No" ];
|
||||
|
|
|
@ -53,9 +53,10 @@ sudo yunohost service add $app --log "/var/log/$app/$app.log"
|
|||
sudo service nginx reload
|
||||
|
||||
# Surveille le démarrage du service.
|
||||
for i in `seq 1 60`
|
||||
do # La boucle attend le démarrage de jenkins Ou 60 secondes.
|
||||
for i in `seq 1 120`
|
||||
do # La boucle attend le démarrage de jenkins Ou 120 secondes.
|
||||
if grep -q "INFOS: Jenkins is fully up and running" "$tempfile"; then
|
||||
echo "Le service $app a démarré correctement." >&2
|
||||
break # Si le log annonce le démarrage de jenkins, sort de la boucle.
|
||||
fi
|
||||
echo -n "." >&2
|
||||
|
|
Loading…
Reference in a new issue