Jenkins中的配置Maven设置

Anh*_*yen 4 nexus maven jenkins

我的项目有3个Maven模块,它们是由nodejs脚本构建的。

现在,我想与Jenkin和Nexus集成。我的Jenkin构建配置如下所示:

构建配置我还在“ 构建”部分的“ 提供配置文件构建”步骤中添加了我的Maven settings.xml,但是它没有用。Maven仍然失败,无法解析我的Nexus回购中的依赖项。

在我的本地专家中,settings.xml我为Nexus存储库和另一个存储库添加了一些配置。

你能把这种情况告诉我吗?我是詹金的新手。

提前致谢。

Har*_*nan 7

我想出了一个结合问题和答案的解决方案(均来自 Anh)。Anh 的问题解决方案的问题是我们必须包含可能包含凭据的 settings.xml(在我的例子中,它有一些机密信息),它不应该是存储库的一部分(如评论中突出显示的西吉)。

这就是我避免这种风险的方式(一步一步):

  1. 从 Jenkins 主页,转到 Manage Jenkins > Managed Files
  2. 单击“添加新配置”>“Maven settings.xml”>“保持 ID 未编辑(最好)”>“提交”
  3. 如有必要,提供一个易于识别和注释的名称,然后将xml内容复制粘贴到内容区域。单击提交。添加配置 XML
  4. 转到您项目的构建配置,在构建环境部分下,选中提供配置文件选项。
  5. 从文件下拉列表中,选择您在上述第 3 步中添加的文件。
  6. 现在关键点是填写目标字段。提供文件名(或相对于您的项目的路径,如果您需要的话)。如果您需要在构建配置的其他部分使用该配置(这些来自配置文件提供程序插件),您还可以选择填写变量名称。提供配置文件
  7. 现在在 Build 部分,提供以下命令以从检出的项目路径中获取 settings.xml 文件(jenkins 复制到那里供您使用):
    clean install -s settings.xml

请注意,我在 Jenkins 中创建的构建项目是作为 Maven 项目。


Anh*_*yen 6

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

mvn clean install -s mvn-settings.xml
Run Code Online (Sandbox Code Playgroud)

  • 不这样做的主要原因:settings.xml 可能包含不应在您的存储库中的密码。 (3认同)

Ami*_*mar 5

还有另一种方法:

  1. 这是回答的扩展@Anh N. Nguyen,但要注意不要将秘密存储在源代码管理中。
  2. 这比 更简单@Harikrishnan,步骤更少,并且不需要任何额外的插件(config-file-provider

脚步:

  1. 配置mvn-settings.xml从环境变量中读取机密。
<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>
Run Code Online (Sandbox Code Playgroud)
  1. 您现在可以在源代码管理中签入此内容,完全安全。
  2. 在作业环境变量中公开您的 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'
      }
    }
    ...
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 这种方法非常简单,并且在 Jenkins 管道中使用起来很好。 (2认同)