Rumah >Java >javaTutorial >Jika anda tidak menggunakan fungsi CI/CD Gitlab lagi, anda akan keluar.

Jika anda tidak menggunakan fungsi CI/CD Gitlab lagi, anda akan keluar.

醉折花枝作酒筹
醉折花枝作酒筹ke hadapan
2021-07-30 17:12:123618semak imbas

Baru-baru ini saya mendapati bahawa fungsi CI/CD Gitlab juga boleh mencapai penggunaan automatik, dan ia agak mudah untuk digunakan! Jika anda menggunakan Gitlab sebagai gudang Git anda, anda juga boleh mencuba fungsi CI/CDnya. Artikel ini masih menggunakan penggunaan automatik SpringBoot sebagai contoh untuk mempraktikkan fungsi CI/DI Gitlab.

Alamat pusat membeli-belah projek e-dagang sebenar SpringBoot (50k bintang) alamat: https://github.com/macrozheng/mall

Pemasangan

Dicapai melalui fungsi CI/CD Gitlab Untuk penggunaan automatik, kami perlu memasang perkhidmatan seperti Gitlab, Gitlab Runner dan Maven.

Pasang Gitlab

Pertama sekali, mari pasang Gitlab Rakan yang tidak tahu tentang pemasangan dan penggunaan Gitlab boleh merujuk kepada "Bina gudang Git anda sendiri dalam masa 10 minit".

Gunakan arahan berikut untuk menjalankan perkhidmatan Gitlab Apa yang perlu diperhatikan di sini ialah atribut nama hos ditambah supaya kita boleh mengakses Gitlab melalui nama domain (untuk mengelakkan masalah yang tidak perlu). pembolehubah GITLAB_ROOT_PASSWORD boleh ditetapkan terus Kata laluan untuk akaun akar dalam Gitlab

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

Kami perlu mengakses Gitlab melalui nama domain git.macrozheng.com Jika anda tidak mempunyai nama domain, anda boleh lakukannya dengan mengubah suai fail hos tempatan;

192.168.7.134 git.macrozheng.com

Memandangkan Gitlab kami berjalan pada port 1080, kami ingin mengaksesnya tanpa menambah port Kami boleh menggunakan Nginx sebagai proksi terbalik dengan Nginx boleh membaca "Penggunaan Nginx yang hebat ini, anda boleh Pasti ada yang tidak tahu! 》, tambah fail konfigurasi git.conf dalam folder konfigurasi Nginx, kandungannya adalah seperti berikut:

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;
    }
}

Kemudian kita boleh mengakses Gitlab melalui nama domain git.macrozheng.com, masukkan akar kata laluan akaun : 12345678 untuk log masuk;

Jika anda tidak menggunakan fungsi CI/CD Gitlab lagi, anda akan keluar.

Muat naik kod aplikasi SpringBoot kami ke Gitlab, jadi Gitlab sedia! Apa yang perlu diperhatikan di sini ialah jika anda tidak menyatakan nama hos semasa memulakan Gitlab, alamat akses HTTP projek anda akan menjadi ID bekas dan anda tidak akan dapat mengakses repositori Git menggunakan alamat ini!

Jika anda tidak menggunakan fungsi CI/CD Gitlab lagi, anda akan keluar.

Pasang Gitlab Runner

Gitlab hanyalah gudang kod Jika anda ingin melaksanakan CI/CD, anda perlu memasang gitlab-runner. runner adalah bersamaan dengan Gitlab Pelaksana tugas, Gitlab akan memanggilnya apabila ia perlu melaksanakan tugas.

Mula-mula muat turun imej Docker gitlab-runner dan pilih alpine-bleeding Versi ini sangat padat!

docker pull gitlab/gitlab-runner:alpine-bleeding

Gunakan arahan berikut untuk menjalankan gitlab-runner; fail config.toml tidak ditemui Ya, jangan risau tentang masalah ini Apabila kita mendaftar gitlab-runner ke Gitlab, fail ini akan dijana secara automatik

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

Seterusnya kita perlu mendaftar gitlab-runner. ke Gitlab dan buka Project-> fungsi->CI/CD, dapatkan alamat dan token yang diperlukan untuk pendaftaran pelari; dalam bekas gitlab-runner;

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

Gunakan arahan berikut dalam bekas untuk mendaftarkan runner

Jika anda tidak menggunakan fungsi CI/CD Gitlab lagi, anda akan keluar.Antara muka interaktif akan muncul semasa pendaftaran, menggesa anda untuk masuk; alamat pendaftaran, token, jenis pelaksana dan maklumat lain, pelaksana ssh Ia boleh melaksanakan arahan Linux dari jauh, yang sangat mudah untuk digunakan.

docker exec -it gitlab-runner /bin/bash

Selepas pendaftaran selesai, kami dapati fail config.toml telah dijana dengan kandungan berikut Jika anda ingin mengubah suai konfigurasi runner pada masa hadapan, cuma tukar fail ini terus.

gitlab-runner register

Dalam tetapan CI/CD Gitlab, kita dapati seorang pelari telah berjaya didaftarkan!

Jika anda tidak menggunakan fungsi CI/CD Gitlab lagi, anda akan keluar.

Memasang Maven

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"
Pembungkusan projek SpringBoot memerlukan Maven, dan kami perlu memasangnya pada pelayan terlebih dahulu.

Muat turun pakej pemasangan Maven Linux, alamat muat turun: https://maven.apache.org/down...

Jika anda tidak menggunakan fungsi CI/CD Gitlab lagi, anda akan keluar.

Selepas memuat turun, gunakan berikut Ekstrak arahan ke direktori yang ditentukan;

Ubah suai fail /etc/profile dan tambahkan konfigurasi pembolehubah persekitaran:

Jika anda tidak menggunakan fungsi CI/CD Gitlab lagi, anda akan keluar.Uji sama ada pemasangan berjaya dengan menyemak Maven versi.

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

JRE dipasang secara lalai pada CentOS Untuk menggunakan Maven, anda perlu memasang JDK.
export MAVEN_HOME=/mydata/apache-maven-3.8.1
export PATH=$PATH:$MAVEN_HOME/bin

Muat turun JDK 8, alamat muat turun: https://mirrors.tuna.tsinghua...

mvn -v
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"

Setelah muat turun selesai, ekstrak JDK ke direktori yang ditentukan;

Tambah pembolehubah persekitaran JAVA_HOME dalam fail /etc/profile.

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;

Jika anda tidak menggunakan fungsi CI/CD Gitlab lagi, anda akan keluar.

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

vim /etc/hosts
192.168.7.134 git.macrozheng.com

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

Jika anda tidak menggunakan fungsi CI/CD Gitlab lagi, anda akan keluar.

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

Jika anda tidak menggunakan fungsi CI/CD Gitlab lagi, anda akan keluar.

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

Jika anda tidak menggunakan fungsi CI/CD Gitlab lagi, anda akan keluar.

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

Jika anda tidak menggunakan fungsi CI/CD Gitlab lagi, anda akan keluar.

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

Jika anda tidak menggunakan fungsi CI/CD Gitlab lagi, anda akan keluar.

总结

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

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

Atas ialah kandungan terperinci Jika anda tidak menggunakan fungsi CI/CD Gitlab lagi, anda akan keluar.. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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