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.
|
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 "\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
|
echo -e "!!\n $app install's script has encountered an error. Installation was cancelled.\n!!" >&2
|
||||||
|
|
||||||
|
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.
|
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.
|
# 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
|
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_ON () { # Activate signal capture
|
||||||
trap EXIT_PROPERLY ERR # Capturing exit signals on error
|
set -eu # Exit if a command fail, and if a variable is used unset.
|
||||||
}
|
trap EXIT_PROPERLY EXIT # Capturing exit signals on shell script
|
||||||
|
|
||||||
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
|
|
||||||
}
|
}
|
||||||
|
|
||||||
CHECK_USER () { # Vérifie la validité de l'user admin
|
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.
|
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
|
# $1 = Nom de la base de donnée
|
||||||
db_user=$1
|
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.
|
# 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=$(head -n20 /dev/urandom | tr -c -d 'A-Za-z0-9' | head -c20)
|
||||||
db_pwd=$(ynh_string_random)
|
db_pwd=$(ynh_string_random)
|
||||||
CHECK_VAR "$db_pwd" "db_pwd empty"
|
CHECK_VAR "$db_pwd" "db_pwd empty"
|
||||||
# Utilise '$app' comme nom d'utilisateur et de base de donnée
|
# 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.
|
# 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
|
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
|
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
|
then
|
||||||
sudo useradd -d /var/www/$app --system --user-group $app --shell /usr/sbin/nologin || (echo "Unable to create $app system account" >&2 && false)
|
sudo useradd -d /var/www/$app --system --user-group $app --shell /usr/sbin/nologin || (echo "Unable to create $app system account" >&2 && false)
|
||||||
fi
|
fi
|
||||||
|
@ -165,7 +167,7 @@ REMOVE_LOGROTATE_CONF () { # Suppression de la configuration de logrotate
|
||||||
}
|
}
|
||||||
|
|
||||||
SECURE_REMOVE () { # Suppression de dossier avec vérification des variables
|
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
|
no_var=0
|
||||||
while (echo "$chaine" | grep -q '\$') # Boucle tant qu'il y a des $ dans la chaine
|
while (echo "$chaine" | grep -q '\$') # Boucle tant qu'il y a des $ dans la chaine
|
||||||
do
|
do
|
||||||
|
|
|
@ -96,8 +96,8 @@ sudo yunohost service add $app -l /var/log/$app/$app.log
|
||||||
# Surveille le démarrage du service.
|
# Surveille le démarrage du service.
|
||||||
config_OK=0
|
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é.
|
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`
|
for i in `seq 1 120`
|
||||||
do # La boucle attend le démarrage de jenkins Ou 60 secondes.
|
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
|
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...
|
# 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
|
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;
|
i=1;
|
||||||
fi
|
fi
|
||||||
if grep -q "INFOS: Jenkins is fully up and running" "$tempfile" && [ "$config_OK" -eq 1 ]; then
|
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.
|
break # Si le log annonce une deuxième fois le démarrage de jenkins, sort de la boucle.
|
||||||
fi
|
fi
|
||||||
echo -n "." >&2
|
echo -n "." >&2
|
||||||
|
@ -156,6 +157,9 @@ do # La boucle attend le démarrage de jenkins Ou 60 secondes.
|
||||||
done
|
done
|
||||||
kill -s 15 $PID_TAIL > /dev/null # Arrête l'exécution de tail.
|
kill -s 15 $PID_TAIL > /dev/null # Arrête l'exécution de tail.
|
||||||
sudo rm "$tempfile"
|
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.
|
# Si Jenkins est privé, retire l'autorisation publique.
|
||||||
if [ "$is_public" = "No" ];
|
if [ "$is_public" = "No" ];
|
||||||
|
|
|
@ -53,9 +53,10 @@ sudo yunohost service add $app --log "/var/log/$app/$app.log"
|
||||||
sudo service nginx reload
|
sudo service nginx reload
|
||||||
|
|
||||||
# Surveille le démarrage du service.
|
# Surveille le démarrage du service.
|
||||||
for i in `seq 1 60`
|
for i in `seq 1 120`
|
||||||
do # La boucle attend le démarrage de jenkins Ou 60 secondes.
|
do # La boucle attend le démarrage de jenkins Ou 120 secondes.
|
||||||
if grep -q "INFOS: Jenkins is fully up and running" "$tempfile"; then
|
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.
|
break # Si le log annonce le démarrage de jenkins, sort de la boucle.
|
||||||
fi
|
fi
|
||||||
echo -n "." >&2
|
echo -n "." >&2
|
||||||
|
|
Loading…
Reference in a new issue