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