当jenkins作业在从属计算机上运行时,如何使用Jenkinsfile管道脚本从主服务器读取yaml文件?

问题描述 投票:1回答:1

我正在为Jenkins管道构建一个共享库(我不是CI工程师)。作为其一部分,我们正在考虑在yaml文件中提供配置,并从yaml文件中读取Jenkinsfile管道脚本。

因此,我们计划将Jenkinsfile和yaml文件提交到一个git存储库中(假设存储库A),该作业将在使用另一个git存储库(例如存储库B)的从属计算机上运行。 Jenkinsfile将在克隆存储库A之后从master执行。yaml文件也位于master工作空间中。在从站中,仓库B将被克隆,并且将按照Jenkinsfile中的定义进行构建。但是我有一个问题是,如何从Jenkinsfile脚本中读取yaml文件而不必在从属服务器中克隆repo A,即如何引用存在于主服务器中而不是从Jenkinsfile的从属服务器中的文件?之所以会出现这个问题,是因为无论我要打开的文件是从属设备,而不是主设备。

提前感谢。

jenkins yaml jenkins-pipeline master-slave
1个回答
1
投票

我认为最直接的方法是使用stash。暂存是可以在一个节点上创建并复制到任何其他节点的临时软件包。

主程序包的创建会产生一些开销,因此不建议对真正的大文件使用存储,但是它们非常适合您传输小型配置文件的用例。

stash

这期望'SomeFile.yaml'位于主服务器上的工作空间中,并且还将其提取到从服务器上的工作空间中。如果您想要node('master') { // Create temporary stash package on master stash name: 'MyConfiguration', includes: 'SomeFile.yaml' } node('MySlave') { // Copy to and extract the stash package on slave unstash 'MyConfiguration' } 的子目录,只需将WORKSPACE和/或stash步骤包装在unstash步骤中即可。

© www.soinside.com 2019 - 2024. All rights reserved.