Maison  >  Article  >  Java  >  Si vous n’utilisez plus la fonction CI/CD de Gitlab, vous serez absent.

Si vous n’utilisez plus la fonction CI/CD de Gitlab, vous serez absent.

醉折花枝作酒筹
醉折花枝作酒筹avant
2021-07-30 17:12:123452parcourir

J'ai récemment découvert que la fonction CI/CD de Gitlab peut également réaliser un déploiement automatisé, et qu'elle est assez simple à utiliser ! Si vous utilisez Gitlab comme entrepôt Git, vous pouvez aussi bien essayer sa fonction CI/CD. Cet article prend toujours comme exemple le déploiement automatisé de SpringBoot pour mettre en pratique la fonction CI/DI de Gitlab.

Adresse actuelle du centre commercial du projet de commerce électronique SpringBoot (50 000 + étoiles) : https://github.com/macrozheng/mall

Installation

Pour réaliser un déploiement automatisé via la fonction CI/CD de Gitlab, nous devons installer Gitlab, Gitlab Runner, Maven ces services.

Installez Gitlab

Tout d'abord, installons Gitlab. Les amis qui ne connaissent pas l'installation et l'utilisation de Gitlab peuvent se référer à "Créez votre propre entrepôt Git en 10 minutes".

Utilisez la commande suivante pour exécuter le service Gitlab. Ce qu'il faut noter ici, c'est que l'attribut hostname est ajouté afin que nous puissions accéder à Gitlab via le nom de domaine (afin d'éviter des problèmes inutiles). définissez le compte root dans Gitlab. Mot de passe

docker run --detach \
  --hostname git.macrozheng.com \
  --publish 10443:443 --publish 1080:80 --publish 1022:22 \
  --name gitlab \
  --restart always \
  --volume /mydata/gitlab/config:/etc/gitlab \
  --volume /mydata/gitlab/logs:/var/log/gitlab \
  --volume /mydata/gitlab/data:/var/opt/gitlab \
  -e GITLAB_ROOT_PASSWORD=12345678 \
  gitlab/gitlab-ce:latest

Nous devons accéder à Gitlab via le nom de domaine git.macrozheng.com Si vous n'avez pas de nom de domaine, vous pouvez le faire en modifiant le fichier hôte local

192.168.7.134 git.macrozheng.com
.

Puisque notre Gitlab fonctionne sur le port 1080, si nous voulons accéder sans ajouter de port, nous pouvons utiliser Nginx comme proxy inverse. Les amis qui ne connaissent pas Nginx peuvent lire "Ces merveilleuses utilisations de Nginx, vous ne devez pas le savoir ! " 》, ajoutez le fichier de configuration git.conf dans le dossier de configuration Nginx, le contenu est le suivant :

server {
    listen       80; # 同时支持HTTP
    server_name  git.macrozheng.com; #修改域名

    location / {
        proxy_pass   http://192.168.7.134:1080; # 设置代理服务访问地址
        index  index.html index.htm;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

Ensuite, nous pouvons accéder à Gitlab via le nom de domaine git.macrozheng.com, entrez le mot de passe du compte root : 12345678 pour vous connecter ;

Si vous n’utilisez plus la fonction CI/CD de Gitlab, vous serez absent.

Téléchargez notre code d'application SpringBoot sur Gitlab, pour que Gitlab soit prêt ! Ce qu'il faut noter ici, c'est que si vous ne précisez pas le nom d'hôte au démarrage de Gitlab, l'adresse d'accès HTTP de votre projet sera l'ID du conteneur, et vous ne pourrez pas accéder au dépôt Git en utilisant cette adresse !

Si vous n’utilisez plus la fonction CI/CD de Gitlab, vous serez absent.

Installer Gitlab Runner

Gitlab n'est qu'un entrepôt de code. Si vous souhaitez implémenter CI/CD, vous devez installer gitlab-runner qui est l'équivalent de l'exécuteur de tâches dans Gitlab. quand il doit exécuter des tâches.

Téléchargez d'abord l'image Docker de gitlab-runner et choisissez alpine-bleeding. Cette version est très compacte !

docker pull gitlab/gitlab-runner:alpine-bleeding

Utilisez la commande suivante pour exécuter gitlab-runner ;

docker run --name gitlab-runner --restart always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /mydata/gitlab-runner:/etc/gitlab-runner \
-d gitlab/gitlab-runner:alpine-bleeding

Si nous vérifions le journal du conteneur de gitlab-runner à ce moment, nous trouverons l'erreur suivante. Le fichier config.toml est introuvable. s'inquiéter de ce problème. Lorsque nous ajoutons gitlab- Lorsque le runner est enregistré sur Gitlab, ce fichier sera automatiquement généré

ERROR: Failed to load config stat /etc/gitlab-runner/config.toml: no such file or directory  builds=0

Ensuite, nous devons enregistrer gitlab-runner sur Gitlab, ouvrir le projet->Paramètres-> Fonction CI/CD, et obtenez l'adresse et l'adresse nécessaires à l'enregistrement du jeton du coureur

Si vous n’utilisez plus la fonction CI/CD de Gitlab, vous serez absent.

Ensuite, utilisez la commande suivante pour entrer à l'intérieur du conteneur gitlab-runner ; pour enregistrer le coureur ;

docker exec -it gitlab-runner /bin/bash

Une interface interactive apparaîtra lors de l'inscription, vous invitant à saisir l'adresse d'enregistrement et le jeton, le type d'exécuteur et d'autres informations. L'exécuteur ssh peut exécuter à distance des commandes Linux. recommandé d'utiliser ceci!

Si vous n’utilisez plus la fonction CI/CD de Gitlab, vous serez absent.Une fois l'enregistrement terminé, nous pouvons constater que le fichier config.toml a été généré avec le contenu suivant. Si vous souhaitez modifier la configuration du coureur à l'avenir, modifiez simplement ce fichier directement.

gitlab-runner register

Dans les paramètres CI/CD de Gitlab, nous pouvons constater qu'un coureur a été enregistré avec succès !

Si vous n’utilisez plus la fonction CI/CD de Gitlab, vous serez absent.Installer Maven

Le packaging du projet SpringBoot nécessite Maven, nous devons d'abord l'installer sur le serveur.

Téléchargez le package d'installation de Maven Linux, adresse de téléchargement : https://maven.apache.org/down...

Si vous n’utilisez plus la fonction CI/CD de Gitlab, vous serez absent.Une fois le téléchargement terminé, utilisez la commande suivante pour le décompresser dans le répertoire spécifié ;

concurrent = 1
check_interval = 0

[session_server]
  session_timeout = 1800

[[runners]]
  name = "docker-runner"
  url = "http://192.168.7.134:1080/"
  token = "c2kpV6tX6woL8TMxzBUN"
  executor = "ssh"
  [runners.custom_build_dir]
  [runners.cache]
    [runners.cache.s3]
    [runners.cache.gcs]
    [runners.cache.azure]
  [runners.ssh]
    user = "root"
    password = "123456"
    host = "192.168.7.134"
    port = "22"

Modifiez le fichier /etc/profile, ajoutez la configuration de la variable d'environnement :

cd /mydata
tar -zxvf apache-maven-3.8.1-bin.tar.gz

Testez si l'installation a réussi en vérifiant la version de Maven.

export MAVEN_HOME=/mydata/apache-maven-3.8.1
export PATH=$PATH:$MAVEN_HOME/bin
mvn -v

Installer JDK

JRE est installé par défaut sur CentOS Pour utiliser Maven, vous devez installer JDK.

Téléchargez le JDK 8, adresse de téléchargement : https://mirrors.tuna.tsinghua...

Une fois le téléchargement terminé, extrayez le JDK dans le répertoire spécifié Si vous n’utilisez plus la fonction CI/CD de Gitlab, vous serez absent.

Maven home: /mydata/apache-maven-3.8.1
Java version: 1.8.0_292, vendor: AdoptOpenJDK, runtime: /mydata/java/jdk1.8/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-957.el7.x86_64", arch: "amd64", family: "unix"

Ajoutez la variable d'environnement JAVA_HOME dans le répertoire ; /etc/fichier de profil.

vi /etc/profile
# 在profile文件中添加
export JAVA_HOME=/mydata/java/jdk1.8
export PATH=$PATH:$JAVA_HOME/bin
# 使修改后的profile文件生效
. /etc/profile

使用

一切准备就绪,接下来通过Gitlab的CI/CD功能就可以实现SpringBoot应用的自动化部署了!

首先在项目的根目录下添加.gitlab-ci.yml文件,定义了两个任务,一个任务会将应用代码打包成Jar包并复制到指定目录,另一个任务会通过运行脚本run.sh打包应用的Docker镜像并运行;

# 打包任务
build-job:
  stage: build
  # 指定标签,只有具有该标签的runner才会执行
  tags:
    - docker
  script:
    # 使用Maven打包
    - mvn clean package
    # 将jar包、Dockerfile、运行脚本复制到指定目录
    - cp target/mall-tiny-gitlab-1.0-SNAPSHOT.jar /mydata/build/mall-tiny-gitlab-1.0-SNAPSHOT.jar
    - cp Dockerfile /mydata/build/Dockerfile
    - cp run.sh /mydata/build/run.sh

# 部署任务
deploy-job:
  stage: deploy
  tags:
    - docker
  script:
    # 进入指定目录并执行运行脚本
    - cd /mydata/build
    - chmod +x run.sh
    - ./run.sh

这里值得一提的是,默认情况下runner只会执行具有相同标签的Job,由于我们对Job和runner都设置了标签为docker,所以我们这里是可以执行的。如果你没有设置标签的话,需要在runner的编辑界面设置下让runner可以执行没有标签的Job;

Si vous n’utilisez plus la fonction CI/CD de Gitlab, vous serez absent.

由于我们的gitlab-runner采用的是ssh的执行器,它会登录到我们指定的服务器,执行我们在.gitlab-ci.yml中定义的script命令,在此之前还会先从Git仓库中获取代码,所以我们还需修改下服务器上的host文件;

vim /etc/hosts
192.168.7.134 git.macrozheng.com

接下来就是要把脚本提交到Git仓库上去,提交后会在Project->CI/CD->Pipelines中发现正在执行的任务;

Si vous n’utilisez plus la fonction CI/CD de Gitlab, vous serez absent.

打开Pipeline的详情页面,可以发现我们定义的两个任务都已经执行成功了;

Si vous n’utilisez plus la fonction CI/CD de Gitlab, vous serez absent.

打开Job的详情界面,我们可以看到任务执行过程中输出的日志信息;

Si vous n’utilisez plus la fonction CI/CD de Gitlab, vous serez absent.

如果你想手动执行Pipeline,而不是提交触发的话,可以在Pipelines页面点击Run Pipeline按钮即可;

Si vous n’utilisez plus la fonction CI/CD de Gitlab, vous serez absent.

运行成功后,可以通过如下地址访问项目:http://192.168.7.134:8088/swa...

Si vous n’utilisez plus la fonction CI/CD de Gitlab, vous serez absent.

总结

如果你用Gitlab作为Git仓库的话,使用它的CI/CD功能来实现自动化部署确实很不错!安装一个轻量级gitlab-runner,编写简单的.gitlab-ci.yml脚本文件即可实现。其实我们之前以及介绍过很多种自动化部署方案,比如Jenkins、Gogs+Drone、Gitlab CI/CD,我们可以发现一个共同点,这些方案都离不开Linux命令。 所以说要想玩转自动化部署,还是得先玩转Linux命令!

相关视频教程推荐:Java视频教程

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer