2017-05-09 16 views
2

私はいくつかのDockerイメージを作成しようとしています。そのために、Mavenのpom.xmlファイルで指定されたバージョン番号をタグとして使用したいと考えています。しかし、私は宣言的なJenkinsのパイプラインにはまったく新しいので、環境変数をどのように変更すればVERSIONにすべての段階で正しいバージョンが含まれるかを理解できません。あなたが持っているので、http://docs.groovy-lang.org/latest/html/documentation/#_string_interpolationJenkins宣言パイプライン環境変数を変更するにはどうすればよいですか?

この

は、問題が

sh 'cp ../../../target/whales-microservice-${VERSION}.jar whales-microservice.jar' 

単一引用符は、グルーヴィーで変数を展開しません声明の単一引用符で私のコード

#!groovy 

pipeline { 
    tools { 
     maven 'maven 3.3.9' 
     jdk 'Java 1.8' 
    } 
    environment { 
     VERSION = '0.0.0' 
    } 

    agent any 

    stages { 
     stage('Checkout') { 
      steps { 
       git branch: 'master', credentialsId: '290dd8ee-2381-4c5b-8d33-5631d03ee7be', url: '[email protected]:company/SOME-API.git' 
       sh "git clean -f && git reset --hard origin/master" 
      } 
     } 
     stage('Build and Test Java code') { 
      steps { 
       script { 
        def pom = readMavenPom file: 'pom.xml' 
        VERSION = pom.version 
       } 
       echo "${VERSION}" 
       sh "mvn clean install -DskipTests" 
      } 
     } 
     stage('Build Docker images') { 
      steps { 
       dir('whales-microservice/src/main/docker'){ 
        sh 'cp ../../../target/whales-microservice-${VERSION}.jar whales-microservice.jar' 
        script { 
         docker.build "company/whales-microservice:${VERSION}" 
        } 
       } 
      } 
     } 
    } 
} 
+0

あなたの問題は何ですか? 'VERSION = pom.version'で割り当てられたバージョン番号が' Build Docker images 'ステージのVERSIONに含まれていませんか? – haschibaschi

+0

それは確かに問題です。これは、[Javaコードのビルドとテスト]段階でのみ使用できます。 –

答えて

5

ですシェルの文を二重引用符で囲みます:

sh "cp ../../../target/whales-microservice-${VERSION}.jar whales-microservice.jar" 
+0

それは本当に私の問題を修正します、ありがとう! –

+0

面白い...ありがとう! –

+1

これは、文字列とGString(Groovy Strings)の違いを強調しています。変数はGString(二重引用符)で補完され、文字列(一重引用符)では補完されません。 – user944849

関連する問題