从jenkins的管道插件中的自定义位置选择jenkins文件

从jenkins的管道插件中的自定义位置选择jenkins文件,jenkins,jenkins-pipeline,Jenkins,Jenkins Pipeline,jenkins管道插件可以从自定义位置选择jenkins文件并开始构建吗 我不想把jenkinsfile保存在源代码中。如果源代码中有任何更改。应该从自定义位置拾取文件并开始生成 示例:/home/test/jenkinsfile当然,只要用户有权读取位置,就可以尝试放置自定义位置(我不明白为什么不能) 如果是多分支管道,则比。因为索引是基于Jenkinsfile的存在(仅对包含Jenkinsfile的分支进行索引) 将构建逻辑放在存储库中的想法是,这是与源代码一起进行源代码控制的。当您在源代码

jenkins管道插件可以从自定义位置选择jenkins文件并开始构建吗

我不想把jenkinsfile保存在源代码中。如果源代码中有任何更改。应该从自定义位置拾取文件并开始生成


示例:/home/test/jenkinsfile

当然,只要用户有权读取位置,就可以尝试放置自定义位置(我不明白为什么不能)

如果是多分支管道,则比。因为索引是基于
Jenkinsfile
的存在(仅对包含
Jenkinsfile
的分支进行索引)

将构建逻辑放在存储库中的想法是,这是与源代码一起进行源代码控制的。当您在源代码中更改了某些内容并且这会影响您的构建时,构建特定提交将具有所有逻辑。如果将其移到存储库之外,您的构建逻辑和存储库很可能会失去同步

编辑 您可以通过添加一个将加载另一个文件的
Jenkinsfile
来解决这个问题

詹金斯档案:

load "/home/test/Jenkinsfile"

然而,据我所知,方向是相对于工作区的。因此,如果您有任何
dir(“path/to/other/dir”){..}
,那么它将相对于作业的工作区运行,这使得您的静态
Jenkinsfile
非常难以阅读。

我认为有一种方法

  • 一旦您使用常规Jenkins文件运行项目
  • 让你的新Jenkinsfile.other
  • 转到Jenkins仪表板查看您的存储库
  • 查看作业配置
  • 向下滚动至
    构建配置
    部分
  • Jenkinsfile
    的名称更改为
    Jenkinsfile.other
  • 运行构建

我还没有尝试创建克隆Jenkins作业,并对其进行编辑以使两者始终可用。

能否详细说明为什么要这样做。也许有更好的办法来解决这个问题。我无法详细说明OP的动机,但我们在工作中遇到了这个问题,当时我们想让Jenkins监控我们无法控制的第三方回购。我们可以分叉repo&添加一个Jenkins文件,或者如果有办法在Jenkins中指定作业本身中的Jenkins文件内容,那么我们可以避免分叉repo。您可以将Jenkins文件放在某个位置,并使用-->load“/home/test/Jenkins文件”。这将从该位置加载jenkinsfile load“/home/test/jenkinsfile”,为我工作!!!。我将jenkins文件保留在外部,因为我们使用专有的源代码管理,分支的工作方式与git、svn……非常不同,在与monorepo集成的自动化管道中,我们需要提供目录路径作为jenkins文件的输入。目录路径将是动态值,该值将根据进行提交的项目文件夹而更改。在识别项目文件夹时,我需要将文件夹名称作为变量传递,以便从该项目文件夹加载文件。例如:加载“/home/$FolderName/Jenkinsfile”。有人能提出一种方法来处理这个问题吗?你能先评估路径吗?是否可以使用多分支项目并从任何其他位置加载Jenkins文件?我不确定。已经离开詹金斯一段时间了。我不知道最近的进展。但我不知道为什么不。如果可以从多分支项目中访问文件(将其放入定义中)