配置文件提供程序插件如何工作?
我有一个声明性管道(多分支构建)的Jenkinsfile,其中包含:
configFileProvider([configFile(fileId: 'maven-settings', variable: 'MAVEN_SETTINGS')]) {
sh 'mvn -B -s $MAVEN_SETTINGS -DWHERE="$WHERE" deploy'
}
我尝试在两个不同的Jenkins安装程序上运行此程序,一个直接安装并作为守护程序运行,另一个作为容器运行(jenkinsci / blueocean)。
在直接运行时,Jenkins Config File Provider插件能够提供所需的设置。
provisioning config files...
copy managed file [Maven settings] to file:/var/lib/jenkins/workspace/redacted@tmp/config8989354118161621860tmp
在jenkinsci / blueocean容器下运行时,它失败并显示:
provisioning config files...
not able to provide the file [ManagedFile: id=maven-settings, targetLocation=null, variable=MAVEN_SETTINGS], can't be resolved by any provider - maybe it got deleted by an administrator
我已经创建了一个托管的maven-settings.xml文件,其ID为blue / ocean的maven-settings,但是没有被拾取。 我也尝试过将其复制到〜/ .m2 / settings.xml
相比之下,正在运行的安装没有任何托管文件(settings.xml或其他),并且我无法在工作区中找到任何maven设置文件。我不确定@tmp目录是什么。在构建完成时将其删除。
所以我的问题是:
我应该在哪里放置设置以使configFileProvider传递给jenkinsci / blueocean构建作业?
配置文件提供程序插件如何工作?
我不知道它在做什么,因此很难调试。来源是here,但是Java,Maven和Jenkins不是我的主要领域。
詹金斯本身作为容器运行时有什么区别?
This answer建议不需要配置文件提供程序。
有一个similar question尚无答案,但与Maven插件有关。
答案 0 :(得分:2)
我有部分答案。未获取我的maven-settings文件,因为我使用的是文件名而不是文件 Id 。
问题的其余部分是原始Jenkins实例如何在不将其列为托管文件的情况下生成此文件。