Obtenez le déploiement front-end et back-end Jenkins + Gitlab + Docker en dix minutes, en prenant comme exemples les projets Spring et Vue


avant-propos

Avec la maturité du développement logiciel, DevOps est profondément ancré dans le cœur des gens. En tant qu'élément important de DevOps : le déploiement automatisé a toujours été l'infrastructure prioritaire de chacun. En fait, il existe de nombreux outils de déploiement automatisé.Dans mon article précédent, j'ai écrit sur l'utilisation du Gitlab Runner de la famille Gitlab pour réaliser un déploiement automatisé. Cependant, limité par le fait que Gitlab Runner n'a pas de plug-ins et d'écologie, il a commencé à essayer de transférer vers Jenkins. Cet article enregistre uniquement le démarrage rapide du déploiement automatisé de Jenkins. Cet article ne couvre pas certaines opérations avancées telles que l'orchestration de processus, Jenkinsfile et WebHook.

1. Qu'est-ce que Jenkins ?

Jenkins est un serveur d'automatisation open source. Il aide à automatiser les parties du développement logiciel liées à la création, aux tests et au déploiement, facilitant l'intégration continue et la livraison continue. Il s'agit d'un système basé sur un serveur qui s'exécute dans un conteneur de servlet tel qu'Apache Tomcat. Il prend en charge les outils de contrôle de version, notamment AccuRev, CVS, Subversion, Git, Mercurial, Perforce, ClearCase et RTC, et peut exécuter Apache Ant, Apache Maven et des projets basés sur sbt ainsi que des scripts shell arbitraires et des commandes Windows batch.

2. Utilisez les étapes

2.1. Installation du logiciel

Un logiciel comme celui-ci suggère de choisir Docker sans réfléchir :

docker run \
  -d \
  -u root \
  -p 8080:8080 \
  -v /usr/local/docker/jenkins-data:/var/jenkins_home \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v "$HOME":/home \
  --privileged=true \
  --restart=always \
  --name jendemo \
  jenkinsci/blueocean

Une fois l'exécution réussie, vous pouvez accéder directement au port 8080 pour voir cette interface.
insérez la description de l'image ici
Saisissez le conteneur requis pour afficher le mot de passe de ce fichier :
insérez la description de l'image ici

docker exec -it jendemo bash
cat /var/jenkins_home/secrets/initialAdminPassword

Choisissez d'installer le plug-in recommandé.
insérez la description de l'image ici
Jenkins aura par défaut un environnement Java 11. Si vous avez besoin de Gradle et Maven, vous devez le configurer vous-même.
insérez la description de l'image ici
Le nom d'utilisateur et le mot de passe de l'administrateur peuvent être ce que vous voulez.
insérez la description de l'image ici
Cliquez sur Redémarrer et attendez un moment. Jenkins doit être redémarré à chaque installation du plug-in, il est très pratique pour nous d'utiliser Docker pour relancer directement la commande.
insérez la description de l'image ici
Après le redémarrage, accédez à Gestion du système -> Gestion des plug-ins et mettez à niveau tous les plug-ins qui doivent être mis à niveau. Installez également les plugins Gitlab et NodeJS, puis redémarrez.
insérez la description de l'image ici

2.2. Paramétrage logiciel

insérez la description de l'image ici
Dans la configuration globale de l'outil dans la gestion du système, vous pouvez sélectionner les environnements de Maven, Gradle et NodeJS, et vérifier l'installation automatique. Mais il y a un petit trou ici, c'est-à-dire qu'après avoir cliqué sur Enregistrer, il ne sera pas téléchargé et installé directement, mais uniquement lorsque le déclencheur est utilisé. Par exemple, Maven doit sélectionner l'option Maven dans le nouveau travail pour télécharger automatiquement ; pour Node, il doit cocher cette option pour télécharger automatiquement.
insérez la description de l'image ici
Étant donné que Jenkins exécute lui-même les commandes associées dans le conteneur, si vous pensez que la configuration de son environnement n'est pas facile à utiliser, vous pouvez le configurer et l'installer vous-même dans le conteneur.

3. Projet de printemps

3.1 Construction du projet

Jenkins peut être utilisé directement après avoir été configuré selon la deuxième étape.Pour vérification, nous créons un nouveau projet sur Gitlab, vérifions SpringWeb et écrivons un Controller :

@RestController
public class GreetingController {
    
    
    @GetMapping("/greeting")
    public String greeting() {
    
    
        return "Hello Jenkins!";
    }
}

Créez un dockerdossier dans le répertoire racine et placez- Dockerfiley un fichier :

# 指定是基于哪个基础镜像
FROM java:8

# 作者信息
MAINTAINER Peach

# 挂载点声明
VOLUME /tmp

# 将本地的一个文件或目录,拷贝到容器的文件或目录里
ADD /build/libs/demo-0.0.1-SNAPSHOT.jar springboot.jar

#shell脚本
RUN bash -c 'touch /springboot.jar'

# 将容器的8000端口暴露,给外部访问。
EXPOSE 8080

# 当容器运行起来时执行使用运行jar的指令
ENTRYPOINT ["java", "-jar", "springboot.jar"]

注:我这里的Spring是用Gradle依赖的,如果用maven请自行替换Jar包位置和构建命令

3.2 Configuration de Jenkins

Sur la page d'accueil de Jenkins, créez une nouvelle tâche, sélectionnez Free Style :
insérez la description de l'image ici
Configurez le projet, sélectionnez Git ici pour la gestion du code source, puis mettez-y l'adresse de notre projet Gitlab et ajoutez un nom d'utilisateur et un mot de passe Gitlab dans Credentials.
insérez la description de l'image ici
La méthode http est utilisée ici. Si vous utilisez ssh, vous devez configurer les clés publiques et privées du conteneur et les transférer sur le compte Gitlab. Cet article vise à être rapide, donc je ne couvrirai pas cette méthode. insérez la description de l'image ici
Ensuite, nous vérifions cette Build when a change is pushed to Gitlaboption et copions l'URL suivante.
insérez la description de l'image ici
Copiez l'URL ci-dessus dans Gitlab, puis cliquez sur Webhook :
insérez la description de l'image ici
après l'ajout, nous pouvons voir le crochet ici, et nous pouvons cliquer sur Tester pour le tester.
insérez la description de l'image ici
Retourner 200 signifie succès, de sorte que chaque fois que l'utilisateur soumet le code, Jenkins sera activement averti pour effectuer un déploiement automatique.
insérez la description de l'image ici
Mais si l'erreur 403 suivante se produit dans le test :
insérez la description de l'image ici
vous devez configurer une politique de sécurité dans Jenkins et cocher le bouton suivant :
insérez la description de l'image ici
insérez la description de l'image ici
insérez la description de l'image ici
Enfin, nous écrivons ce que Jenkins doit exécuter après avoir reçu cet événement. Dans la construction, nous avons ajouté un shell d'exécution :
insérez la description de l'image ici
pour exécuter des scripts Linux, vous pouvez exécuter ce que vous voulez. Ici, je construis le package Jar du projet via Gradle, puis je crée le Dockerfile, place le package Jar dans l'image Docker et le démarre.

gradle bootJar
docker rm -f app_docker
sleep 1
docker rmi -f app_docker:1.0
sleep 1
docker build -t app_docker:1.0 -f ./docker/Dockerfile .
sleep 1
docker run -d -p 5001:8080 --name app_docker app_docker:1.0

Dans la console, nous pouvons voir les informations d'exécution spécifiques. En fait, c'est la même chose que de taper des commandes sous Linux. Si quelque chose ne va pas, résolvez-le. Je pense que tu peux le faire.
insérez la description de l'image iciAprès avoir réussi ici, je peux accéder directement au port 5001 du serveur pour voir le contenu du contrôleur que nous avons écrit. Modifiez directement le contenu en Test123, attendez quelques secondes et actualisez pour voir le résultat.
insérez la description de l'image ici

3. Projet Vue

L'arrière-plan est en fait similaire à l'interface, rien de plus que d'utiliser Gradle pour l'arrière-plan et NodeJS pour l'interface. Il existe un moyen simple, qui consiste à exécuter le shell directement comme le projet Spring, puis à placer distle dossier mv dans le répertoire Nginx de l'hôte du serveur. J'utilise ici une méthode plus compliquée, je l'intègre dans Docker, puis je publie l'adresse du frontal via Docker.
Commençons par créer un dossier docker et Dockerfile dans le répertoire racine du projet frontal :

# build stage
FROM node:lts-alpine as build-stage
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build

# production stage
FROM nginx:stable-alpine as production-stage
COPY --from=build-stage /app/dist /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

N'oubliez pas de créer un WebHook avec le projet front-end dans Jenkins dans le front-end Gitlab~ et le projet Spring en arrière-plan, seule l'exécution du Shell est différente :

docker rm -f glmx-fornt
sleep 1
docker rmi -f glmx-fornt:1.0
sleep 1
docker build -t glmx-fornt:1.0 -f ./docker/Dockerfile .
sleep 1
docker run -d -p 5003:8080 --name glmx-fornt glmx-fornt:1.0

Après avoir téléchargé le code, attendez que la construction réussisse pour accéder au port 5003 du serveur pour voir le contenu frontal.

Résumer

Ce qui précède est le moyen simple d'utiliser Jenkins, j'espère qu'il pourra vous aider. Si vous avez des questions, n'hésitez pas à communiquer avec moi dans la zone de commentaires.

Je suppose que tu aimes

Origine blog.csdn.net/u012558210/article/details/125805473
conseillé
Classement