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

标签 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 配置文件提供程序插件能够提供所需的设置。
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

我已经为 blue/ocean 创建了一个带有 id maven-settings 的托管 maven-settings.xml 文件,但它没有被选中。
我也试过将它复制到 ~/.m2/settings.xml

相比之下,工作安装没有任何托管文件(settings.xml 或其他),我无法在工作区中找到任何 Maven 设置文件。我不确定@tmp 目录是什么。它在构建完成时被删除。

所以我的问题是:

我应该在哪里放置设置以使 configFileProvider 将它们传递给 jenkinsci/blueocean 构建作业?

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

我不知道它在做什么,所以很难调试。来源是here但是 Java、Maven 和 Jenkins 不是我的主要领域。

Jenkins 本身作为容器运行时有什么区别?

This answer建议配置文件提供程序是不必要的。

有一个similar question这是 Unresolved ,但它与 Maven 插件有关。

最佳答案

我有一部分答案。我的 maven-settings 文件没有被选中,因为我使用的是文件名而不是文件 身份证 这是不同的。

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

关于maven - Jenkins 配置文件提供程序插件如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55956323/

相关文章:

java - 带有 AWS Java SDK 的 JsonErrorUnmarshallerV2 的 NoClassDefFoundError

java - Jython - 在 Java 中调用 Python 类

spring 在运行时导入模块在 bean 中被忽略

Powershell Invoke-Command 远程手动工作,但不是来自 Jenkins

docker - Docker容器-端口设置

java - 无法将 Android Studio 与 Maven 存储库同步

bash - 通过 “docker exec”执行bash脚本时,Docker在主机上查找脚本,但不在容器中查找脚本

docker - 持久存储 : How to mount a directory in Kubernetes?

nginx - 如何使用 Docker Compose 启动 2 个(或更多)Rocket.Chat 实例?

git - Windows 从机上的 Jenkins Git SSH key