github镜像网站_Jenkins把GitHub项目做成Docker镜像
本文是《Jenkins流水線(pipeline)實(shí)戰(zhàn)》系列的第三篇,前面已對(duì)Jenkins流水線有了基本認(rèn)識(shí),也試過(guò)從GitHub下載pipeline腳本并執(zhí)行,今天的實(shí)戰(zhàn)是編寫(xiě)一段pipeline腳本,該腳本的作用是從GitHub下載一個(gè)Java項(xiàng)目(Maven構(gòu)建的),然后編輯構(gòu)建此項(xiàng)目,并將構(gòu)建結(jié)果制作成Docker鏡像并且推送到私有鏡像倉(cāng)庫(kù);
系列文章地址
環(huán)境信息
為了快速完成Jenkins部署,本次實(shí)戰(zhàn)用到了Docker,請(qǐng)?jiān)趯?shí)戰(zhàn)前準(zhǔn)備好以下環(huán)境:
實(shí)戰(zhàn)內(nèi)容簡(jiǎn)介
今天的實(shí)戰(zhàn)功能如下圖所示:
關(guān)于Docker私有鏡像倉(cāng)庫(kù)Harbor
構(gòu)建好的Docker鏡像,會(huì)被推送到Docker鏡像倉(cāng)庫(kù)Harbor,此倉(cāng)庫(kù)是我自己在本地搭建的,詳細(xì)搭建步驟請(qǐng)參考CentOS部署Harbor鏡像倉(cāng)庫(kù) ,如果您有hub.docker.com網(wǎng)站的賬號(hào),也可以直接將鏡像推送到此網(wǎng)站,這樣大家都能使用到您制作的鏡像了。
關(guān)于本次用到的GitHub項(xiàng)目
本次實(shí)戰(zhàn)會(huì)將一個(gè)GitHub上的項(xiàng)目先編譯,再構(gòu)建成Docker鏡像,我這邊準(zhǔn)備了一個(gè)基于Maven構(gòu)建的SpringBoot項(xiàng)目,這是個(gè)Hello world級(jí)別的工程,唯一特別之處是pom.xml中用到了Jib插件,用來(lái)將SpringBoot項(xiàng)目構(gòu)建成Docker鏡像。
該項(xiàng)目的源碼可以從GitHub上下載,地址是:https://github.com/zq2599/blog_demos.git
這個(gè)git項(xiàng)目中有多個(gè)文件夾,本章的應(yīng)用在hellojib文件夾下,如下圖所示:
來(lái)看看此工程的pom.xml,重點(diǎn)是Jib插件部分,如下所示:
com.google.cloud.tools jib-maven-plugin 1.3.0openjdk:8-jdk-stretchbolingcavalry/hellojib:${project.version}-Xms4g-Xmx4g8080使用Jib將SpringBoot項(xiàng)目構(gòu)建成Docker鏡像的更多信息,請(qǐng)參考https://blog.csdn.net/boling_cavalry/article/details/94355659;
用私有的GitHub倉(cāng)庫(kù)來(lái)實(shí)戰(zhàn)
創(chuàng)建Jenkins任務(wù)
1. 創(chuàng)建一個(gè)名為流水線任務(wù):
2. 接來(lái)下我們要借助Jenkins提供的語(yǔ)法工具來(lái)生成下載GitHub的pipeline代碼,如下圖,在設(shè)置任務(wù)的頁(yè)面點(diǎn)擊紅框中的按鈕:
3. 現(xiàn)在進(jìn)入的頁(yè)面是Jenkins輔助我們編寫(xiě)pipeline腳本的地方,請(qǐng)按照下圖操作:
4. 在彈出的窗口配置一個(gè)保存了GitHub賬號(hào)和密碼的秘鑰配置項(xiàng),請(qǐng)按照下圖的數(shù)字順序操作:
5. 如下圖紅框所示,在下拉菜單中選擇剛才創(chuàng)建的秘鑰配置:
6. 此時(shí)可以發(fā)現(xiàn)之前的紅色錯(cuò)誤提示已經(jīng)消失(因?yàn)殍b權(quán)通過(guò)了),點(diǎn)擊下圖紅框中的按鈕即可生成pipeline源碼:
7. 完整的pipeline腳本內(nèi)容如下,其中階段從GitHub下載的那段腳本,就是上圖中自動(dòng)生成的:
pipeline { agent any tools { maven 'mvn-3.6.2' } stages { stage('Checkout') { steps { echo '從GitHub下載項(xiàng)目源碼' checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'git-account-passwd', url: 'https://github.com/zq2599/pipeline.git']]]) } } stage('Build') { steps { echo '開(kāi)始編譯構(gòu)建' sh 'cd hellojib && mvn clean compile -U -DskipTests jib:dockerBuild' } } stage('Push') { steps { echo '將本地Docker鏡像推送到Harbor鏡像倉(cāng)庫(kù)' echo '給當(dāng)前鏡像設(shè)置帶有Harbor地址和項(xiàng)目名稱的Tag,這樣才能推送到Harbor的library項(xiàng)目之下' sh 'docker tag bolingcavalry/hellojib:0.0.1-SNAPSHOT 192.168.50.167/library/hellojib:0.0.1-SNAPSHOT' echo '登錄Harbor' sh 'docker login 192.168.50.167 -u admin -p Harbor12345' echo '登錄chengg成功,開(kāi)始推送鏡像' sh 'docker push 192.168.50.167/library/hellojib:0.0.1-SNAPSHOT' } } stage('Clean') { steps { echo '清理Maven工程' sh 'cd hellojib && mvn clean' echo '刪除鏡像' sh 'docker rmi bolingcavalry/hellojib:0.0.1-SNAPSHOT 192.168.50.167/library/hellojib:0.0.1-SNAPSHOT' echo '清理完畢' } } }}8. 將上面的pipeline腳本填寫(xiě)到build-image任務(wù)的流水線腳本輸入框中,如下圖:
9. 點(diǎn)擊下圖紅框中的立即構(gòu)建即可開(kāi)始執(zhí)行流水線任務(wù):
10. 如果配置無(wú)誤的話任務(wù)可以執(zhí)行成功,如下圖,每個(gè)階段的執(zhí)行結(jié)果和耗時(shí)都展現(xiàn)出來(lái)了:
11. 如果您的任務(wù)構(gòu)架失敗了,點(diǎn)擊下圖紅框中的小圓球,會(huì)打開(kāi)任務(wù)執(zhí)行的詳細(xì)日志,用來(lái)檢查錯(cuò)誤原因:
12. 登錄Harbor網(wǎng)站,可以看到推送過(guò)來(lái)的鏡像:
把pipeline腳本放在GitHub上
今天的實(shí)戰(zhàn)中,編寫(xiě)的pipeline腳本是保存在任務(wù)的設(shè)置中的,還記得 讓Jenkins執(zhí)行GitHub上的pipeline腳本一文的內(nèi)容么?您可以嘗試將今天的pipeline腳本存放在GitHub上,這樣從構(gòu)建腳本到業(yè)務(wù)項(xiàng)目都實(shí)現(xiàn)了版本控制,在多人開(kāi)發(fā)階段更加實(shí)用。
至此,基于pipeline操作的GitHub項(xiàng)目的實(shí)戰(zhàn)就完成了,如果您正在尋求容器化環(huán)境的CI && CD方案,愿本文能給您提供一些參考。
歡迎關(guān)注我的公眾號(hào):程序員欣宸
總結(jié)
以上是生活随笔為你收集整理的github镜像网站_Jenkins把GitHub项目做成Docker镜像的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: unity3D -- 压缩图片
- 下一篇: 抓住那头牛(BFS广搜)