Jenkins中的Config maven设置

eivnm1vs  于 2023-10-17  发布在  Maven
关注(0)|答案(8)|浏览(152)

我的项目有3个maven模块,它们是由nodejs脚本构建的。
现在我想整合Jenkin和Nexus。我的Jenkin构建配置看起来像这样:


我还在Build部分的Provide configuration filesbuild step中添加了我的maven settings.xml,但它不起作用。Maven仍然失败,无法解决我的Nexus存储库中的依赖项。
在我的本地maven settings.xml中,我添加了一些Nexus存储库和另一个存储库的配置。
你能把这个箱子给我看看吗?我是新来的。
先谢了。

p1iqtdky

p1iqtdky1#

我想出了一个结合问题和答案的解决方案(都来自Anh)。Anh的解决方案的问题是,我们必须包括可能包含凭据的settings.xml(在我的情况下,它有一些机密信息),这不应该是存储库的一部分(正如sigi的评论中所强调的那样)。
这就是我如何避免这种风险(一步一步):
1.从Jenkins主页,后藤转到ManageJenkins > Managed Files
1.单击添加新配置> Maven settings.xml >保持ID未编辑(最好)>提交
1.提供一个易于识别的名称,并在必要时进行注解,然后将xml内容复制粘贴到内容区域。单击“提交”。

1.后藤转到项目的构建配置,在构建环境下,选中提供配置文件选项。
1.从文件夹中,选择您在上面的步骤3中添加的文件。
1.现在的关键点是填写目标字段。提供一个文件名(或者如果你需要的话,提供一个相对于你的项目的路径)。如果您需要在构建配置的其他部分中使用配置,您也可以选择填写变量名称(这些来自Config文件提供程序插件)。

1.现在,在Build部分,提供以下命令,从 checkout 的项目路径(jenkins复制到那里供您使用)中获取settings.xml文件:
clean install -s settings.xml
请注意,我在Jenkins中创建的构建项目是一个Maven项目。

xuo3flqw

xuo3flqw2#

我只是找到了一种方法,将mvn-settings.xml直接添加到我的文件夹中,然后编辑运行命令,如下所示:

mvn clean install -s mvn-settings.xml
6ojccjat

6ojccjat3#

我还将maven settings.xml添加到Provide configuration files中
等等...你永远都不用这么做任何maven命令都会在$HOME/.m2/settings.xml中查找settings.xml文件:你只需要确保运行Jenkins slave的用户(作业实际执行的地方)在特定的文件夹中有该文件。
然后确保用户可以首先在本地maven项目上使用mvn clean install。一旦它工作了,你可以尝试你的Jenkins构建。

pbpqsu0x

pbpqsu0x4#

还有另一种方法:
1.这是对@Anh N. Nguyen answer的扩展,但注意不在源代码控制中存储秘密。
1.它比@Harikrishnan简单,步骤更少,不需要任何额外的插件(config-file-provider

步骤:

1.配置mvn-settings.xml从环境变量中读取secret。

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd">
  <servers>
    <server>
      <id>nexus</id>
      <username>${env.NEXUS_USER}</username>
      <password>${env.NEXUS_PASSWORD}</password>
    </server>
  </servers>
</settings>

1.你现在可以在你的源代码控制中签入它,完全安全。
1.在作业环境变量中公开Jenkins凭据秘密(声明性管道的加密)

pipeline {
  agent {...}
  environment {
    NEXUS_CREDS = credentials('NexusArtifactoryLogin')
    NEXUS_USER = "$NEXUS_CREDS_USR"
    NEXUS_PASSWORD = "$NEXUS_CREDS_PSW"
  }
  stages {
    ...
    stage('Build') {
      steps {
          \\assuming mvn-settings.xml is at root/current folder, otherwise provide absolute or relative path
          sh 'mvn -s mvn-settings.xml clean install'
      }
    }
    ...
  }
}
svujldwt

svujldwt5#

x1c 0d1x转到您的作业配置
而不是构建部分
添加构建步骤:-创建顶级maven目标并填写Maven版本和目标
比点击前进按钮,并提到设置文件路径中提到的图像

zsohkypk

zsohkypk6#

只需将settings.xml文件放到代码库中,然后运行mvn clean install -s<setting.xml_file_path>

cetgtptt

cetgtptt7#

有一个程序描述here。对于Maven构建作业,
1.使用Manage Jenkins/Manage Credentials为您的远程存储库添加用户名/密码凭据。
1.使用Manage Jenkins/Managed Files添加新的Maven设置文件。复制settings.xml的内容。省略<servers>部分,但在<profile>中引用远程存储库服务器ID和URL。还可以添加远程存储库ID,并从托管文件向导的弹出菜单中按名称选择凭据。
1.对于您的Maven作业,在Configure/Build/Advanced.../Settings File/Provided settings.xml下,从弹出菜单中按名称选择托管设置文件。
当您触发构建时,Jenkins会将包含凭据的<server>元素注入到临时设置文件中。

92dk7w1h

92dk7w1h8#

用mvn -X命令运行你的作业。在日志中,你会发现jenkins是从哪里挑选的setting.xml文件。
在我的情况下,我把我的设置.文件在/.m2/,但在检查日志,它被发现如下:/var/lib/jenkins/.m2

[INFO] Error stacktraces are turned on.
[DEBUG] Reading global settings from /usr/share/maven/conf/settings.xml
[DEBUG] Reading user settings from /var/lib/jenkins/.m2/settings.xml
[DEBUG] Using local repository at /var/lib/jenkins/.m2/repository

相关问题