歡迎關(guān)注我公眾號(hào)呀~「測(cè)試游記」「zx94_11」
文件目錄相關(guān)操作
deleteDir:刪除當(dāng)前目錄
-
dir:切換到目錄
- 默認(rèn)流水線工作在工作空間目錄下,dir步驟可以讓我們切換到其他目錄
dir('/tmp'){ deleteDir() } fileExists:判斷文件是否存在,結(jié)果返回布爾值
isUnix:判斷是非為UNIX系統(tǒng),如果是則返回true
pwd:返回當(dāng)前所在目錄
有一個(gè)布爾類(lèi)型的可選參數(shù)tmp,如果為true,則返回與當(dāng)前工作空間關(guān)聯(lián)的臨時(shí)目錄
-
writeFile:將內(nèi)容寫(xiě)入指定文件中
- file:文件路徑,可以是絕對(duì)路徑,也可以是相對(duì)路徑
- text:要寫(xiě)入的文件內(nèi)容
- encoding:目標(biāo)文件的編碼。如果為空,則使用操作系統(tǒng)默認(rèn)的編碼
-
readFile:讀取文件
- file:路徑,同上
- encoding:編碼,同上
script{
writeFile(file:"base64File", text:"amVua2lucyBib29r", encoding:"Base64")
def content = readFile(file:"base64File", encoding: "UTF-8")
echo "${content}"
}


amVua2lucyBib29r是jenkins book的Base64編碼

制品相關(guān)步驟
-
stash:保存臨時(shí)文件
將文件保存起來(lái),以便同一次構(gòu)建的其他步驟或階段使用。
如果整個(gè)流水線在同一臺(tái)機(jī)器上執(zhí)行,那stash是多余的,一般用于跨Jenkins node使用。
stash步驟會(huì)將文件存儲(chǔ)在tar文件中,對(duì)于大文件的stash操作會(huì)消耗Jenkins master的計(jì)算資源。
name:字符串類(lèi)型,保存文件的集合的唯一標(biāo)識(shí)
allowEmpty:布爾類(lèi)型,允許stash內(nèi)容為空
excludes:字符串類(lèi)型,排除文件,如果排除多個(gè)使用「逗號(hào)」分隔
includes:字符串類(lèi)型,stash文件,留空表示全部
useDefaultExcludes:布爾類(lèi)型,true:使用Ant風(fēng)格路徑默認(rèn)排除文件
Ant風(fēng)格
| 通配符 | 說(shuō)明 |
| ------ | ----------------------- |
| `?` | 匹配任何單字符 |
| `*` | 匹配0或者任意數(shù)量的字符 |
| `**` | 匹配0或者更多的目錄 |
| URL路徑 | 說(shuō)明 |
| ------------------------ | ------------------------------------------------------------ |
| /project/`*`.a | 匹配**項(xiàng)目根路徑**下所有在project路徑下的.a文件 |
| /project/p`?`ttern | 匹配**項(xiàng)目根路徑**下 /project/pattern 和 /app/pXttern等,但是不包括/app/pttern |
| /`**`/example | 匹配項(xiàng)目根路徑下 /project/example, /project/foow/example, 和 /example等 |
| /app/`**`/dir/file.`*` | 匹配(Matches) /app/dir/file.jsp, /app/foo/dir/file.html,/app/foo/bar/dir/file.pdf, 和 /app/dir/file.java等 |
| /`**`/`*`.jsp | 匹配(Matches)任何的.jsp 文件 |
最長(zhǎng)匹配原則:
/project/dir/file.jsp,現(xiàn)在存在兩個(gè)路徑匹配模式`/**/*.jsp`和`/project/dir/*.jsp`,那么會(huì)根據(jù)模式`/project/dir/*.jsp`來(lái)匹配
-
unstash:取出之前stash的文件
pipeline { agent none stages { stage('stash') { agent {label "master"} steps { writeFile file: "a.txt",text: "$BUILD_NUMBER" stash(name: "abc", includes: "a.txt") } } stage('unstash') { agent {label "node2"} steps { script { unstash("abc") def content = readFile("a.txt") echo "${content}" } } } } }
命令相關(guān)
-
sh:執(zhí)行shell命令
script:要執(zhí)行的shell腳本
encoding:腳本執(zhí)行后輸出日志的編碼,默認(rèn)為系統(tǒng)編碼
returnStatus:布爾類(lèi)型,默認(rèn)返回狀態(tài)碼,如果是非零則流水線執(zhí)行失敗。設(shè)置為true后,無(wú)論什么狀態(tài)碼,流水線執(zhí)行都不受影響
-
returnStdout:布爾類(lèi)型,如果為true,任務(wù)的標(biāo)準(zhǔn)輸出將作為步驟的返回值,而不是打印到構(gòu)建日志中(如果有錯(cuò)誤,則依舊會(huì)打印到日志中)
??returnStatus和returnStdout同時(shí)使用,只有returnStatus生效
-
bat,powershell步驟
- bat步驟執(zhí)行Windows的批處理命令
- 支持參數(shù)類(lèi)型sh
- powershell執(zhí)行的是PowerShell腳本
- 支持參數(shù)類(lèi)似sh
- bat步驟執(zhí)行Windows的批處理命令
其他步驟
-
error:主動(dòng)報(bào)錯(cuò),中止pipeline
error(“there is a error”)
-
tool:使用預(yù)定義的工具
name:工具名稱(chēng)
type(可選):工具類(lèi)型,指該工具安裝類(lèi)的全路徑類(lèi)名
-
在Global Tool Configuration(全局工具配置)中配置了工具
全局工具配置image-20190712222337303
-
timeout:代碼塊超時(shí)時(shí)間
- time:整型
- unit(可選):時(shí)間單位,默認(rèn)分鐘。支持NANOSECONDS,MICROSECONDS,MILLISECONDS,SECONDS,MINUTES(默認(rèn)),HOURS,DAYS
- activity(可選):布爾類(lèi)型,true時(shí) 只有當(dāng)日志沒(méi)活動(dòng)才算真正的超時(shí)
-
waitUntil:等待條件滿(mǎn)足
timeout(50) { waitUntil{ script{ def r = sh script: 'curl http://exmple',return Status: true return (r == 0) } } }
-
retry:重復(fù)執(zhí)行塊
steps { retry(20){ script{ sh script: 'curl http://exmple',return Status: true } } }??如果某次retry拋出異常,只中止當(dāng)次,不會(huì)中止整個(gè)retry的執(zhí)行
在執(zhí)行retry的過(guò)程中,用戶(hù)是無(wú)法中止流水線的
-
sleep:休眠一段時(shí)間
- time:整型,休眠時(shí)間
- unit(可選):時(shí)間單位,默認(rèn)秒,與
timeout類(lèi)似 - 示例:
sleep(120) // 休眠120秒,sleep(time:'2',unit:"MINUTES") // 休眠2分鐘
編寫(xiě)Jenkinsfile
推薦VS Code擴(kuò)展:Jenkins Pipeline Linter Connector
- 安裝
- 配置擴(kuò)展
- 配置Jenkins服務(wù)器
- 運(yùn)行




故意寫(xiě)錯(cuò)了進(jìn)行校驗(yàn):

Errors encountered validating Jenkinsfile:
WorkflowScript: 14: unexpected token: } @ line 14, column 1.
}
^

