Heim > Java > javaLernprogramm > Hauptteil

Wie Gitlab-runner+Docker die automatische Bereitstellung von SpringBoot-Projekten implementiert

王林
Freigeben: 2023-05-20 18:55:20
nach vorne
1807 Leute haben es durchsucht

1. Umgebungsanforderungen

Die Betriebssysteme der folgenden Server sind alle Centos7

  • Server A: Gitlab

  • Server B: GitlabRunner, Docker, Docker-Compose, Java1.8, Maven3.6.3, Git

ps: Hier können Sie GitlabRunner, Java1.8, Maven3.6.3 und Git von Server B trennen und unabhängig voneinander bereitstellen. Der Grund, warum Java benötigt wird, ist Maven, das zum Verpacken verwendet wird.

Zur Vereinfachung der Demonstration muss Anwendungsserver B nur Docker und Docker-Compose verwenden.

Zugehörige Tutorials zum Aufbau von Diensten finden Sie in offiziellen Dokumenten oder anderen zuverlässigen Blog-Tutorials von Drittanbietern!

Aktuelle Version meines Dienstes

  • Gitlab: 14.9

  • GitlabRunner: 14.10.0

  • Docker: 20.10.14

  • docker-compose: 1.29.2

  • Git: 2.31 .1, prüfen Sie im Voraus, ob die neueste Version von Git vorliegt, da sonst später Fehler auftreten.

2. Hauptprozess

Unser Hauptprozess besteht darin, den Code über Gitlab zu verwalten und dann Gitlabs eigene Gitlab CI/CD-Funktion zu verwenden, um sich bei GitlabRunner zu registrieren und zu binden.

Sobald die Bindung erfolgreich ist, wird GitlabRunner jedes Mal aktiviert, wenn der Code übermittelt wird, und das entsprechende Skript wird für die automatische Bereitstellung ausgeführt.

Wie Gitlab-runner+Docker die automatische Bereitstellung von SpringBoot-Projekten implementiert

3. /Fedora

curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash
Nach dem Login kopieren

2. Befehlsinstallation:

Für Debian/Ubuntu/Mint

curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash
Nach dem Login kopieren

Für RHEL/CentOS/Fedora

sudo apt-get install gitlab-ci-multi-runner
Nach dem Login kopieren

3.2 Starten Sie die Registrierung

1. Öffnen Sie das Warehouse, das Gitlab automatisch bereitstellen muss. 》CI/CD -》Runners.

2. Wie unten gezeigt, sehen Sie die beiden wichtigsten Informationen, die später bei der GitlabRunner-Registrierung verwendet werden:

Grundlegender Befehl:

Registrieren: gitlab-runner register

Wie Gitlab-runner+Docker die automatische Bereitstellung von SpringBoot-Projekten implementiert

Registrierte Läufer anzeigen: gitlab-runner list

Wie Gitlab-runner+Docker die automatische Bereitstellung von SpringBoot-Projekten implementiert

Alle Registrierungen abbrechen: gitlab-runner unregister --all-runners

Gehen Sie zurück zu Server B und führen Sie den Befehl aus
    Register Ausführliche Erklärung des Prozesses:
  • Geben Sie die GitLab-Instanz-URL ein (zum Beispiel https://gitlab.com/):
  • Geben Sie die Dienst-URL von gitlab ein
  • Geben Sie das Registrierungstoken ein:
Geben Sie das Token ein , siehe Bild oben

gitlab-runner register

Geben Sie eine Beschreibung für den Runner ein:Wie Gitlab-runner+Docker die automatische Bereitstellung von SpringBoot-Projekten implementiertGeben Sie die Runner-Beschreibung ein

  • Geben Sie Tags für den Runner ein (durch Kommas getrennt)

  • Geben Sie ein Tag für diesen Gitlab-Runner ein ist sehr wichtig. Im nachfolgenden Verwendungsprozess müssen Sie dieses Tag verwenden, um gitlab-runner anzugeben (yml-Datei, der Job wählt den angegebenen Runner aus, indem er das Tag-Label festlegt).


  • Geben Sie einen optionalen Wartungshinweis für den Runner ein:
  • Geben Sie einen optionalen Wartungshinweis ein


  • Geben Sie einen Executor ein: Docker+Maschine, Docker-SSH+Maschine, Benutzerdefiniert, Docker-Windows, Docker-SSH, SSH, Kubernetes, Docker, Parallelen, Shell, Virtualbox:
  • Drücken Sie die Eingabetaste um den Ordner „gitlab-runner“ zu beenden und zu installieren. Wichtig!!!

Nachdem wir den Code übermittelt haben, fragen wir: Wie soll ich Shell-Skripte verwenden, um Build und Bereitstellung zu steuern? Gitlab hat uns eine Vorlage zur Verfügung gestellt, mit der eine Datei mit dem Namen .gitlab-ci.yml im Stammverzeichnis des Warehouse erstellt werden soll. Hier nehmen wir ein Springboot-Projekt als Beispiel und fügen 3 Dateien (.gitlab-ci) hinzu Das Originalprojekt. .yml, Dockerfile, docker-compose.yml), der Speicherort und der Inhalt der Datei werden unten angezeigt. Ändern Sie einfach den Inhalt entsprechend Ihren Anforderungen. Sie müssen mit einigen grundlegenden Dateistrukturen und der Syntax von Dockerfile vertraut sein und docker-compose.yml:

    3 Dateispeicherortkarte

  • .gitlab-ci.yml
  • sudo yum -y install gitlab-ci-multi-runner
    Nach dem Login kopieren

    Docker-Ordner im Stammverzeichnis erstellen,

  • Docker-Datei erstellen:
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
Nach dem Login kopieren

Docker-compose.yml erstellen:

#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
Nach dem Login kopieren

5. Testen Sie

Senden Sie den Code der lokalen Idee einmal an den Entwicklungszweig, und er läuft bereitsWie Gitlab-runner+Docker die automatische Bereitstellung von SpringBoot-Projekten implementiert

点进去看,出现问题

Wie Gitlab-runner+Docker die automatische Bereitstellung von SpringBoot-Projekten implementiert

Wie Gitlab-runner+Docker die automatische Bereitstellung von SpringBoot-Projekten implementiert

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

当前git版本:

[root@localhost local]# git --version
git version 1.8.3.1
Nach dem Login kopieren

升级最新版git后:

[root@localhost yum.repos.d]# git --version
git version 2.24.4
Nach dem Login kopieren

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

Wie Gitlab-runner+Docker die automatische Bereitstellung von SpringBoot-Projekten implementiert

最新的一次已通过 passed:

Wie Gitlab-runner+Docker die automatische Bereitstellung von SpringBoot-Projekten implementiert

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

Wie Gitlab-runner+Docker die automatische Bereitstellung von SpringBoot-Projekten implementiert

Wie Gitlab-runner+Docker die automatische Bereitstellung von SpringBoot-Projekten implementiert

cd到 项目的docker目录,使用

docker-compose logs -ft
Nach dem Login kopieren

测试接口:

Wie Gitlab-runner+Docker die automatische Bereitstellung von SpringBoot-Projekten implementiert

6.常见问题

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

Wie Gitlab-runner+Docker die automatische Bereitstellung von SpringBoot-Projekten implementiert

解决方法,执行命令:

sudo chmod 777 /var/run/docker.sock
Nach dem Login kopieren

问题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
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie Gitlab-runner+Docker die automatische Bereitstellung von SpringBoot-Projekten implementiert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage