私はジェンベンス宣言型パイプラインを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でサンプルを提供しています」と述べています)
私のアドバイスは、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'
}
}
それが役に立てば幸い
jenkinsでインストールを宣言し、Mavenする必要がありますManaged Jenkins > Global Tools configuration
およびM3のような名前のMavenインストールを追加します。
設定ファイルを登録する必要がある場合:
manage jenkins > Managed files
設定ファイルを追加します
この後、次のようにレジストリファイルでWithMaven関数を使用できます。
steps {
withMaven(maven: 'M3', mavenSettingsConfig: 'mvn-setting-xml') {
sh "mvn clean install "
}
}
この問題が発生したのは、この小さなコードを行に追加するだけです
def mvnSettings = 'Location of the file'
sh "mvn clean install --settings ${mvnSettings} -P foo"
そのため、mavenを実行するたびに、指定したPATHでsettings.xmlファイルが検索されます
追伸コマンドラインで実行するために使用できるmavenコマンド
それが役に立てば幸い :)
Credentials Binding Plugin からシークレットファイルの資格情報を使用することも可能
次に、この設定ファイルを次のように使用できます
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'
}
}
}
}