上篇文章我們已經(jīng)完成了流水線的創(chuàng)建,并且能夠編譯一個(gè) SpringBoot
項(xiàng)目
今天我將繼續(xù)完善這條流水線,將我們編譯好的 jar
包構(gòu)建成 docker 鏡像点把,并上傳到 DockerHub
倉(cāng)庫(kù)
功能梳理
-
前面我們已經(jīng)創(chuàng)建了
gocd-springboot-demo-pipelines
流水線(Pipeline)示辈,包含一個(gè)build
階段(Stage)取胎,包含一個(gè)build
任務(wù)(Job)闽晦,執(zhí)行了一條命令(Task)./gradlew clean build
劫窒,這條命令會(huì)生成一個(gè)jar
包
-
這個(gè)
jar
包會(huì)存儲(chǔ)在gocd-agent
容器的/godata/pipelines/Pipeline 名稱/項(xiàng)目名稱/build/libs
下
- 這里的項(xiàng)目名稱是在 GoCD 整行記(三):創(chuàng)建流水線配置
Part 1: Material
時(shí)設(shè)置的Alternate Checkout Path
屬性
- 這里的項(xiàng)目名稱是在 GoCD 整行記(三):創(chuàng)建流水線配置
將生成的
jar
包保存到本地GoCD
服務(wù)的Artifacts 倉(cāng)庫(kù)
-
新增一個(gè)階段
build-publish-docker-image
本今,完成以下工作- 從本地
Artifacts 倉(cāng)庫(kù)
拉取jar
包 - 將
jar
包構(gòu)建成docker
鏡像 - 將鏡像推送到你的
DockerHub
倉(cāng)庫(kù)
- 從本地
配置 Artifact Stores
在 GoCD 整行記(零):基于 Docker 打造 CI/CD 流水線這篇文章中,我們?cè)趩?dòng) gocd-server
時(shí)已經(jīng)安裝了一個(gè)插件 docker-registry-artifact-plugin
主巍,這個(gè)插件可以幫助我們將 docker
鏡像推送到 DockerHub
倉(cāng)庫(kù)冠息,使用前我們需要對(duì)這個(gè)插件配置一下
-
ADMIN
->Artifact Stores
進(jìn)入配置頁(yè)面
-
點(diǎn)擊
Add
按鈕,開始配置
- Registry Type: Others
- Docker Registry Url: https://index.docker.io/v1/
- Username: 你的 DockerHub 用戶名
- Password: 你的 DockerHub 密碼
點(diǎn)擊
Save
按鈕孕索,保存配置
修改流水線配置
保存生成的 jar 包
- 進(jìn)入
gocd-springboot-demo-pipelines -> build -> build -> ARTIFACTS
配置界面
- 選中
Build
- 點(diǎn)擊
Add Artifact
按鈕
-
配置 Artifact
- Source:這里要填寫的是
jar
包的位置逛艰,參考:gocd-springboot-demo/build/libs/gocd-springboot-demo.jar
- Destination:填寫保存到
gocd-server
容器的位置:參考gocd-springboot-demo
- 這兩個(gè)路徑都是相對(duì)路徑
- Source:這里要填寫的是
點(diǎn)擊
SAVE
按鈕,保存配置運(yùn)行一下
Pipeline
搞旭,驗(yàn)證配置結(jié)果
根據(jù)圖中的路徑散怖,可以看到生成的 jar
包已經(jīng)在 Artifacts
中了
新增構(gòu)建 docker 鏡像階段
- 進(jìn)入
pipeline
的Stage
編輯界面菇绵,點(diǎn)擊Add new stage
按鈕
-
配置新創(chuàng)建的
Stage
,同時(shí)創(chuàng)建一個(gè)的Job
和Task
镇眷,這個(gè)Task
功能就是構(gòu)建一個(gè)jar
包的docker
鏡像注意咬最,此處執(zhí)行的命令依賴
Dockerfile
去構(gòu)建docker
鏡像,gocd-springboot-demo 工程已經(jīng)包含了這個(gè)文件
Stage name:build-publish-docker-image
Job Name:build-docker-image
Task Type:Custom Command
Command:docker
-
Arguments:
build -t hezhong0711/gocd-springboot-demo # 此處替換為你創(chuàng)建 DockerHub repository 名稱 .
Working Directory:這個(gè)是保存代碼的路徑欠动,參考:gocd-springboot-demo
點(diǎn)擊
Save
按鈕-
進(jìn)入剛剛創(chuàng)建的
Tasks
配置界面
在構(gòu)建
docker
鏡像前永乌,我們需要先拉取jar
包,因此具伍,需要新增一個(gè)Task
選中
Fetch Artifact
翅雏,點(diǎn)擊Add Task
按鈕
- Type of Fetch Artifact: GoCD
- Pipeline:gocd-springboot-demo-pipelines
- Stage:build
- Job:build
- Source:此處填寫的是
jar
包保存的路徑,參考:gocd-springboot-demo/gocd-springboot-demo.jar
- 勾選上
Source is a file
- Destination:拉取
jar
包的保存路徑沿猜,參考:gocd-springboot-demo/build/libs
- 點(diǎn)擊
Save
按鈕保存枚荣,按住 Tasks 前面的 8個(gè)灰點(diǎn)標(biāo)志修改一下順序,點(diǎn)擊Save
保存修改
- 運(yùn)行一下
pipeline
查看運(yùn)行結(jié)果
-
查看編譯好的
docker
鏡像進(jìn)入
gocd-agent
容器啼肩,執(zhí)行docker images
查看編譯好的鏡像
上傳 docker
鏡像
-
進(jìn)入
gocd-springboot-demo-pipelines -> build-publish-docker-image -> build-docker-image -> Artifacts
配置界面
選中
External
橄妆,點(diǎn)擊Add Artifact
按鈕
- id:參考:docker
- Store id:選中
docker-hub
這是我們?cè)谖恼麻_支配置的Artifact Stores
- Image:這個(gè)是你在
DockerHub
上創(chuàng)建的repository
點(diǎn)擊
SAVE
按鈕,保存配置-
運(yùn)行
Pipeline
祈坠,查看結(jié)果
日志中可以看到害碾,
GoCD
長(zhǎng)在上傳docker
鏡像任務(wù)完成后,可以在
DockerHub
上查看到你上傳的docker
鏡像
至此赦拘,我們已經(jīng)成功讓 GoCD
將我們的 SpringBoot
工程自動(dòng)編譯成 jar
包慌随,然后構(gòu)建成 docker
鏡像,最后上傳到 DockerHub
鏡像倉(cāng)庫(kù)躺同。
后續(xù)文章我們將完成最后一步阁猜,將已經(jīng)構(gòu)建好的 docker
鏡像部署到服務(wù)器上。