Ceci est une ancienne révision du document !
Déploiement Springboot
Via Gitlab CI/CD
Mise en place du déploiement automatique d'une application Springboot vers un serveur externe (VM mise à disposition) via CI/CD Gitlab.
Configuration VM
Se connecter en root avec su :
su -l
Installer Java
Choisir une version compatible (supérieure ou égale à la verion java déclarée dans le pom.xml):
cd /tmp wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.deb dpkg -i jdk-17_linux-x64_bin.deb java -version
Installer Tomcat 10
Ajouter un utilisateur tomcat :
useradd -m -d /opt/tomcat -U -s /bin/false tomcat
Télécharger et dézipper Tomcat :
cd /tmp wget https://dlcdn.apache.org/tomcat/tomcat-10/v10.1.16/bin/apache-tomcat-10.1.16.tar.gz sudo tar xzvf apache-tomcat-10*tar.gz -C /opt/tomcat --strip-components=1
Définir les permissions sur les fichiers :
chown -R tomcat:tomcat /opt/tomcat/ chmod -R u+x /opt/tomcat/bin
Créer le tomcat-manager pour manager les sites à distance via l'interface web :
nano /opt/tomcat/conf/tomcat-users.xml
<!-- user manager can access only manager section --> <role rolename="manager-gui" /> <user username="manager" password="_SECRET_PASSWORD_" roles="manager-gui" /> <!-- user admin can access manager and admin section both --> <role rolename="admin-gui" /> <user username="admin" password="_SECRET_PASSWORD_" roles="manager-gui,admin-gui" />
Créer un service Tomcat
Pour gérer tomcat plus facilement, créer un service Tomcat :
nano /etc/systemd/system/tomcat.service
[Unit] Description=Tomcat After=network.target [Service] Type=forking User=tomcat Group=tomcat Environment="JAVA_HOME=/usr/lib/jvm/jdk-17-oracle-x64" Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom" Environment="CATALINA_BASE=/opt/tomcat" Environment="CATALINA_HOME=/opt/tomcat" Environment="CATALINA_PID=/opt/tomcat/temp/tomcat.pid" Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC" ExecStart=/opt/tomcat/bin/startup.sh ExecStop=/opt/tomcat/bin/shutdown.sh [Install] WantedBy=multi-user.target
Rechargr le deamon service pour prendre en compte le nouveau service :
systemctl daemon-reload
Démarrer Tomcat :
systemctl start tomcat.service
Activer Tomcat pour qu'il redémarre automatiquement à chaque reboot :
systemctl enable tomcat.service
Afficher son statut :
systemctl status tomcat.service
Accéder à l'interface Web via l'adresse DNS fournie :
- http[s]://srv2-vm-[number].sts-sio-caen.info/
- http[s]://srv2-vm-[number].sts-sio-caen.info/manager/
Mise en place CI/CD
gitlab-ci user sur la VM
Sur la VM :
- Créer un utilisateur gitlab-ci
- Faire en sorte qu'il puisse accéder à sudo
- Changer son password : changeMyPassword
- Permettre qu'il puisse s'authentifier en SSH avec login/password
- Redémarrer SSH
- Faire en sorte qu'il n'ait pas besoin de saisir un password en utilisant sudo avec les commandes mv, cp, systemctl
adduser --quiet --shell $SHELL --disabled-password --gecos 'GitlabCI User' gitlab-ci usermod -a -G sudo gitlab-ci echo 'gitlab-ci:changeMyPassword' | chpasswd printf 'Match User gitlab-ci\n\tPasswordAuthentication yes\n' >> /etc/ssh/sshd_config systemctl restart sshd echo 'gitlab-ci ALL=(ALL) NOPASSWD: /bin/mv, NOPASSWD: /usr/bin/systemctl, NOPASSWD: /bin/cp' | sudo EDITOR='tee -a' visudo