2017-06-09 8 views
0

私は、JenkinsFileパイプラインスクリプトを使用してJenkinsでSpringブートプロジェクトを構築しています。MavenがJenkins環境変数を読み取ることができません

このSpringプロジェクトでは、Spring Bootの親pomファイルが使用されています。

<parent> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-parent</artifactId> 
</parent> 

私は(ネクサス経由でプロキシされるために起こる)、カスタムリポジトリに、上記の親を含むすべての私の依存関係を、ホストします。そのリポジトリの定義が私のローカル開発マシンで以下の

<repositories> 
    <repository> 
     <id>nexus</id> 
     <url>${env.REPO_URL}</url> 
    </repository> 
</repositories> 

のように見える、私は私のリポジトリのURLにREPO_URL環境変数を設定しています。ローカルでは、私はmvn installこれはちょうどうまく動作します。 MavenはリポジトリURLを自分の環境で定義したものに解決し、問題は発生しません。

私の問題は、REPO_URLの環境変数を定義するためにJenkinsFileパイプラインスクリプトを使用しようとすると発生します。ジェンキンススクリプトの定義では、それは次のようになります。

stringParam(name: 'REPO_URL', value: 'www.my.repo') 

と私は単にJenkinsFileに構築:

sh "mvn clean package" 

Mavenのは、次のエラーが生成されますから、

[FATAL] Non-resolvable parent POM for org.my.project:my-project:1.0.0: Could not transfer artifact org.springframework.boot:spring-boot-starter-parent:pom:1.4.1.RELEASE from/to nexus (${env.REPO_URL}): Cannot access ${env.REPO_URL} with type default using the available connector factories: BasicRepositoryConnectorFactory and 'parent.relativePath' points at wrong local POM @ line 12, column 10

をエラーメッセージの表示は、Mavenがその環境変数にアクセスできないかのようです。しかし、私がechoを実行すると、私のJenkinsFileに変数に正しい値が設定されます。したがって、この変数はポピュレートされていますが、何らかの理由でMavenが正しく解析していません。

Jenkinsを使用して、このリポジトリのMavenに環境変数を提供する際に間違っていることはありますか?

答えて

1

パラメータが異なります。それらをあなたのJenkinsfileのparams.REPO_URLとして参照できますが、トリガーするスクリプトでは参照できません。次のような環境変数を設定します。

pipeline { 
    agent { label 'docker' } 
    environment { 
    REPO_URL = 'www.my.repo' 
    } 
    stages { 
    stage('build') { 
     steps { 
     sh 'env | grep REPO_URL' // logs "REPO_URL=www.my.repo" for me 
     sh 'mvn clean package' 
     } 
    } 
    } 
} 
関連する問題