我想添加一个使用Groovy插件的Build步骤来读取文件并根据文件内容触发构建失败.
如何在groovy插件中注入工作区文件路径?
myFileDirectory = // Get workspace filepath here ???
myFileName = "output.log"
myFile = new File(myFileDirectory + myFileName)
lastLine = myFile.readLines().get(myFile.readLines().size().toInteger() - 1)
if (lastLine ==~ /.Fatal Error.*/ ){
println "Fatal error found"
System.exit(1)
} else{
println "nothing to see here"
}
Run Code Online (Sandbox Code Playgroud)
tha*_*smt 50
我意识到这个问题是关于创建一个插件,但是由于新的Jenkins 2 Pipeline构建使用Groovy,我发现自己在尝试找出如何从Pipeline构建中的工作空间读取文件时发现自己.所以也许我可以帮助像我这样的人.
原来这很简单,有一个readfile步骤,我应该有rtfm:
env.WORKSPACE = pwd()
def version = readFile "${env.WORKSPACE}/version.txt"
Run Code Online (Sandbox Code Playgroud)
bir*_*men 18
如果您在管道构建步骤期间尝试从工作区读取文件,则有一种方法:
readFile('name-of-file.groovy')
Run Code Online (Sandbox Code Playgroud)
有关参考,请参阅https://jenkins.io/doc/pipeline/steps/workflow-basic-steps/#readfile-read-file-from-workspace.
根据您的评论,您最好使用Text-finder插件.
它允许搜索文件(以及控制台)的正则表达式,然后设置unstable或者failed如果找到的话.
至于Groovy,您可以使用以下方法访问${WORKSPACE}环境变量:
def workspace = manager.build.getEnvVars()["WORKSPACE"]
如果有人有相同的要求,这可能会对他们有所帮助。
这将读取包含 Jenkins 作业名称的文件,并从一个作业迭代运行它们。
请在您的 Jenkins 中相应地更改以下代码。
pipeline {
agent any
stages {
stage('Hello') {
steps {
script{
git branch: 'Your Branch name', credentialsId: 'Your crendiatails', url: ' Your BitBucket Repo URL '
##To read file from workspace which will contain the Jenkins Job Name ###
def filePath = readFile "${WORKSPACE}/ Your File Location"
##To read file line by line ###
def lines = filePath.readLines()
##To iterate and run Jenkins Jobs one by one ####
for (line in lines) {
build(job: "$line/branchName",
parameters:
[string(name: 'vertical', value: "${params.vert}"),
string(name: 'environment', value: "${params.env}"),
string(name: 'branch', value: "${params.branch}"),
string(name: 'project', value: "${params.project}")
]
)
}
}
}
}
}
}Run Code Online (Sandbox Code Playgroud)
虽然这个问题只与查找目录路径($WORKSPACE)有关,但是我需要从工作区读取文件并将其解析为 JSON 对象以读取声纳问题(忽略次要/注释问题)
可能会帮助某人,这就是我所做的 - 来自readFile
jsonParse(readFile('xyz.json'))
Run Code Online (Sandbox Code Playgroud)
和 jsonParse 方法-
@NonCPS
def jsonParse(text) {
return new groovy.json.JsonSlurperClassic().parseText(text);
}
Run Code Online (Sandbox Code Playgroud)
这也需要在 ManageJenkins-> 进程内脚本批准中进行脚本批准
| 归档时间: |
|
| 查看次数: |
101535 次 |
| 最近记录: |