繁体   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