Jenkins配置文件提供程序插件如何工作?

时间:2019-05-02 16:06:10

标签: maven docker jenkins

配置文件提供程序插件如何工作?

我有一个声明性管道(多分支构建)的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插件有关。

1 个答案:

答案 0 :(得分:2)

我有部分答案。未获取我的maven-settings文件,因为我使用的是文件名而不是文件 Id

问题的其余部分是原始Jenkins实例如何在不将其列为托管文件的情况下生成此文件。