当前位置: 首页 > 知识库问答 >
问题:

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

花阳秋
2023-03-14

我试图使用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

共有3个答案

昌招
2023-03-14

我认为您还可以在特定节点上执行pwd()函数

node {
    def PWD = pwd();
    ...
}
柯波峻
2023-03-14

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

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

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

workspace = pwd()
江丰羽
2023-03-14

对我来说,${WORKSPACE}甚至没有初始化变量WORKSPACE

 类似资料:
  • 我们有重复使用的詹金斯管道和使用相同功能的一些管道。现在我的问题是:重用它们的正确方法是什么。我使用一个共享库,但我不知道我是否必须添加漂亮的脚本或完整的管道?漂亮的脚本似乎是在根中执行的,而不是我的詹金斯工作区,这是一个大问题。你是如何正确处理这件事的?

  • 我正在构建一个jenkins管道,作业可以由远程触发。我需要知道哪个IP触发了作业。所以我有一个小Groovy脚本,它返回远程IP。使用EnvInject-plugin,我可以轻松地在正常的自由式作业中使用这个变量,但是我如何在管道中使用它?我不能将EnvInject-plugin与管道插件一起使用:( 这是获取IP的小脚本:

  • 问题内容: 我有管道脚本(groovy),我尝试在其中使用if和else条件,但其行为异常。似乎总是返回false。 这是我的管道脚本示例(片段): 但是,即使值是1,在这里它总是求值为false。语法是否存在问题? 当我做上述变量的回声时,它打印得很好。 更新:这是我最小的詹金斯管道脚本,请帮忙 问题答案: 请记住,返回的变量是字符串而不是数字。在Groovy(包括Jenkins Groovy

  • 问题内容: 但是,我需要从System Groovy脚本读取文件,因此使用Text-finder或Groovy PostBuild插件的解决方案将不起作用。 如何从系统Groovy脚本获取工作区路径?我尝试了以下方法: 谢谢! 问题答案: 每个构建都有一个 工作区 ,因此您需要首先找到所需的项目。(在詹金斯中,术语“工作”和“项目”在API中也是可以互换使用的。) 之后,您可以交叉手指,只需调用已

  • 问题内容: 我是Jenkins中使用的Groovy脚本的新手。我的问题是,我们如何根据作业名称和内部版本号获取作业的时间戳? 示例 :我想获取“ MyDeployJob”(JobName)的时间戳,并获取BuildNumber-105的时间戳。 我尝试使用方法方法,但无法正常工作。另外,我发现环境变量具有时间戳,但是我无法弄清楚如何使用Groovy Script获取细节。请帮助。 提前致谢。 问题