国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

DevOps系列文章 之 SpringBoot整合GitLab-CI實現(xiàn)持續(xù)集成

這篇具有很好參考價值的文章主要介紹了DevOps系列文章 之 SpringBoot整合GitLab-CI實現(xiàn)持續(xù)集成。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

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

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

一、概述

DevOps系列文章 之 SpringBoot整合GitLab-CI實現(xiàn)持續(xù)集成,spring boot,devops,gitlab

1.1、什么是CI/CD

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

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

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

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

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

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

通過持續(xù)交付,可以隨時將構(gòu)建的軟件部署到生產(chǎn)環(huán)境??梢允謩佑|發(fā)部署,也可以進行自動化部署。

二、CI/CD流水線

2.1、Pipeline

DevOps系列文章 之 SpringBoot整合GitLab-CI實現(xiàn)持續(xù)集成,spring boot,devops,gitlab

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

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

2.2、Stages

DevOps系列文章 之 SpringBoot整合GitLab-CI實現(xiàn)持續(xù)集成,spring boot,devops,gitlab

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

Stages 有以下特點:

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

2.3、Jobs

DevOps系列文章 之 SpringBoot整合GitLab-CI實現(xiàn)持續(xù)集成,spring boot,devops,gitlab

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

Jobs 有以下特點:

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

2.4、Runners

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

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

三、安裝GitLab Runner

3.1、環(huán)境準備

創(chuàng)建目錄

1

mkdir -p /usr/local/docker/runner

1

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

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

1

2

3

4

5

6

7

8

$ 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é)點,否則項目 deploy 時會失敗

3.2、創(chuàng)建Dockerfile

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

1

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

內(nèi)容如下:

1

2

3

4

5

6

7

8

{

??"registry-mirrors": [

????"https://mirror.ccs.tencentyun.com"

??],

??"insecure-registries": [

????"192.168.110.158:5000"

??]

}

  • registry-mirrors:為鏡像加速地址,這里是使用的騰訊云的鏡像加速地址。
  • insecure-registries:Docker倉庫的IP。

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

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

1

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

內(nèi)容如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

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

1

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

內(nèi)容如下:

1

2

3

4

5

6

7

8

9

10

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)建啟動

1

docker-compose up -d

啟動后,會自動進行構(gòu)建

3.4、注冊Runner

需要將每一個項目都注冊 Runner。

進入到我們需要注冊Runner的項目

DevOps系列文章 之 SpringBoot整合GitLab-CI實現(xiàn)持續(xù)集成,spring boot,devops,gitlab

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

DevOps系列文章 之 SpringBoot整合GitLab-CI實現(xiàn)持續(xù)集成,spring boot,devops,gitlab

可以看到這個項目的 Runner 的詳細信息,其中注冊令牌是我們接下來注冊 Runner 時必須要用到的

DevOps系列文章 之 SpringBoot整合GitLab-CI實現(xiàn)持續(xù)集成,spring boot,devops,gitlab

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

1

docker exec -it gitlab-runner gitlab-runner register

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

# 輸入 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 的說明

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!

配置完后,項目中會顯示一個有效可用的 runner

DevOps系列文章 之 SpringBoot整合GitLab-CI實現(xiàn)持續(xù)集成,spring boot,devops,gitlab

3.4、項目配置

項目中需要添加一個?.gitlab-ci.yml?文件,用于定義要運行的腳本。

3.4.1、依賴管理模塊

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

DevOps系列文章 之 SpringBoot整合GitLab-CI實現(xiàn)持續(xù)集成,spring boot,devops,gitlab

內(nèi)容如下:

1

2

3

4

5

6

7

stages:

??- deploy

deploy:

??stage: deploy

??script:

????- /usr/local/maven/apache-maven-3.5.3/bin/mvn deploy

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

DevOps系列文章 之 SpringBoot整合GitLab-CI實現(xiàn)持續(xù)集成,spring boot,devops,gitlab

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

DevOps系列文章 之 SpringBoot整合GitLab-CI實現(xiàn)持續(xù)集成,spring boot,devops,gitlab

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

DevOps系列文章 之 SpringBoot整合GitLab-CI實現(xiàn)持續(xù)集成,spring boot,devops,gitlab

3.4.2、通用模塊

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

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

DevOps系列文章 之 SpringBoot整合GitLab-CI實現(xiàn)持續(xù)集成,spring boot,devops,gitlab

  • 清理
  • 打包

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

1

2

3

4

5

6

7

stages:

??- deploy

deploy:

??stage: deploy

??script:

????- /usr/local/maven/apache-maven-3.5.3/bin/mvn clean deploy

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

DevOps系列文章 之 SpringBoot整合GitLab-CI實現(xiàn)持續(xù)集成,spring boot,devops,gitlab

DevOps系列文章 之 SpringBoot整合GitLab-CI實現(xiàn)持續(xù)集成,spring boot,devops,gitlab

3.4.3、服務(wù)模塊

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

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

DevOps系列文章 之 SpringBoot整合GitLab-CI實現(xiàn)持續(xù)集成,spring boot,devops,gitlab

  • 打包構(gòu)建Docker鏡像
  • 推送Docker倉庫
  • 運行容器
  • 清理虛懸鏡像

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

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 倉庫地址更改為自己的IP

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

DevOps系列文章 之 SpringBoot整合GitLab-CI實現(xiàn)持續(xù)集成,spring boot,devops,gitlab

第一次最后一個步驟構(gòu)建失敗,是因為沒有可刪除的虛懸鏡像,導(dǎo)致刪除失敗,這個不影響

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

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

DevOps系列文章 之 SpringBoot整合GitLab-CI實現(xiàn)持續(xù)集成,spring boot,devops,gitlab

可以訪問Docker倉庫,可以看到剛剛持續(xù)集成推送的鏡像

1

2

$ curl 192.168.110.158:5000/v2/_catalog

{"repositories":["my-project-server"]}

到這里,項目的持續(xù)集成就完成啦?。?!文章來源地址http://www.zghlxwxcb.cn/news/detail-649043.html

到了這里,關(guān)于DevOps系列文章 之 SpringBoot整合GitLab-CI實現(xiàn)持續(xù)集成的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • GitLab-CI 指南

    GitLab-CI 指南

    前置工作 部署GitLab 部署GitLab-Runner 注冊Runner到GitLab 在項目工程根目錄下創(chuàng)建一

    2024年02月11日
    瀏覽(19)
  • gitlab-ci相關(guān)部署踩坑及要點記錄

    最近在搞cicd相關(guān)的事情,在這個過程中遇到了一些疑惑,順便記錄下來,如果對正在有相同迷惑的同學(xué)有幫助的話,也是一件很好的事情。 準備工作: 安裝gitlab,這個安裝網(wǎng)上太多了,可以使用二進制的方式安裝,也可以使用docker直接運行。 安裝gitlab-runner,這個主要就是

    2024年01月22日
    瀏覽(22)
  • gitlab-ci.yml 關(guān)鍵字參考 (FREE)

    本文檔列出了 GitLab? .gitlab-ci.yml ?文件的配置選項。 有關(guān) GitLab CI/CD 的快速介紹,請遵循快速入門指南。 有關(guān)示例集合,請參閱 GitLab CI/CD 示例。 要查看企業(yè)使用的大型? .gitlab-ci.yml ?文件,請參閱gitlab的.gitlab-ci.yml文件。 當在編輯您的? .gitlab-ci.yml ?文件時,可以使用?CI

    2024年02月09日
    瀏覽(19)
  • CI/CD:GitLab-CI 自動化集成/部署 JAVA微服務(wù)的應(yīng)用合集

    CI/CD:GitLab-CI 自動化集成/部署 JAVA微服務(wù)的應(yīng)用合集

    日常開發(fā)中,每次代碼編寫完成后,都需要手動打包,并且上傳服務(wù)器,無論本地打包的時間或者上傳文件到服務(wù)器都需要花費大量的時間來完成,都是重復(fù)的并且毫無意義,應(yīng)該將時間花費在更有價值的時間上;所以編寫這篇文章,將自己收集、搭建、測試的步驟或經(jīng)驗匯

    2024年02月08日
    瀏覽(23)
  • gitlab-ci.yml關(guān)鍵字(五)tags 、only 、when

    gitlab-ci.yml關(guān)鍵字(五)tags 、only 、when

    使用Tags用于選擇Runner的標簽列表 我們在創(chuàng)建Runner 時可以給該Runner打上特定的標簽,那后續(xù)流水線中的job如果需要使用特定標簽的Runner執(zhí)行時,就需要使用tags來標記 比如這里有兩個標簽的Runner 也可以對當前的runner進行一些配置上的設(shè)置 使用only / except 來控制何時創(chuàng)建

    2024年02月03日
    瀏覽(43)
  • error: unable to unlink old ‘.gitlab-ci.yml‘: Permission denied

    #gitlab-runner 執(zhí)行代碼git pull origin xxx 更新時候報 error: unable to unlink old ‘.gitlab-ci.yml’: Permission denied 問題環(huán)境:centos 部署gitlab-runner 執(zhí)行腳本方式 選的shell 產(chǎn)生問題的原因:gitlab-runner程序進程占用鎖定了.gitlab-ci.yml 解決方法:gitlab-runner stop 停止服務(wù)后,切換到 執(zhí)行g(shù)itlab-runn

    2024年02月10日
    瀏覽(23)
  • Devops系列六(CI篇之jenkinsfile)jenkins將gitlab helm yaml和argocd 串聯(lián),自動部署到K8S

    Devops系列六(CI篇之jenkinsfile)jenkins將gitlab helm yaml和argocd 串聯(lián),自動部署到K8S

    上文我們說了pipeline,已為本文鋪路不少,接下里就是將之串聯(lián)起來。 先想說下,為什么是jenkinsfile, 因為jenkins job還支持pipeline方式。 這種方式,不建議實際使用,僅限于測試或調(diào)試groovy代碼。 下面貼出來,我們的使用方式。好處是:采用分布式的思想,改動git上的jenkinsf

    2024年02月13日
    瀏覽(25)
  • Devops系列五(CI篇之pipeline libraray)jenkins將gitlab helm yaml和argocd 串聯(lián),自動部署到K8S

    Devops系列五(CI篇之pipeline libraray)jenkins將gitlab helm yaml和argocd 串聯(lián),自動部署到K8S

    本文是CI篇的上文,因為上一篇已經(jīng)作了總體設(shè)計,就不再贅述,有需要的請看前文。 我們將演示,使用CI工具–jenkins,怎么和CD工具–argocd串聯(lián),重點是在Jenkins該怎么做。準備工作和argocd等相關(guān)事項,在前文已鋪墊ok。 Jenkins,我們是使用k8s來部署的一個master-slave結(jié)構(gòu)的集群

    2024年02月13日
    瀏覽(33)
  • k8s部署gin-vue-admin框架、gitlab-ci、jenkins pipeline 、CICD

    k8s部署gin-vue-admin框架、gitlab-ci、jenkins pipeline 、CICD

    測試環(huán)境使用的jenkins 正式環(huán)境使用的gitlab-ci 創(chuàng)建yaml文件 啟動服務(wù) 配置jenkins 配置nginx jenkins機器上的dockerfile yaml其它都一樣除了svc,因為svc需要綁定slb地址 啟動 配置dockerfile 配置nginx 結(jié)果圖 原文

    2024年02月08日
    瀏覽(25)
  • DevOps系列文章 之 Springboot單元測試

    在沒有代碼生成工具或嘗試一門新的 ORM 框架時,當我們希望不去另外寫 Service 和 Controller 來驗證 DAO 層的代碼不希望只通過接口請求的方式來驗證時,這時候單元測試的方式就可以幫助我們滿足這一需求。 在我們開發(fā)Web應(yīng)用時,經(jīng)常會直接去觀察結(jié)果進行測試。雖然也是一

    2024年02月15日
    瀏覽(18)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包