Maison > Java > javaDidacticiel > le corps du texte

Comment Gitlab-runner+Docker implémente le déploiement automatique des projets SpringBoot

王林
Libérer: 2023-05-20 18:55:20
avant
1805 Les gens l'ont consulté

1. Exigences environnementales

Les systèmes d'exploitation des serveurs suivants sont tous Centos7

  • Serveur A : Gitlab

  • Serveur B : GitlabRunner, Docker, docker-compose, Java1.8, maven3.6.3, git

ps : Ici, vous pouvez séparer GitlabRunner, Java1.8, maven3.6.3 et git du serveur B et les déployer indépendamment. La raison pour laquelle Java est nécessaire est maven, qui est utilisé pour l'empaquetage.

Pour faciliter la démonstration, le serveur d'applications B n'a besoin que d'utiliser docker et docker-compose.

Pour les didacticiels de construction de services associés, veuillez vous référer aux documents officiels ou à d'autres didacticiels de blog tiers fiables !

Version actuelle de mon service

  • Gitlab : 14.9

  • GitlabRunner : 14.10.0

  • docker : 20.10.14

  • docker-compose : 1.29.2

  • Git : 2.31 .1, vérifiez à l'avance si Git est la dernière version, sinon des erreurs se produiront plus tard.

2. Processus principal

Notre processus principal consiste à gérer le code via Gitlab, puis à utiliser la fonction Gitlab CI/CD fournie avec Gitlab pour l'enregistrer et le lier avec GitlabRunner.

Une fois la liaison réussie, GitlabRunner sera activé à chaque fois que le code sera soumis et le script correspondant sera exécuté pour un déploiement automatique.

Comment Gitlab-runner+Docker implémente le déploiement automatique des projets SpringBoot

3. Installation et enregistrement de GitlabRunner

3.1 Installation

Résumé Il y a 2 étapes au total :

1. Ajoutez la bibliothèque officielle gitlab :

Pour Debian/Ubuntu/Mint

curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash
Copier après la connexion

Pour RHEL/CentOS. /Fedora

curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash
Copier après la connexion

2. Installation de la commande :

Pour Debian/Ubuntu/Mint

sudo apt-get install gitlab-ci-multi-runner
Copier après la connexion

Pour RHEL/CentOS/Fedora

sudo yum -y install gitlab-ci-multi-runner
Copier après la connexion

3.2 Démarrer l'enregistrement

1 Ouvrez l'entrepôt dont Gitlab a besoin pour déployer automatiquement, sélectionnez Paramètres-. 》CI/CD -》Coureurs.

Comment Gitlab-runner+Docker implémente le déploiement automatique des projets SpringBoot

2. Comme indiqué ci-dessous, vous pouvez voir les deux informations les plus critiques, qui seront utilisées lors de l'enregistrement ultérieur de GitlabRunner

Comment Gitlab-runner+Docker implémente le déploiement automatique des projets SpringBoot

3. gitlab-runner register

    Afficher les coureurs inscrits : gitlab-runner list
  • Annuler toutes les inscriptions : gitlab-runner unregister --all-runners
  • Retournez au serveur B et exécutez la commande
  • S'inscrire Explication détaillée du processus :

gitlab-runner register

Entrez l'URL de l'instance GitLab (par exemple, https://gitlab.com/) :

Entrez l'URL du service de gitlabComment Gitlab-runner+Docker implémente le déploiement automatique des projets SpringBoot

  • Entrez le jeton d'enregistrement :

    Entrez le jeton , reportez-vous à l'image ci-dessus

  • Entrez une description pour le coureur :

    Entrez la description du coureur

  • Entrez les balises pour le coureur (séparées par des virgules)


  • Entrez une balise pour ce gitlab-runner Cette balise. est très important lors d'une utilisation ultérieure, vous devez utiliser cette balise pour spécifier gitlab-runner (fichier yml, le travail sélectionne le Runner spécifié en définissant l'étiquette des balises)
  • Entrez une note de maintenance facultative pour le coureur :
Entrez facultative. note de maintenance

  • Entrez un exécuteur : docker+machine, docker-ssh+machine, custom, docker-windows, docker-ssh, ssh, kubernetes, docker, parallels, shell, virtualbox :


  • Appuyez sur Entrée pour terminer et installez le dossier gitlab-runner. La configuration sera automatiquement générée ensuite.
  • Retournez aux paramètres de l'arrière-plan de gitlab Runner, actualisez la page et vous verrez le nouveau Runner :

4. !!

Après avoir soumis le code, nous comment dois-je utiliser les scripts Shell pour contrôler la construction et le déploiement ? Gitlab nous a fourni un modèle, qui consiste à créer un fichier nommé : .gitlab-ci.yml dans le répertoire racine de l'entrepôt. Ici, nous prenons comme exemple un projet springboot et y ajoutons 3 fichiers (.gitlab-ci). le projet d'origine. .yml, Dockerfile, docker-compose.yml), l'emplacement et le contenu du fichier sont indiqués ci-dessous. Modifiez simplement le contenu en fonction de vos besoins. Vous devez être familier avec certaines structures de fichiers et la syntaxe de base de Dockerfile. et docker-compose.yml :

Comment Gitlab-runner+Docker implémente le déploiement automatique des projets SpringBoot3 Carte d'emplacement du fichier

.gitlab-ci.yml

stages:
  - build
  - deploy_dev
  - clean
# 打包镜像
build:
  stage: build
  only:
    - dev
  script:
    - $MAVEN_HOME/bin/mvn clean package '-Dmaven.test.skip=true'
    - cp ./XXX/target/XXX.jar docker/
    - cd docker
    - docker build -t dev/XXX:v1.0.0 .
  tags:
    - maven
# 部署开发服务器
deploy_dev:
  stage: deploy_dev
  only:
    - dev
  script:
    - cd docker
    - docker-compose down
    - docker-compose up -d
  tags:
    - maven
#清理虚悬镜像
clean:
  stage: clean
  only:
    - dev
  script:
    - docker rmi $(docker images -q -f dangling=true)
  tags:
    - maven
Copier après la connexion

Créez le dossier Docker dans le répertoire racine,

Créez un fichier Docker :

#FROM java:8 #java:8这个镜像体积有643MB,打包镜像后体积太大了,不建议使用
# openjdk:8-jre-alpine 体积最小,只有85MB
FROM openjdk:8-jre-alpine
# 以下2个RUN解决 java验证码接口报错的问题,
RUN echo -e "https://mirror.tuna.tsinghua.edu.cn/alpine/v3.4/main\n\
https://mirror.tuna.tsinghua.edu.cn/alpine/v3.4/community" > /etc/apk/repositories
RUN apk --update add curl bash ttf-dejavu && \
      rm -rf /var/cache/apk/*
COPY . /opt/app
WORKDIR /opt/app
Copier après la connexion
Comment Gitlab-runner+Docker implémente le déploiement automatique des projets SpringBootCréez docker-compose.yml :

version: '3.1'
services:
  education-course:
    container_name: dev-XXX-server
    restart: always
    image: dev/XXX:v1.0.0
    network_mode: "host"
    volumes:
      - /opt/XXX-server/logs:/XXX/logs
    command: java -jar -Xms1024m -Xmx1024m -Duser.timezone=GMT+08 xxx.jar --spring.profiles.active=dev
Copier après la connexion

5. Test

Soumettez une fois le code de l'idée locale à la branche dev, et elle est déjà en cours d'exécution

点进去看,出现问题

Comment Gitlab-runner+Docker implémente le déploiement automatique des projets SpringBoot

Comment Gitlab-runner+Docker implémente le déploiement automatique des projets SpringBoot

这里提示我们的git版本太低了

当前git版本:

[root@localhost local]# git --version
git version 1.8.3.1
Copier après la connexion

升级最新版git后:

[root@localhost yum.repos.d]# git --version
git version 2.24.4
Copier après la connexion

回到gitlab后台,这里手动再执行一次:

Comment Gitlab-runner+Docker implémente le déploiement automatique des projets SpringBoot

最新的一次已通过 passed:

Comment Gitlab-runner+Docker implémente le déploiement automatique des projets SpringBoot

查看日志的方法,进第一个build查看日志,获取项目的路径(大家有更好的方法可以告诉下我)

Comment Gitlab-runner+Docker implémente le déploiement automatique des projets SpringBoot

Comment Gitlab-runner+Docker implémente le déploiement automatique des projets SpringBoot

cd到 项目的docker目录,使用

docker-compose logs -ft
Copier après la connexion

测试接口:

Comment Gitlab-runner+Docker implémente le déploiement automatique des projets SpringBoot

6.常见问题

问题1:自动化部署build报错:

Comment Gitlab-runner+Docker implémente le déploiement automatique des projets SpringBoot

解决方法,执行命令:

sudo chmod 777 /var/run/docker.sock
Copier après la connexion

问题2:docker apline temporary error (try again later) 错误
没有dns导致的

在本机系统上创建daemon文件添加dns,然后重启docker

vim /etc/docker/daemon.json
{
"dns": ["8.8.8.8"]
}
sudo service docker restart
Copier après la connexion

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!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal