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!
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.
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.
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash
sudo apt-get install gitlab-ci-multi-runner
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
Registrierte Läufer anzeigen: gitlab-runner list
Alle Registrierungen abbrechen: gitlab-runner unregister --all-runners Gehen Sie zurück zu Server B und führen Sie den Befehl ausgitlab-runner register
Geben Sie eine Beschreibung für den Runner ein:Geben Sie die Runner-Beschreibung ein
Geben Sie Tags für den Runner ein (durch Kommas getrennt)
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:
sudo yum -y install gitlab-ci-multi-runner
Docker-Ordner im Stammverzeichnis 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
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
5. Testen Sie
Senden Sie den Code der lokalen Idee einmal an den Entwicklungszweig, und er läuft bereits
点进去看,出现问题
这里提示我们的git版本太低了
当前git版本:
[root@localhost local]# git --version git version 1.8.3.1
升级最新版git后:
[root@localhost yum.repos.d]# git --version git version 2.24.4
回到gitlab后台,这里手动再执行一次:
最新的一次已通过 passed:
查看日志的方法,进第一个build查看日志,获取项目的路径(大家有更好的方法可以告诉下我)
cd到 项目的docker目录,使用
docker-compose logs -ft
测试接口:
问题1:自动化部署build报错:
解决方法,执行命令:
sudo chmod 777 /var/run/docker.sock
问题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
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!