如何使用Jenkins Pipeline Groovy脚本检索当前工作区?

时间:2016-06-15 21:24:11

标签: jenkins groovy jenkins-pipeline

我正在尝试使用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

7 个答案:

答案 0 :(得分:20)

对我来说,${workspace}只是在没有初始化变量'workspace'的情况下工作。

答案 1 :(得分:6)

目前还没有包含变量,所以你必须使用shell-out-read-file方法:

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

或(如果在主节点上运行):

workspace = pwd()

答案 2 :(得分:4)

我认为你也可以在特定节点上执行pwd()函数:

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

答案 3 :(得分:2)

我已经成功使用了Jenkinsfile中的以下代码:

steps {
  script {
    def reportPath = "${WORKSPACE}/target/report"
    ...
  }
}

答案 4 :(得分:0)

在这里您可以在job-dsl-plugin code中找到答案。

基本上,您可以执行以下操作:

public ActionResult GetPais()
{    
    using (MyEntities ctx = new MyEntities())
    {
        var model = new MySite.Models.CountrisList();
        model.Countries = ctx.Countries.ToList();
        return PartialView("_optionsPais", model);
    }
}

答案 5 :(得分:0)

在工作中使用bat且需要访问Workspace的任何人的快速注释:

它不起作用

此处提到的

$WORKSPACE https://issues.jenkins-ci.org/browse/JENKINS-33511仅适用于PowerShell。因此,您的代码应具有powershell才能执行

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

答案 6 :(得分:0)

在Jenkins管道脚本中,我正在使用

 import re
 x= "1. hi  2) hi   b)  hi  c)  hi  C. hi    I. hi "
 x = re.replace(([0-9|A-Z]+[\.|\)]|)\s+,'',line)
 print(x)

最适合我的作品。无需使用$ {WORKSPACE}