日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

把代码和环境做成docker镜像_Jenkins把GitHub项目做成Docker镜像

發布時間:2024/3/13 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 把代码和环境做成docker镜像_Jenkins把GitHub项目做成Docker镜像 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文是《Jenkins流水線(pipeline)實戰》系列的第三篇,前面已對Jenkins流水線有了基本認識,也試過從GitHub下載pipeline腳本并執行,今天的實戰是編寫一段pipeline腳本,該腳本的作用是從GitHub下載一個Java項目(Maven構建的),然后編輯構建此項目,并將構建結果制作成Docker鏡像并且推送到私有鏡像倉庫;

系列文章地址

環境信息

為了快速完成Jenkins部署,本次實戰用到了Docker,請在實戰前準備好以下環境:

操作系統:Ubuntu 18.04.2 LT

Jenkins:2.176.3

Docker:19.03.1

私有鏡像倉庫:Harbor 1.9.0

實戰內容簡介

今天的實戰功能如下圖所示:

關于Docker私有鏡像倉庫Harbor

構建好的Docker鏡像,會被推送到Docker鏡像倉庫Harbor,此倉庫是我自己在本地搭建的,詳細搭建步驟請參考《CentOS部署Harbor鏡像倉庫》

如果您有hub.docker.com網站的賬號,也可以直接將鏡像推送到此網站,這樣大家都能使用到您制作的鏡像了。

關于本次用到的GitHub項目

本次實戰會將一個GitHub上的項目先編譯,再構建成Docker鏡像,我這邊準備了一個基于Maven構建的SpringBoot項目,這是個Hello world級別的工程,唯一特別之處是pom.xml中用到了Jib插件,用來將SpringBoot項目構建成Docker鏡像。

該項目的源碼可以從GitHub上下載,地址和鏈接信息如下表所示:

| 名稱 | 鏈接 | 備注|

| :-------- | :----| :----|

| 項目主頁| https://github.com/zq2599/blog_demos | 該項目在GitHub上的主頁 |

| git倉庫地址(https)| https://github.com/zq2599/blog_demos.git | 該項目源碼的倉庫地址,https協議 |

| git倉庫地址(ssh)| git@github.com:zq2599/blog_demos.git | 該項目源碼的倉庫地址,ssh協議 |

這個git項目中有多個文件夾,本章的應用在hellojib文件夾下,如下圖所示:

來看看此工程的pom.xml,重點是Jib插件部分,如下所示:

com.google.cloud.tools

jib-maven-plugin

1.3.0

openjdk:8-jdk-stretch

bolingcavalry/hellojib:${project.version}

-Xms4g

-Xmx4g

8080

使用Jib將SpringBoot項目構建成Docker鏡像的更多信息,請參考《Docker與Jib(maven插件版)實戰》;

用私有的GitHub倉庫來實戰

考慮到實際工作中大多數源碼都沒有對外公開,因此我這里也建了個私有GitHub倉庫,地址是:https://github.com/zq2599/pipeline.git ,將前面提到的的hellojib工程所有源碼都放入此倉庫;

pipeline下載私有倉庫的源碼時需要身份驗證,驗證方式后面會說到。

這個私有倉庫里面并不只有hellojib一個工程,倉庫的根目錄下的hellojib目錄里面才是構建鏡像會用到的Maven工程:

創建Jenkins任務

創建一個名為build-image流水線任務:

接來下我們要借助Jenkins提供的語法工具來生成下載GitHub的pipeline代碼,如下圖,在設置任務的頁面點擊紅框中的流水線語法按鈕:

現在進入的頁面是Jenkins輔助我們編寫pipeline腳本的地方,請按照下圖操作:

在彈出的窗口配置一個保存了GitHub賬號和密碼的秘鑰配置項,請按照下圖的數字順序操作:

如下圖紅框所示,在下拉菜單中選擇剛才創建的秘鑰配置:

此時可以發現之前的紅色錯誤提示已經消失(因為鑒權通過了),點擊下圖紅框中的按鈕即可生成pipeline源碼:

完整的pipeline腳本內容如下,其中Checkout階段從GitHub下載的那段腳本,就是上圖中自動生成的:

pipeline {

agent any

tools {

maven 'mvn-3.6.2'

}

stages {

stage('Checkout') {

steps {

echo '從GitHub下載項目源碼'

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 '開始編譯構建'

sh 'cd hellojib && mvn clean compile -U -DskipTests jib:dockerBuild'

}

}

stage('Push') {

steps {

echo '將本地Docker鏡像推送到Harbor鏡像倉庫'

echo '給當前鏡像設置帶有Harbor地址和項目名稱的Tag,這樣才能推送到Harbor的library項目之下'

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成功,開始推送鏡像'

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 '清理完畢'

}

}

}

}

將上面的pipeline腳本填寫到build-image任務的流水線腳本輸入框中,如下圖:

點擊下圖紅框中的立即構建即可開始執行流水線任務:

如果配置無誤的話任務可以執行成功,如下圖,每個階段的執行結果和耗時都展現出來了:

如果您的任務構架失敗了,點擊下圖紅框中的小圓球,會打開任務執行的詳細日志,用來檢查錯誤原因:

登錄Harbor網站,可以看到推送過來的鏡像:

### 把pipeline腳本放在GitHub上

今天的實戰中,編寫的pipeline腳本是保存在任務的設置中的,還記得 《讓Jenkins執行GitHub上的pipeline腳本》一篇的內容么?您可以嘗試將今天的pipeline腳本存放在GitHub上,這樣從構建腳本到業務項目都實現了版本控制,在多人開發階段更加實用。

至此,基于pipeline操作的GitHub項目的實戰就完成了,如果您正在尋求容器化環境的CI && CD方案,愿本文能給您提供一些參考。

文章來源: www.cnblogs.com,作者:zq2599,版權歸原作者所有,如需轉載,請聯系作者。

原文鏈接:https://www.cnblogs.com/bolingcavalry/p/11568774.html

總結

以上是生活随笔為你收集整理的把代码和环境做成docker镜像_Jenkins把GitHub项目做成Docker镜像的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。