2017-08-23 7 views
1

いくつかのシェルコマンドで定義済みのパラメータJenkinsfileを使用したいが、例外が出る。私の例では、単純なドッカーコマンドを実行したいと思います。このパラメータは、docker実行可能ファイルへのパスを定義します。JenkinsfileのJenkinsfileのシェルコマンド内のパラメータを使用する

pipeline { 
    agent any 

    parameters { 
    string(defaultValue: '/Applications/Docker.app/Contents/Resources/bin/docker', description: '', name: 'docker') 
    } 

    stages { 
    stage('Test') { 
     steps { 
     sh 'sudo ${params.docker} ps -a' 
     } 
    } 
    } 
} 

そして、私は次の例外を取得:

これは私の非常に短いJenkinsfileである私はシェルコマンド内PARAMTERを使用せずにJenkinsfileを変更することが正常に通過すると

[e2e-web-tests_master-U4G4QJHPUACAEACYSISPVBCMQBR2LS5EZRVEKG47I2XHRI54NCCQ] Running shell script 
/Users/Shared/Jenkins/Home/workspace/e2e-web-te[email protected]tmp/durable-e394f175/script.sh: line 2: ${params.docker}: bad substitution 

を:

pipeline { 
    agent any 

    parameters { 
    string(defaultValue: '/Applications/Docker.app/Contents/Resources/bin/docker', description: '', name: 'docker') 
    } 

    stages { 
    stage('Test') { 
     steps { 
     sh 'sudo /Applications/Docker.app/Contents/Resources/bin/docker ps -a' 
     } 
    } 
    } 
} 

どうすればp Jenkinsfileのシェルコマンドの中のarameters?私は、パラメータタイプとしてstringtextを試しました。

答えて

4

問題は、単一引用符が標準のJava文字列であることです。

二重引用符はテンプレート可能な文字列で、テンプレート化されている場合はGStringを返します。そうでない場合は標準のJava文字列を返します。その後、params.dockerがパイプラインに 'SH' スクリプト内で$ {params.docker}を置き換えます

stages { 
    stage('Test') { 
     steps { 
     sh "sudo ${params.docker} ps -a" 
     } 
    } 
    } 

だから、あなたは二重引用符を使用します。

関連する問題