Dal*_*ney 27 groovy jenkins jenkins-plugins jenkins-pipeline multibranch-pipeline
我有一个用于我的multibranch项目的声明性管道脚本,我想在其中读取一个文本文件并将结果存储为一个字符串变量,以供管道中的后续步骤访问.使用片段生成器我尝试做这样的事情:
filename = readFile 'output.txt'
Run Code Online (Sandbox Code Playgroud)
这filename将是我的字符串.
我在Jenkins控制台输出中出错:
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
WorkflowScript: 30: Expected a step @ line 30, column 5.
filename = readFile 'output.txt'
Run Code Online (Sandbox Code Playgroud)
我是否需要使用withEnv步骤将输出设置readFile为Jenkins环境变量?如果是这样,怎么样?
谢谢
Jon*_*n S 44
该错误是由于您只允许在steps指令中使用管道步骤.我知道的一种解决方法是使用script步骤并在其中包装任意管道脚本,并将结果保存在环境变量中,以便以后使用.
所以在你的情况下:
pipeline {
agent any
stages {
stage("foo") {
steps {
script {
env.FILENAME = readFile 'output.txt'
}
echo "${env.FILENAME}"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
Ada*_*ink 20
根据文档,如果以后想要在脚本的其他部分使用变量的值,也可以设置全局环境变量.在您的情况下,它将在根管道中设置它:
pipeline {
...
environment {
FILENAME = readFile ...
}
...
}
Run Code Online (Sandbox Code Playgroud)
Jan*_*sky 10
我们通过向environment步骤添加函数来解决这个问题,即:
environment {
ENVIRONMENT_NAME = defineEnvironment()
}
...
def defineEnvironment() {
def branchName = "${env.BRANCH_NAME}"
if (branchName == "master") {
return 'staging'
}
else {
return 'test'
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
79826 次 |
| 最近记录: |