Jenkins Pipeline包含內置文檔和 Snippet Generator,它們是開發(fā)Pipeline時的關鍵資源。它們提供了針對當前安裝的Jenkins版本和相關插件定制的詳細幫助和信息。在本節(jié)中,我們將討論可能有助于開發(fā)Jenkins Pipeline的其他工具和資源。
在 Blue Ocean Pipeline編輯器提供了一個WYSIWYG的方式來創(chuàng)建聲明Pipeline。編輯器提供了Pipeline中所有階段,平行分支和步驟的結構視圖。編輯器會根據(jù)Pipeline更改進行驗證,消除許多錯誤,甚至被提交。在幕后,它仍然生成聲明性的Pipeline代碼。
Jenkins可以在實際運行之前從命令行驗證或“ lint ”聲明式Pipeline。這可以使用Jenkins CLI命令或使用適當?shù)膮?shù)進行HTTP POST請求來完成。我們建議使用 SSH接口 運行l(wèi)inter。有關如何正確配置Jenkins以進行安全命令行訪問的詳細信息,請參閱Jenkins CLI文檔。
通過CLI通過SSH進行Linting
# ssh (Jenkins CLI)
# JENKINS_SSHD_PORT=[sshd port on master]
# JENKINS_HOSTNAME=[Jenkins master hostname]
ssh -p $JENKINS_SSHD_PORT $JENKINS_HOSTNAME declarative-linter < Jenkinsfile
通過HTTP POST使用 curl
# curl (REST API)
# Assuming "anonymous read access" has been enabled on your Jenkins instance.
# JENKINS_URL=[root URL of Jenkins master]
# JENKINS_CRUMB is needed if your Jenkins master has CRSF protection enabled as it should
JENKINS_CRUMB=`curl "$JENKINS_URL/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,\":\",//crumb)"`
curl -X POST -H $JENKINS_CRUMB -F "jenkinsfile=<Jenkinsfile" $JENKINS_URL/pipeline-model-converter/validate
以下是Pipeline Linter的兩個實例。第一個例子顯示了linter在通過無效的輸出時Jenkinsfile,缺少agent聲明的一部分。
Jenkinsfile
pipeline {
agent
stages {
stage ('Initialize') {
steps {
echo 'Placeholder.'
}
}
}
}
Linter輸出無效的Jenkins文件
# pass a Jenkinsfile that does not contain an "agent" section
ssh -p 8675 localhost declarative-linter < ./Jenkinsfile
Errors encountered validating Jenkinsfile:
WorkflowScript: 2: Not a valid section definition: "agent". Some extra configuration is required. @ line 2, column 3.
agent
^
WorkflowScript: 1: Missing required section "agent" @ line 1, column 1.
pipeline }
^
在第二個例子中,Jenkinsfile
已經被更新為包含缺少any
的agent
。linter現(xiàn)在報告Pipeline是有效的。
Jenkinsfile
pipeline {
agent any
stages {
stage ('Initialize') {
steps {
echo 'Placeholder.'
}
}
}
}
Linter輸出有效的Jenkins文件
ssh -p 8675 localhost declarative-linter < ./Jenkinsfile
Jenkinsfile successfully validated.
通常,Pipeline將在經典的Jenkins Web UI中定義,或者通過提交到Jenkinsfile源代碼控件來定義。不幸的是,這兩種方法都不適用于Pipeline的快速迭代或原型設計。“重播”功能可以快速修改和執(zhí)行現(xiàn)有流水線,而無需更改Pipeline配置或創(chuàng)建新的提交。
要使用“重播”功能:
1、在構建歷史記錄中選擇先前完成的運行。
2、點擊左側菜單中的“重播”
3、進行修改并單擊“運行”。在這個例子中,我們將“ruby-2.3”更改為“ruby-2.4”。
4、檢查更改的結果
一旦您對更改感到滿意,您可以使用Replay再次查看它們,將其復制回Pipeline作業(yè)Jenkinsfile
,然后使用您通常的工程流程提交。
Pipeline單元測試框架是Jenkins項目不支持的第三方工具。
該Pipeline單元測試框架 可以讓你的單元測試Pipeline和共享庫完全運行之前。它提供了一個模擬的執(zhí)行環(huán)境,真正的Pipeline的步驟是模仿對象,模仿對象
是可以使用檢查期望的方式取代的。雖然新的和粗糙的邊緣,但有希望。該項目的README包含示例和使用說明。
更多建議: