[英]Jenkins Multibranch Pipeline: script / jenkinsfile as svn external
我在詹金斯有一個多分支管道。 我想將我的腳本文件 (jenkinsfile) 作為外部的 svn 文件包含在我的開發分支中,以便為所有分支集中組織腳本。 不幸的是,多分支管道的掃描無法找到腳本文件,因為它只查看聲明的分支內部而不是包含的 svn 外部位置。 有誰知道我該如何解決這個問題?
下面是我的 svn 結構、作業配置和更多信息的示例。
SVN:
root/
scripts/
jenkinsfile
code/
version1/
branchX/
...
version11/
branchY/
...
branchX、branchY 等的 SVN 外部屬性。
Local path: jenkinsfile
URL: ^/scripts/jenkinsfile
Revision Peg: 12345
多分支作業配置:
Subversion
Project Repository Base: http://.../root/code/
Include branches: version1/branchX, version11/branchY
Build configuration
Mode: by Jenkinsfile
Script path: jenkinsfile
多分支管道中掃描的日志消息:
...
Checking candidate branch /code/version1/branchX@HEAD
‘jenkinsfile’ not found
Does not meet criteria
...
我已經嘗試根據以下建議禁用 subversion scm 插件的輕量級檢出: Multibranch pipeline with jenkinsfile in svn:external (我在<service><arguments>...
下添加了-Djenkins.scm.impl.subversion.SubversionSCMFileSystem.disable=true
<service><arguments>...
在 jenkins.xml 中)
但是 jenkins 仍然無法找到腳本。 事實上,如果我將我的腳本直接放在例如branchX
,禁用的輕量級檢出會導致雙重檢出到我的工作區(第一個讀取腳本文件,第二個因為它是我在腳本本身的第一階段)。
也許我的整個設置也是錯誤的,或者不是理想的做法?
我會很高興你的幫助和提示。 謝謝和問候!
如果您正在使用 linux 或 bsd(osx) 系統,您可以為每個活動分支創建從root/scripts/jenkinsfile
到root/code/version#/branchX/jenkinsfile
的硬鏈接
這樣,每個分支都有自己的jenkinsfile
可用jenkinsfile
,使您能夠使用輕量級檢出,並且您在任何位置對jenkinsfile
引入的任何更改都將可用於所有其他分支(文件系統將保留文件,無論是否可以從許多不同的位置訪問)。
創建此類鏈接的 bash 命令將是
ln root/scripts/jenkinsfile root/code/version#/branchX/jenkinsfile
您需要記住每次創建分支時都創建一個新鏈接,或者使用鈎子自動化
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.