1

私はジェンキンスの宣言的なパイプラインを持っています。私はそれを1つのステージで構築し、別のマシンで別のマシンでテストします。私はまた、Jenkinsのマスターと同じマシンで動作するSeleniumハブを持っています。スレーブ上で実行するパイプラインステージ内のJenkinsマスターIP /ホスト名を取得するには?

pipeline { 
    agent none 
    stages { 
    stage('Build') { 
     agent { node { label 'builder' } } 
     steps { 
     sh 'build-the-app' 
     stash(name: 'app', includes: 'outputs') 
     } 
    } 
    stage('Test’) { 
     agent { node { label 'tester' } } 
     steps { 
     unstash 'app' 
     sh 'test-the-app' 
     } 
    } 
    } 
} 

私はジェンキンス・マスター・マシン上のセレンハブに戻って接続するためのテスト段階での実行Seleniumテストのための希望、そしてそれは私がのIPアドレスまたはホスト名を取得する必要があることを意味スレーブからのJenkinsマスターマシン。

これを行う方法はありますか? JenkinsのマスターURL /ホスト名は環境変数に含まれていないため、JenkinsのマスターIPアドレスを取得する方法は不明です。これを行うには良い方法がある場合

答えて

1

はわからない、私は私のJenkinsfileに

def masterIP = InetAddress.localHost.hostAddress 
println "Master located at ${masterIP}" 

を実行することができています。私は私のJenkinsfileでこのコードを実行した最初の時間は、ビルドが、私はManage Jenkins>In-process Script Approvalに移動しジェンキンスにおけるメソッドシグネチャを承認しなければならなかった

org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException: 
Scripts not permitted to use method java.net.InetAddress getHostAddress 
at org.jenkinsci.plugins.scriptsecurity.sandbox.whitelists.StaticWhitelist.rejectMethod(StaticWhitelist.java:178) 
at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor$6.reject(SandboxInterceptor.java:243) 
at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onGetProperty(SandboxInterceptor.java:363) 
at org.kohsuke.groovy.sandbox.impl.Checker$4.call(Checker.java:241) 
at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.java:238) 
at com.cloudbees.groovy.cps.sandbox.SandboxInvoker.getProperty(SandboxInvoker.java:28) 

で失敗しました。

0

BUILD_URLを使用するための@kayveeからインスピレーションを受けシェルコマンド

def host= sh(returnStdout: true, script: 'echo ${BUILD_URL/https:\\/\\/} | cut -d "/" -f1').trim() 
println("Hostname : ${host}") 
0

の下にこれを試してみてください、私から働い以下:それはに表示されるように、これはマスターのホスト名またはIPを返す

def getJenkinsMaster() { 
    return env.BUILD_URL.split('/')[2].split(':')[0] 
} 

URLを作成します。ポート番号も必要な場合は、2番目のsplit()を削除します。

関連する問題