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