我目前正在对Jenkins Pipeline插件(以前称为Workflow插件)进行一些评估.阅读文档我发现我目前无法使用env.WORKSPACE以下方法检索工作区路径
:
工作流脚本中当前不可使用以下变量:
NODE_LABELS
工作区
特定于SCM的变量,例如SVN_REVISION
有没有其他方法如何获得当前工作区的绝对路径?我需要运行一些测试,然后获取一些参数(一些可执行文件的绝对路径).我已经尝试new File("").absolutePath()在一个@NonCPS部分内部使用,但看起来非CPS的东西总是在主服务器上执行.
有没有人知道如何在不运行某些批处理脚本的情况下获取此路径,该脚本将路径存储到某个文件中,以后可以再次读入该文件?
我有一个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
如何从 Jenkinsfile (groovy) 获取 Jenkins 中管道配置字段“脚本路径”的内容?
在此示例中:我想在执行 Jenkinsfile 本身时获取字符串“Apps/mq-logger/Jenkinsfile”。