web-dev-qa-db-ja.com

カスタムsettings.xmlを使用したJenkins宣言パイプライン

私はジェンベンス宣言型パイプラインをmavenで設定しようとしています。これまでのところ、Mavenを実行することはできますが、定義済みのMaven Settings.xmlを使用することはできません。

pipeline{
   agent any
   tools{
       maven 'Apache Maven 3.3'
       // without mavenSettingsConfig, my settings.xml is not used.  With it, this blows up
       mavenSettingsConfig: 'Global Maven Settings'
       jdk 'jdk9
   }
   stages {
       stage('Preparation'){
           steps{
              //code checkout stuff here--this works fine
           }
       }
       stage('Build'){
            steps{
               sh "mvn clean install -P foo"
            }
       }
   }
}

問題はmavenSettingsConfigのようです。そのプロパティがないと、settings.xmlの設定方法がわからず、カスタムのMavenが機能しません。 (たとえば、プロファイルfoo。)mavenSettingsConfigを使用すると、爆発します。

バグ!ソースユニット 'WorkflowScript'のフェーズ 'canonicalization'で例外が発生しました。予期しないNullpointerException ....

ドキュメントには、このための例を提供する大きなTODOがあります!それではどうすればいいですか?

(ドキュメントTODOで https://wiki.jenkins.io/display/JENKINS/Pipeline+Maven+Plugin 。実際には、「TODOはJenkins Declarative Pipelineでサンプルを提供しています」と述べています)

9
MeowCode

私のアドバイスは、Config File Providerプラグインを使用することです: https://wiki.jenkins.io/display/JENKINS/Config+File+Provider+Plugin

それを使用して、Jenkinsの「Config File Management」画面で設定ファイルを1回定義し、パイプラインに次のようなコードを入れます。

stage('Build'){
    steps{
    configFileProvider([configFile(fileId: 'my-maven-settings-dot-xml', variable: 'MAVEN_SETTINGS_XML')]) {
        sh 'mvn -U --batch-mode -s $MAVEN_SETTINGS_XML clean install -P foo'
    }
}

それが役に立てば幸い

12
Francois Marot

jenkinsでインストールを宣言し、Mavenする必要がありますManaged Jenkins > Global Tools configurationおよびM3のような名前のMavenインストールを追加します。

Mavenインストールの宣言

設定ファイルを登録する必要がある場合:

manage jenkins > Managed files

設定ファイルを追加します

この後、次のようにレジストリファイルでWithMaven関数を使用できます。

steps {
    withMaven(maven: 'M3', mavenSettingsConfig: 'mvn-setting-xml') {
        sh "mvn clean install "
    }
}
3
idriss Eliguene

この問題が発生したのは、この小さなコードを行に追加するだけです

def mvnSettings = 'Location of the file'
  sh "mvn clean install --settings ${mvnSettings} -P foo"

そのため、mavenを実行するたびに、指定したPATHでsettings.xmlファイルが検索されます

追伸コマンドラインで実行するために使用できるmavenコマンド

それが役に立てば幸い :)

1
rohit thomas

Credentials Binding Plugin からシークレットファイルの資格情報を使用することも可能

Jenkinsでシークレットファイルを作成します。 enter image description here

次に、この設定ファイルを次のように使用できます

pipeline {
    environment {
    MVN_SET = credentials('maven_settings')
  }
  agent {
    docker 'maven:3-Alpine'
  }
  stages {
    stage('mvn test settings') {
      steps {
        sh 'mvn -s $MVN_SET help:effective-settings'
      }
    }
  }
}
0
pan