簡體   English   中英

Jenkins 多分支管道:腳本/jenkinsfile 作為 svn 外部

[英]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/jenkinsfileroot/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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM