相关疑难解决方法(0)

获取Jenkins Pipeline插件中工作空间目录的绝对路径

我目前正在对Jenkins Pipeline插件(以前称为Workflow插件)进行一些评估.阅读文档我发现我目前无法使用env.WORKSPACE以下方法检索工作区路径 :

工作流脚本中当前不可使用以下变量:

NODE_LABELS

工作区

特定于SCM的变量,例如SVN_REVISION

有没有其他方法如何获得当前工作区的绝对路径?我需要运行一些测试,然后获取一些参数(一些可执行文件的绝对路径).我已经尝试new File("").absolutePath()在一个@NonCPS部分内部使用,但看起来非CPS的东西总是在主服务器上执行.

有没有人知道如何在运行某些批处理脚本的情况下获取此路径,该脚本将路径存储到某个文件中,以后可以再次读入该文件?

jenkins jenkins-workflow jenkins-pipeline

54
推荐指数
3
解决办法
11万
查看次数

如何使用Pipeline引用Jenkinsfile目录?

我有一个groovy文件,我想从Jenkinsfile运行.

即. load script.groovy

但是,如果它存储在与Jenkinsfile相同的目录中,我不确定如何引用该文件.我从git加载Jenkinsfile.我发现它创建了一个名为的文件夹workspace@script.它不会将其放在工作空间目录中.我可以对文件夹进行硬编码,但我不确定这个规则,再次检查代码似乎有点多余.

java.io.FileNotFoundException: /opt/jenkins_home/jobs/my_job/workspace/script.groovy (No such file or directory)
Run Code Online (Sandbox Code Playgroud)

默认情况下,它从工作空间加载,而不是 workspace@script

我正在尝试将BuildFlow脚本转换为Pipeline(工作流)脚本.但我发现,它并不像复制和粘贴那么容易.

Jenkinsfile

node {

//get parameters from Job
def builds = builds.tokenize(",")
def ip_address_node = ip_address_node.trim()
def port_node = port_node.trim()
def branch = branch.trim()
def workspace = pwd()

stage 'Checking out code from esb repository'
git branch: branch, url: 'ssh://git@giturl/integration_bus.git'

load '../workspace@script/esb_deploybar_pipeline/deploy_esb.groovy'

}
Run Code Online (Sandbox Code Playgroud)

deploy_esb.groovy(这是来自旧的buildflow,试图在管道中运行)

import groovy.transform.ToString
import groovy.transform.EqualsAndHashCode
@EqualsAndHashCode
@ToString
class BarDeploy {
    String barFile
    String app
    String integrationServer
}


//parse csv
def csvItemsApps …
Run Code Online (Sandbox Code Playgroud)

groovy jenkins jenkins-workflow jenkins-pipeline jenkinsfile

32
推荐指数
3
解决办法
5万
查看次数

执行Jenkinsfile时如何获取管道配置字段“脚本路径”?

如何从 Jenkinsfile (groovy) 获取 Jenkins 中管道配置字段“脚本路径”的内容?

在此输入图像描述

在此示例中:我想在执行 Jenkinsfile 本身时获取字符串“Apps/mq-logger/Jenkinsfile”。

groovy jenkins jenkins-pipeline

7
推荐指数
1
解决办法
5991
查看次数