我在詹金斯有一条多分支管道。我想将我的脚本文件(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插件的轻量级签出:svn:external中带有Jenkins文件的多分支管道(我在下添加了
-Djenkins.scm.impl.subversion.SubversionSCMFileSystem.disable=true
)
但是詹金斯仍然找不到剧本。事实上,如果我直接将脚本放入例如
branchX
中,禁用的轻量级签出将导致双重签出到我的工作区(第一个是读取脚本文件,第二个是因为它是脚本本身的第一个阶段)。
也许我的整个设置也错了,或者不是理想的做法?
我会很高兴你的帮助和提示。感谢和问候!
如果您在linux或bsd(osx)系统上工作,您可以为每个活动分支创建一个从root/scripts/jenkinsfile
到root/code/version#/branchX/jenkinsfile
的硬链接
这样,每个分支将有自己的jenkinsfile
在本地可用,使您能够使用轻量级签出,并且您在任何位置引入到jenkinsfile
的任何更改都将对所有其他分支可用(文件系统将保留文件的单个副本,无论可以从许多不同的位置访问)。
创建此类链接的bash命令将是
ln root/scripts/jenkinsfile root/code/version#/branchX/jenkinsfile
您需要记住,每次创建分支时都要创建一个新链接,或者使用钩子将其自动化
问题内容: 我有一个jenkins管道,该管道可以构建Java工件,将其复制到目录中,然后尝试执行外部脚本。 我在管道脚本中使用此语法来执行外部脚本 该脚本只是一个简单的Docker构建脚本,但是由于以下异常,构建将失败: 由于脚本不会创建任何目录,因此该错误令人困惑。它只是构建一个docker映像,并将新构建的java工件放置在该映像中。 如果我在jenkins中创建另一个作业,该作业执行外部脚
问题内容: 我正在使用Pipeline插件运行Jenkins 2。我已经建立了一个多分支管道项目,其中每个分支(主分支,开发分支等)的根目录都有一个Jenkinsfile。设置起来很简单。但是,即使代码没有更改,如何使每个分支定期运行(而不是分支索引)也让我迷惑不解。我需要在Jenkinsfile中添加什么以启用定期构建? 问题答案: 如果您使用声明式样式Pipeline并且只想触发特定分支上的构
我试图从流水线步骤中运行一个job-dsl脚本。一般来说,这应该是可能的,正如这里所描述的,在管道步骤中添加了以下代码片段: null 我如何知道脚本的真实位置,以及如何指定一个jobDsl作为目标,它本身位于不同的repo中?还是我完全走错了方向? 编辑 经过进一步的研究,共享库存储库被签出到“真实”工作区旁边的一个目录中,后缀为@libs,这似乎是事实。所以我认为使用以下方法是个好主意: 与此
我正在使用jenkins管道,我的Jenkinsfile有几个阶段和工作。有没有办法在詹金斯管道之外运行特定的工作? 示例:假设其中一个阶段是执行“SCP构建工件到远程位置”。出于某种原因,这失败了,如果我想手动运行jenkins管道之外的其他工作,我如何做到这一点? 我对调用新的构建最不感兴趣。那么,我们可以手动运行jenkins管道以外的故障后的剩余作业吗?
问题内容: 已解决 :感谢S.Richmond的以下答复我需要取消所有类型的存储映射,这意味着将变量和使用后作废。 附加 :搜索此错误的人员可能有兴趣使用Jenkins管道步骤- 在此处查找更多信息。 我正在尝试使用Jenkins Pipeline从用户那里获取输入,该输入作为json字符串传递给作业。管道然后使用隔离器对此进行解析,然后选择重要信息。然后,它将使用该信息与不同的作业参数并行运行1
下面是我简单的jenkins pipeline groovy脚本,它将用这两个阶段和我们想要构建的作业创建一个管道,我希望在job configuration下的脚本中每次都更新用于构建和代码分析的作业名,方法是从用户界面中获取数据,用户将使用Eclipse提供构建作业名和代码分析作业名- jenkinsfile脚本:-