聲明,本文是基于:jenkins流水線(jenkinsfile)詳解,保姆式教程_我認不到你的博客-CSDN博客,以下內容介紹通過 Commit ID 拉取 git 歷史版本
Commit ID (節(jié)點號)是什么?(下圖是gitee的信息)
我的理解是:我們每次提交git的時候,除了保存我們修改的代碼外,也緩存了之前提交的代碼,可以用于我們查看更新的內容,而Commit ID 就是為了識別這些歷史的提交版本
一、設置字符參數(shù)
我這里只展示了一個關于 git 版本的字符信息,也是本文最重要的一個,其他都不是必要的
其他的我設置了
name
和tag
來規(guī)定docker制作鏡像的名字和版本
二、編寫流水線代碼
1、點擊流水線語法
2、選擇checkout:Check out from version control
再選擇git,后面填寫自己 git 項目的 url 這個指的不是 網(wǎng)頁的那個 url , 是你拉取項目
git clone url
的這個 url ,再添加憑證
3、其他不用管,點擊生成流水線腳本就行,后面我會講具體有什么用
4、我的 Jenkins pipline
腳本
pipeline {
// 指定任務在哪個集群節(jié)點中執(zhí)行,any表示任意節(jié)點
agent any
// 聲明全局變量,方便后面修改使用
environment {
// 源jar名稱,mvn打包之后,target目錄下的jar包名稱
JAR_NAME='main*'
// jenkins下的目錄
JENKINS_HOME='/var/jenkins_home/workspace/graduationProject'
}
// 工具,這是我在 jenkins 的全局配置配的,之前的博客有講過
tools{
maven 'maven-3.8.4'
}
stages {
stage('拉取代碼') {
steps {
// 清除工作空間
deleteDir()
// 拉取代碼 gitTag 是 之前自定義的 字符串參數(shù)
checkout([$class: 'GitSCM', branches: [[name: '${gitTag}']], extensions: [], userRemoteConfigs: [[credentialsId: '生成的', url: 'git的url']]])
echo '拉取成功'
}
}
stage('執(zhí)行構建') {
steps {
// sh "mvn --version"
sh "mvn clean package"
echo '構建完成'
}
}
stage('把jar包構建為docker鏡像并運行') {
steps {
sh '''#!/bin/bash
// 進入 jar 包所在目錄 , 好配合 Dockerfile 生成 Docker 鏡像
cd $JENKINS_HOME/admin/target
// 把Dockerfile 復制到 jar 包所在目錄 ,好配合 Dockerfile 生成 Docker 鏡像
cp $JENKINS_HOME/Dockerfile $JENKINS_HOME/admin/target
# 修改文件權限 JAR_NAME
chmod 755 $JAR_NAME.jar
# name 和 tag 是我 又設置的 一個字符參數(shù) ,步驟和 gitTag 是一樣的
echo "停止容器"
docker stop $name
echo "刪除容器"
docker rm $name
echo "刪除鏡像"
docker rmi $name
# 這個點(.)就是指的本目錄下的 Dockerfile 文件,而
echo "打包鏡像"
docker build -t $name:$tag .
echo "運行鏡像"
docker run -d -p 9999:9600 --name $name $name:$tag
'''
echo '運行成功'
}
}
}
}
三、2.2中生成參數(shù)的講解
checkout: Check out from version control 文檔:Pipeline: SCM Step (jenkins.io)
GitSCM詳細參數(shù)的可以看官網(wǎng)的教程:scmGit (jenkins.io),雖然官網(wǎng)叫scmGit,但使用的時候要用GitSCM,不然會報錯哈
// doGenerateSubmoduleConfigurations 可要可不要
// submoduleCfg 可要可不要
// extensions 也可不要
checkout(
[$class: 'GitSCM',
doGenerateSubmoduleConfigurations: false,
submoduleCfg: [],
extensions: [[$class: 'CloneOption', depth: 1, noTags: false, reference: '', shallow: true]],
branches: [[name: '${gitTag}']],
userRemoteConfigs: [[url: "git的url", credentialsId: "生成的"]]]
)
// 簡化
checkout(
[$class: 'GitSCM',
branches: [[name: '${gitTag}']],
userRemoteConfigs: [[url: "git的url", credentialsId: "生成的"]]]
)
GitSCM
:指定拉取git的源碼(必填)
doGenerateSubmoduleConfigurations
: boolean(可選)
- 刪除了用于測試 git 子模塊版本組合的工具。在 git 插件 4.6.0 中刪除。忽略用戶提供的值,并始終用作其值。
false
submoduleCfg
(可選)刪除了用于測試 git 子模塊版本組合的工具。在 git 插件 4.6.0 中刪除。忽略用戶提供的值,并始終使用空值。
extensions
:擴展為不同用途添加新行為或修改現(xiàn)有插件行為,幫助用戶更精確地調整插件行為以滿足使用需求。參數(shù)項比較多,挑一些常用的說明一下。(可選)
- $class: ‘CloneOption’:用于定義clone時的一些參數(shù)配置。
- depth:int類型,設置淺克隆深度,通常設置為1用于加快拉取,如果想要常規(guī)clone,則刪除此配置項。
- noTags:bool類型,取消選擇此選項可在沒有標簽的情況下執(zhí)行克隆,從而在您只想訪問 refspec 指定的內容時節(jié)省時間和磁盤空間。
- reference:String類型,指定包含存儲庫的文件夾,Git 將在克隆操作期間將其用作參考。如果文件夾在執(zhí)行克隆的控制器或代理上不可用,則將忽略此選項。
- shallow:bool類型,執(zhí)行淺克隆,這樣 git 就不會下載項目的歷史記錄,可以節(jié)省時間和磁盤空間。
- timeout:int類型,指定克隆和獲取操作的超時時間(以分鐘為單位,默認值:10)。
branches
:指定要構建的分支相關的標識信息。(必填)
name:String類型,如果您想跟蹤存儲庫中的特定分支,請指定分支。例如master,一般配合參數(shù)傳遞過來。不過里邊不僅僅支持分支名字的定義,還支持如下類型:
<branchName>
:指定要檢出的分支,例如master。<tagName>
:指定要檢出的tag,例如v0.0.1。<commitId>
:檢出指定的提交,例如:5062ac843f2b947733e6a3b105977056821bd352
,5062ac84
。
需要注意的是
:如果使用commitID進行構建,而且是一個過去的ID,那么depth: 1需要去掉,否則總是會報錯。
userRemoteConfigs
:指定git倉庫相關的信息(必填)
url:String類型,指定 git 存儲庫的 URL 或路徑。以下是有效 git URL 的示例:
- ssh://git@github.com/github/git.git
- git@github.com:github/git.git (short notation for ssh protocol)
- ssh://user@other.host.com/~/repos/R.git (to access the repos/R.git repository in the user’s home directory)
- https://github.com/github/git.git
建議統(tǒng)一使用https風格,這樣日常使用時便于跳轉。
credentialsId:String類型,用于檢查源的憑據(jù),通常只需要寫明憑據(jù)的name即可。
name:String類型,存儲庫的 ID,一般情況下用不到。
gitTool
:String類型,指定git命令的路徑,通常情況下,git都是系統(tǒng)全局可用的,因此此參數(shù)可忽略。(可選)
四、測試
1、復制 commit id
2、測試使用分支啟動
2.1、master分支
name 和 tag 是生產 Docker 鏡像需要的不影響
2.2、結果
3、測試 commit id 啟動
3.1、commit id
3.2、結果
之前的教程
CICD與DevOps
jenkins使用docker安裝保姆級教程(面向小白教程,最新最全,全圖文)2022-8-1,不會docker也沒關系
使用jenkins+gitee創(chuàng)建docker鏡像并運行文章來源地址http://www.zghlxwxcb.cn/news/detail-456331.html
本文參考
Jenkins的pipeline實踐之GitSCM參數(shù)配置項詳解原創(chuàng) - 碼農教程 (manongjc.com)文章來源:http://www.zghlxwxcb.cn/news/detail-456331.html
使用jenkins+gitee創(chuàng)建docker鏡像并運行
到了這里,關于jenkins pipline 拉取git歷史版本的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!