最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot整合GitLab-CI實(shí)現(xiàn)持續(xù)集成的過(guò)程

 更新時(shí)間:2022年12月14日 10:50:40   作者:微楓Micromaple  
這篇文章主要介紹了SpringBoot整合GitLab-CI實(shí)現(xiàn)持續(xù)集成,本文詳細(xì)講述了 GitLab-CI 持續(xù)集成的安裝、部署、以及配置,需要的朋友可以參考下

寫在前面

在企業(yè)開發(fā)過(guò)程中,我們開發(fā)的功能或者是修復(fù)的BUG都需要部署到服務(wù)器上去,而這部分部署操作又是重復(fù)且繁瑣的工作,GitLab-CI 持續(xù)集成為我們解決了這一痛點(diǎn),將重復(fù)部署的工作自動(dòng)化,大大的節(jié)省了程序員們的寶貴時(shí)間。本文詳細(xì)講述了 GitLab-CI 持續(xù)集成的安裝、部署、以及配置。

文中的工具包有需要的話也可以私信博主喲~

一、概述

在這里插入圖片描述

1.1、什么是CI/CD

CI/CD 屬于 DevOps,代表持續(xù)集成、持續(xù)交付/部署。CI/CD 自動(dòng)化了傳統(tǒng)上將新代碼從提交到生產(chǎn)(例如構(gòu)建、測(cè)試和部署)以及基礎(chǔ)設(shè)施配置所需的大部分或全部手動(dòng)人工干預(yù)。借助 CI/CD ,開發(fā)人員可以對(duì)代碼進(jìn)行更改,然后自動(dòng)測(cè)試并推出以進(jìn)行交付和部署。以實(shí)現(xiàn)停機(jī)時(shí)間最小化,代碼發(fā)布速度更快。

1.2、持續(xù)集成(CI)

持續(xù)集成是在提交或合并代碼時(shí),自動(dòng)測(cè)試每個(gè)更改,并自動(dòng)啟動(dòng)構(gòu)建??梢源蟠鬁p少開發(fā)和運(yùn)維人員的重復(fù)工作,可以在軟件開發(fā)生命周期的更早階段更輕松的發(fā)現(xiàn)并修復(fù)錯(cuò)誤和安全問(wèn)題。

1.3、持續(xù)交付(CD)

持續(xù)交付是一種軟件開發(fā)實(shí)踐,一般與持續(xù)集成結(jié)合使用,以自動(dòng)化基礎(chǔ)設(shè)置供應(yīng)和應(yīng)用程序發(fā)布過(guò)程。

一旦代碼作為 CI 流程的一部分進(jìn)行了測(cè)試和構(gòu)建,持續(xù)交付將在最后階段接管,以確保可以隨時(shí)部署并將部署所需要的環(huán)境打包在一起。

通過(guò)持續(xù)交付,可以隨時(shí)將構(gòu)建的軟件部署到生產(chǎn)環(huán)境。可以手動(dòng)觸發(fā)部署,也可以進(jìn)行自動(dòng)化部署。

二、CI/CD流水線

2.1、Pipeline

在這里插入圖片描述

Pipeline 相當(dāng)于構(gòu)建任務(wù),里面可以包含多個(gè)流程,如安裝依賴、運(yùn)行測(cè)試、編譯、部署測(cè)試服務(wù)器、部署生產(chǎn)服務(wù)器等流程。

任何提交或合并代碼都可以觸發(fā) Pipeline。

2.2、Stages

在這里插入圖片描述

Stages 表示構(gòu)建階段,可以在一次 Pipeline 中定義多個(gè) Stages。

Stages 有以下特點(diǎn):

  • 所有 Stages 會(huì)按照順序運(yùn)行,即當(dāng)一個(gè) Stage 完成后,下一個(gè) Stage 才會(huì)開始
  • 只有當(dāng)所有 Stages 完成后,該構(gòu)建任務(wù) (Pipeline) 才會(huì)成功
  • 如果任何一個(gè) Stage 失敗,那么后面的 Stages 不會(huì)執(zhí)行,該構(gòu)建任務(wù) (Pipeline) 失敗

2.3、Jobs

在這里插入圖片描述

Jobs 表示構(gòu)建工作,表示某個(gè) Stage 里面執(zhí)行的工作。可以在 Stages 里面定義多個(gè) Jobs。

Jobs 有以下特點(diǎn):

  • 相同 Stage 中的 Jobs 會(huì)并行執(zhí)行
  • 相同 Stage 中的 Jobs 都執(zhí)行成功時(shí),該 Stage 才會(huì)成功
  • 如果任何一個(gè) Job 失敗,那么該 Stage 失敗,即該構(gòu)建任務(wù) (Pipeline) 失敗

2.4、Runners

Runner 是一個(gè)在 GitLab CI/CD 管道中運(yùn)行作業(yè)的應(yīng)用程序。簡(jiǎn)而言之,就是由 Runner 來(lái)執(zhí)行這些構(gòu)建任務(wù)。

GitLab Runner 可以安裝到不同的機(jī)器上,也可以在容器或 Kubernetes 集群中運(yùn)行。Runner 在安裝機(jī)器上處理作業(yè),在構(gòu)建任務(wù)運(yùn)行期間并不會(huì)影響到 GitLab 的性能。

三、安裝GitLab Runner

3.1、環(huán)境準(zhǔn)備

創(chuàng)建目錄

mkdir -p /usr/local/docker/runner
mkdir -p /usr/local/docker/runner/environment

下載 jdk-8u341-linux-x64.tar.gz、apache-maven-3.5.3-bin.tar.gz、settings.xml、docker-compose,并將其上傳至 environment 目錄

$ ll
total 197168
drwxr-xr-x 2 root root      4096 Dec  3 20:13 ./
drwxr-xr-x 3 root root      4096 Dec  3 20:13 ../
-rw-r--r-- 1 root root   8799579 Dec  3 20:13 apache-maven-3.5.3-bin.tar.gz
-rw-r--r-- 1 root root  44924928 Dec  3 20:13 docker-compose
-rw-r--r-- 1 root root 148162542 Dec  3 20:13 jdk-8u341-linux-x64.tar.gz
-rw-r--r-- 1 root root     10596 Dec  4 20:13 settings.xml

settings.xml 中增加了 maven 部署的 server 節(jié)點(diǎn),否則項(xiàng)目 deploy 時(shí)會(huì)失敗

3.2、創(chuàng)建Dockerfile

environment目錄下創(chuàng)建 daemon.json

vi /usr/local/docker/runner/environment/daemon.json

內(nèi)容如下:

{
  "registry-mirrors": [
    "https://mirror.ccs.tencentyun.com"
  ],
  "insecure-registries": [
    "192.168.110.158:5000"
  ]
}
  • registry-mirrors:為鏡像加速地址,這里是使用的騰訊云的鏡像加速地址。
  • insecure-registries:Docker倉(cāng)庫(kù)的IP。

注意:需要提前搭建Docker 私服(Docker Registry)

environment目錄下創(chuàng)建 Dockerfile

vi /usr/local/docker/runner/environment/Dockerfile

內(nèi)容如下:

FROM gitlab/gitlab-runner:v11.0.2

# 修改軟件源
RUN echo 'deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse' > /etc/apt/sources.list && \
    echo 'deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse' >> /etc/apt/sources.list && \
    echo 'deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse' >> /etc/apt/sources.list && \
    echo 'deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse' >> /etc/apt/sources.list && \
    apt-get update -y && \
    apt-get clean

# 安裝 Docker
RUN apt-get -y install apt-transport-https ca-certificates curl software-properties-common && \
    curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | apt-key add - && \
    add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" && \
    apt-get update -y && \
    apt-get install -y docker-ce
COPY daemon.json /etc/docker/daemon.json

# 安裝 Docker Compose
WORKDIR /usr/local/bin
COPY docker-compose /usr/local/bin
RUN chmod +x docker-compose

# 安裝 Java
RUN mkdir -p /usr/local/java
WORKDIR /usr/local/java
COPY jdk-8u341-linux-x64.tar.gz /usr/local/java
RUN tar -zxvf jdk-8u341-linux-x64.tar.gz && \
    rm -fr jdk-8u341-linux-x64.tar.gz

# 安裝 Maven
RUN mkdir -p /usr/local/maven
WORKDIR /usr/local/maven
COPY apache-maven-3.5.3-bin.tar.gz /usr/local/maven
RUN tar -zxvf apache-maven-3.5.3-bin.tar.gz && \
    rm -fr apache-maven-3.5.3-bin.tar.gz
COPY settings.xml /usr/local/maven/apache-maven-3.5.3/conf/settings.xml

# 配置環(huán)境變量
ENV JAVA_HOME /usr/local/java/jdk1.8.0_341
ENV MAVEN_HOME /usr/local/maven/apache-maven-3.5.3
ENV PATH $PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin

WORKDIR /

3.3、創(chuàng)建docker-compose

runner目錄下創(chuàng)建 docker-compose.yml

vi /usr/local/docker/runner/docker-compose.yml

內(nèi)容如下:

version: '3.1'
services:
  gitlab-runner:
    build: environment
    restart: always
    container_name: gitlab-runner
    privileged: true
    volumes:
      - ./config:/etc/gitlab-runner
      - /var/run/docker.sock:/var/run/docker.sock

構(gòu)建啟動(dòng)

docker-compose up -d

啟動(dòng)后,會(huì)自動(dòng)進(jìn)行構(gòu)建

3.4、注冊(cè)Runner

需要將每一個(gè)項(xiàng)目都注冊(cè) Runner。

進(jìn)入到我們需要注冊(cè)Runner的項(xiàng)目

在這里插入圖片描述

點(diǎn)擊設(shè)置->CI/CD,在右側(cè)找到Runner,點(diǎn)擊展開

在這里插入圖片描述

可以看到這個(gè)項(xiàng)目的 Runner 的詳細(xì)信息,其中注冊(cè)令牌是我們接下來(lái)注冊(cè) Runner 時(shí)必須要用到的

在這里插入圖片描述

在 GitLab Runner 部署服務(wù)器上執(zhí)行命令

docker exec -it gitlab-runner gitlab-runner register
# 輸入 GitLab 地址
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
http://192.168.110.158:8080/

# 輸入 Gitlab-ci token
Please enter the gitlab-ci token for this runner:
78qwWqvR9xDc5_BjYpwo

# 輸入 Runner 的說(shuō)明
Please enter the gitlab-ci description for this runner:
[cdc79d8453ec]: 

# 設(shè)置 Tag
Please enter the gitlab-ci tags for this runner (comma separated):
deploy

# 選擇 runner 執(zhí)行器
Registering runner... succeeded                     runner=78qwWqvR
Please enter the executor: kubernetes, docker-ssh, parallels, virtualbox, docker-ssh+machine, docker, shell, ssh, docker+machine:
shell

Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded! 

配置完后,項(xiàng)目中會(huì)顯示一個(gè)有效可用的 runner

在這里插入圖片描述

3.4、項(xiàng)目配置

項(xiàng)目中需要添加一個(gè) .gitlab-ci.yml 文件,用于定義要運(yùn)行的腳本。

3.4.1、依賴管理模塊

剛剛在my-project-dependencies項(xiàng)目中配置了 Runner,而 my-project-dependencies 項(xiàng)目只需要將其部署到 Nexus私服中,所以此項(xiàng)目的 .gitlab-ci.yml 文件腳本內(nèi)容就只需要將其deployNexus即可。

在這里插入圖片描述

內(nèi)容如下:

stages:
  - deploy

deploy:
  stage: deploy
  script:
    - /usr/local/maven/apache-maven-3.5.3/bin/mvn deploy

項(xiàng)目結(jié)構(gòu)圖如下:

在這里插入圖片描述

提交my-project-dependencies項(xiàng)目,可以在GitLab看到我們剛剛創(chuàng)建的流水線

在這里插入圖片描述

如果狀態(tài)一直在運(yùn)行中,在設(shè)置里面的 Runner 中,勾選運(yùn)行沒(méi)有標(biāo)簽的作業(yè)

在這里插入圖片描述

3.4.2、通用模塊

my-project-common通用模塊,也需要注冊(cè)Runner,這里就不重復(fù)贅述了,參考上文。

通用模塊持續(xù)集成步驟:

在這里插入圖片描述

  • 清理
  • 打包

.gitlab-ci.yml 文件內(nèi)容如下:

stages:
  - deploy

deploy:
  stage: deploy
  script:
    - /usr/local/maven/apache-maven-3.5.3/bin/mvn clean deploy

提交my-project-common通用模塊,可以在Nexus中看到上傳的jar,持續(xù)集成成功。

在這里插入圖片描述

在這里插入圖片描述

3.4.3、服務(wù)模塊

my-project-server項(xiàng)目服務(wù)模塊,同樣需要注冊(cè)Runner。

項(xiàng)目服務(wù)模塊持續(xù)集成步驟:

在這里插入圖片描述

  • 打包構(gòu)建Docker鏡像
  • 推送Docker倉(cāng)庫(kù)
  • 運(yùn)行容器
  • 清理虛懸鏡像

.gitlab-ci.yml 文件內(nèi)容如下:

stages:
  - build
  - push
  - run
  - clean

build:
  stage: build
  script:
    - /usr/local/maven/apache-maven-3.5.3/bin/mvn clean package -Dmaven.test.skip=true
    - cp target/my-project-server-1.0.0-SNAPSHOT.jar docker
    - cd docker
    - docker build -t 192.168.110.158:5000/my-project-server .

push:
  stage: push
  script:
    - docker push 192.168.110.158:5000/my-project-server

run:
  stage: run
  script:
    - cd docker
    - docker-compose down
    - docker-compose up -d

clean:
  stage: clean
  script:
    - docker rmi $(docker images -q -f dangling=true)

docker 倉(cāng)庫(kù)地址更改為自己的IP

提交my-project-server項(xiàng)目服務(wù)模塊,查看構(gòu)建結(jié)果

在這里插入圖片描述

第一次最后一個(gè)步驟構(gòu)建失敗,是因?yàn)闆](méi)有可刪除的虛懸鏡像,導(dǎo)致刪除失敗,這個(gè)不影響

構(gòu)建成功,訪問(wèn)查詢所有用戶接口:

http://IP:8899/sys-user/get/all

在這里插入圖片描述

可以訪問(wèn)Docker倉(cāng)庫(kù),可以看到剛剛持續(xù)集成推送的鏡像

$ curl 192.168.110.158:5000/v2/_catalog
{"repositories":["my-project-server"]}

到這里,項(xiàng)目的持續(xù)集成就完成啦?。?!

到此這篇關(guān)于SpringBoot整合GitLab-CI實(shí)現(xiàn)持續(xù)集成的文章就介紹到這了,更多相關(guān)SpringBoot GitLab-CI持續(xù)集成內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 聊聊Java 中的線程中斷

    聊聊Java 中的線程中斷

    這篇文章主要介紹了Java 中的線程中斷的相關(guān)資料,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2020-11-11
  • 使用Jackson來(lái)實(shí)現(xiàn)Java對(duì)象與JSON的相互轉(zhuǎn)換的教程

    使用Jackson來(lái)實(shí)現(xiàn)Java對(duì)象與JSON的相互轉(zhuǎn)換的教程

    這篇文章主要介紹了使用Jackson來(lái)實(shí)現(xiàn)Java對(duì)象與JSON的互相轉(zhuǎn)換的教程,文中羅列了3中Jackson的使用方式,需要的朋友可以參考下
    2016-01-01
  • springBoot controller,service,dao,mapper,model層的作用說(shuō)明

    springBoot controller,service,dao,mapper,model層的作用說(shuō)明

    這篇文章主要介紹了springBoot controller,service,dao,mapper,model層的作用說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • 淺談拋出異常和捕獲異常的一些區(qū)別

    淺談拋出異常和捕獲異常的一些區(qū)別

    這篇文章主要介紹了拋出異常和捕獲異常的一些區(qū)別,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Spring boot隨機(jī)端口你都不會(huì)還怎么動(dòng)態(tài)擴(kuò)容

    Spring boot隨機(jī)端口你都不會(huì)還怎么動(dòng)態(tài)擴(kuò)容

    這篇文章主要介紹了Spring boot隨機(jī)端口你都不會(huì)還怎么動(dòng)態(tài)擴(kuò)容,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • SpringBoot實(shí)現(xiàn)文件下載的四種方式

    SpringBoot實(shí)現(xiàn)文件下載的四種方式

    本文主要介紹了SpringBoot實(shí)現(xiàn)文件下載的四種方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-11-11
  • Spring的@Transactional嵌套解讀

    Spring的@Transactional嵌套解讀

    本文通過(guò)詳細(xì)測(cè)試,探究了Spring的@Transactional注解在事務(wù)嵌套和局部回滾場(chǎng)景下的行為表現(xiàn),文中通過(guò)多個(gè)測(cè)試案例,闡述了不同傳播行為(如REQUIRES_NEW)對(duì)事務(wù)嵌套處理的影響,以及rollbackFor屬性在異常管理中的作用和限制,通過(guò)實(shí)驗(yàn)總結(jié)
    2024-11-11
  • Java中spring讀取配置文件的幾種方法示例

    Java中spring讀取配置文件的幾種方法示例

    本篇文章中主要介紹了Java中spring讀取配置文件的幾種方法示例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-02-02
  • Java設(shè)計(jì)模式之java觀察者模式詳解

    Java設(shè)計(jì)模式之java觀察者模式詳解

    這篇文章主要介紹了Java經(jīng)典設(shè)計(jì)模式之觀察者模式,簡(jiǎn)單分析了觀察者模式的概念、原理并結(jié)合實(shí)例形式給出了java觀察者模式的具體用法與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2021-09-09
  • 基于html5+java實(shí)現(xiàn)大文件上傳實(shí)例代碼

    基于html5+java實(shí)現(xiàn)大文件上傳實(shí)例代碼

    本文通過(guò)一段實(shí)例代碼給大家介紹基于html5+java實(shí)現(xiàn)大文件上傳,涉及到html5 java 文件上傳相關(guān)知識(shí),感興趣的朋友一起學(xué)習(xí)吧
    2016-01-01

最新評(píng)論

壶关县| 恩平市| 新河县| 拜城县| 武穴市| 潞西市| 澎湖县| 安阳市| 乳山市| 江口县| 巴彦淖尔市| 黎平县| 天峻县| 巴林右旗| 巴马| 龙门县| 尖扎县| 巴塘县| 桓仁| 仲巴县| 巴林右旗| 山西省| 彭阳县| 扶风县| 鄢陵县| 新巴尔虎左旗| 凯里市| 云浮市| 青川县| 资兴市| 类乌齐县| 武城县| 苏尼特左旗| 广宗县| 巫溪县| 平和县| 洛浦县| 博罗县| 奇台县| 盈江县| 石景山区|