maven - 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 为 maven-settings for blue/ocean,但它没有被拾取。我也尝试将其复制到 ~/.m2/settings.xml
相比之下,工作安装没有任何托管文件(settings.xml 或其他),我无法在工作区中找到任何 Maven 设置文件。我不确定@tmp 目录是什么。它在构建完成时被删除。
所以我的问题是:
我应该将设置放在哪里以使 configFileProvider 将它们传递给 jenkinsci/blueocean 构建作业?
配置文件提供程序插件如何工作?
我不知道它在做什么,所以很难调试。源代码在这里,但 Java、Maven 和 Jenkins 不是我的主要领域。
Jenkins 本身作为容器运行时有什么区别?
这个答案表明配置文件提供程序是不必要的。
有一个类似的问题没有答案,但它与一个 Maven 插件有关。
解决方案
我有部分答案。我的 maven-settings 文件没有被拾取,因为我使用的是文件名而不是不同的文件ID。
问题的其余部分是原始 Jenkins 实例如何能够在不将其列为托管文件的情况下生成此文件。
推荐阅读
- javascript - 通过 Active-Directory 自动登录网站
- c++ - 修改顺序是否有助于发生之前的关系?
- .net - dotnet new(未找到 wpf)Visual Studio 2019
- reactjs - react redux-beacon 跟踪链接点击分析
- r - ggsignif 包错误 stat_signif 需要以下缺失的美学:y
- excel - 如果内容被用户删除,则用 VBA 填充单元格
- ruby-on-rails - ActiveRecord 中的 .hash
- javascript - 每个请求生成相同的跟踪代码
- javascript - 如何按属性值对javascript中的对象数组进行排序?
- java - 如何在片段中使用 onActivityResult()?