Rumah  >  Artikel  >  Java  >  Cara Gitlab-runner+Docker melaksanakan penempatan automatik projek SpringBoot

Cara Gitlab-runner+Docker melaksanakan penempatan automatik projek SpringBoot

王林
王林ke hadapan
2023-05-20 18:55:201796semak imbas

1. Keperluan persekitaran

Sistem pengendalian pelayan berikut semuanya Centos7

  • Pelayan A: Gitlab

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

ps: Di sini anda boleh meletakkan GitlabRunner, Java1.8, maven3.6.3, git pelayan B Ia dicadangkan secara berasingan dan digunakan secara bebas Sebab Java diperlukan adalah maven, yang digunakan untuk pembungkusan.

Untuk kemudahan demonstrasi, pelayan aplikasi B hanya perlu menggunakan docker dan docker-compose.

Untuk tutorial pembinaan perkhidmatan berkaitan, sila rujuk dokumen rasmi atau tutorial blog pihak ketiga yang boleh dipercayai!

Versi semasa perkhidmatan saya

  • Gitlab: 14.9

  • GitlabRunner: 14.10.0

  • docker: 20.10.14

  • docker-compose: 1.29.2

  • Git: 2.31.1, semak terlebih dahulu sama ada Git adalah versi terkini, jika tidak ralat akan berlaku kemudian.

2 Proses utama

Proses utama kami ialah mengurus kod melalui Gitlab, dan kemudian menggunakan fungsi CI/CD Gitlab yang disertakan dengan Gitlab untuk mendaftar dan mengikat kepada GitlabRunner.

Setelah pengikatan berjaya, GitlabRunner akan diaktifkan setiap kali kod diserahkan dan skrip yang sepadan akan dilaksanakan untuk penggunaan automatik.

Cara Gitlab-runner+Docker melaksanakan penempatan automatik projek SpringBoot

3.Pemasangan dan pendaftaran GitlabRunner

3.1 Pemasangan

Ringkasan: Terdapat 2 langkah kesemuanya:

1. Tambah perpustakaan rasmi gitlab:

Untuk Debian/Ubuntu/Mint

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

Untuk RHEL/CentOS/Fedora

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

2 Untuk Debian /Ubuntu/Mint

sudo apt-get install gitlab-ci-multi-runner

Untuk RHEL/CentOS/Fedora

sudo yum -y install gitlab-ci-multi-runner

3.2 Mulakan pendaftaran

1 Buka gudang yang Gitlab perlu gunakan secara automatik, pilih Tetapan- 》CI/CD -》Pelari.

Cara Gitlab-runner+Docker melaksanakan penempatan automatik projek SpringBoot2 Seperti yang ditunjukkan di bawah, anda boleh melihat dua maklumat yang paling kritikal, yang akan digunakan semasa mendaftar GitlabRunner nanti.

Cara Gitlab-runner+Docker melaksanakan penempatan automatik projek SpringBoot3.Pendaftaran GitlabRunner:

Arahan asas:

    Pendaftaran: daftar gitlab-runner
  • Lihat berdaftar Pelari: senarai gitlab-runner
  • Batalkan semua pendaftaran: gitlab-runner nyahdaftar --semua-pelari
  • Kembali ke pelayan B. Laksanakan arahan
Proses pendaftaran terperinci:

gitlab-runner register

Cara Gitlab-runner+Docker melaksanakan penempatan automatik projek SpringBoot

    Masukkan URL contoh GitLab (contohnya, https://gitlab.com/) :
  • Masukkan URL perkhidmatan gitlab


  • Masukkan token pendaftaran:
  • Masukkan token, rujuk gambar di atas


  • Masukkan a penerangan untuk pelari:
  • Masukkan penerangan Pelari


  • Masukkan tag untuk pelari (dipisahkan koma)
  • Berikan gitlab-runner ini Masukkan teg. Teg ini sangat penting Anda perlu menggunakan teg ini untuk menentukan gitlab-runner dalam proses penggunaan berikutnya (fail yml, tugas memilih Runner yang ditentukan dengan menetapkan label tag)

    Masukkan nota penyelenggaraan pilihan untuk pelari:
  • Masukkan nota penyelenggaraan pilihan


  • Masukkan pelaksana: docker+machine, docker-ssh+machine, custom, docker- windows, docker- ssh, ssh, kubernetes, docker, parallels, shell, virtualbox:
  • Tekan Enter untuk menamatkan, konfigurasi akan dijana secara automatik dalam folder gitlab-runner pemasangan.

Kembali Dalam tetapan Pelari latar belakang gitlab, muat semula halaman dan anda akan melihat Pelari baharu:

Cara Gitlab-runner+Docker melaksanakan penempatan automatik projek SpringBoot4 Buat skrip! 🎜>

Apabila diserahkan Selepas pengekodan, bagaimanakah kita harus menggunakan skrip Shell untuk mengawal binaan dan penggunaan? Gitlab telah memberikan kami templat, iaitu untuk mencipta fail bernama: .gitlab-ci.yml dalam direktori akar gudang

Di sini kami mengambil projek springboot sebagai contoh dan menambah 3 fail pada projek asal (.gitlab-ci.yml, Dockerfile, docker-compose.yml), lokasi dan kandungan fail ditunjukkan di bawah. Cuma ubah suai kandungan mengikut keperluan anda. Anda perlu biasa dengan beberapa struktur fail asas sintaks Dockerfile dan docker-compose.yml :

3 peta lokasi fail

.gitlab-ci.ymlCara Gitlab-runner+Docker melaksanakan penempatan automatik projek SpringBoot

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

Buat folder Docker dalam direktori root,

Buat Dockerfile:

#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

Buat 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

5 menyerahkan kod sekali ke cawangan dev, dan anda sudah boleh Lari

点进去看,出现问题

Cara Gitlab-runner+Docker melaksanakan penempatan automatik projek SpringBoot

Cara Gitlab-runner+Docker melaksanakan penempatan automatik projek SpringBoot

这里提示我们的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后台,这里手动再执行一次:

Cara Gitlab-runner+Docker melaksanakan penempatan automatik projek SpringBoot

最新的一次已通过 passed:

Cara Gitlab-runner+Docker melaksanakan penempatan automatik projek SpringBoot

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

Cara Gitlab-runner+Docker melaksanakan penempatan automatik projek SpringBoot

Cara Gitlab-runner+Docker melaksanakan penempatan automatik projek SpringBoot

cd到 项目的docker目录,使用

docker-compose logs -ft

测试接口:

Cara Gitlab-runner+Docker melaksanakan penempatan automatik projek SpringBoot

6.常见问题

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

Cara Gitlab-runner+Docker melaksanakan penempatan automatik projek SpringBoot

解决方法,执行命令:

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

Atas ialah kandungan terperinci Cara Gitlab-runner+Docker melaksanakan penempatan automatik projek SpringBoot. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam