web-dev-qa-db-ja.com

Jenkins Pipeline Groovyスクリプトを使用して現在のワークスペースを取得する方法は?

Groovyパイプラインスクリプトを使用して、Jenkinsビルドの現在のワークスペースを取得しようとしています。

node('master') {
    // PULL IN ENVIRONMENT VARIABLES
    // Jenkins makes these variables available for each job it runs
    def buildNumber = env.BUILD_NUMBER
    def workspace = env.WORKSPACE
    def buildUrl = env.BUILD_URL

    // PRINT ENVIRONMENT TO JOB
    echo "workspace directory is ${workspace}"
    echo "build URL is ${env.BUILD_URL}"
}

戻ります:

[Pipeline] Allocate node : Start
Running on master in /Users/Shared/Jenkins/Home/jobs/test/workspace
[Pipeline] node {
[Pipeline] echo
workspace directory is null
[Pipeline] echo
build URL is http://localhost:8080/job/test/5/
[Pipeline] } //node
[Pipeline] Allocate node : End
[Pipeline] End of Pipeline
Finished: SUCCESS
23
N.Reddy

私にとっては、${workspace}は、変数 'workspace'を初期化することなく動作しました。

22
Litty Philip

そのための変数はまだ含まれていないため、Shell-out-read-fileメソッドを使用する必要があります。

sh 'pwd > workspace'
workspace = readFile('workspace').trim()

または(マスターノードで実行している場合):

workspace = pwd()
6

特定のノードでpwd()関数を実行することもできると思います。

node {
    def PWD = pwd();
    ...
}
4
chris_f

ジョブでbatを使用していて、Workspaceにアクセスする必要がある人のための簡単なメモ:

動作しません

$WORKSPACEhttps://issues.jenkins-ci.org/browse/JENKINS-33511 ここで述べたように、PowerShellでのみ動作します。そのため、コードには実行用にpowershellが必要です

 stage('Verifying Workspace') {
  powershell label: '', script: 'dir $WORKSPACE'
}
1
Ismail

これは job-dsl-plugin code で答えを見つけることができる場所です。

基本的には次のようなことができます:

readFileFromWorkspace('src/main/groovy/com/groovy/jenkins/scripts/enable_safehtml.groovy')
0
Dresden