尽管文件在预期的位置可用,但我在jenkins中得到的文件也不例外。我在这里试图做的是,获取最新的提交文件并存储在filescommitted变量中,然后将其作为输入传递给readJSON文件。似乎传递了变量值,但无法在该位置找到文件。
错误:
java.io.FileNotFoundException: /appl/JenkinsSlave/workspace/SDA_WIP_development/RA agent/java-infra-war-tomcat-piaas.json
does not exist.
仅当我对文件名进行硬编码时才有效
readJSON file: "java-infra-war-tomcat-piaas.json"
在以下情况下不起作用。有人可以给我打电话什么问题吗?
readJSON file: filesCommitted
readJSON file: "${env.WORKSPACE}/${filesCommitted}"
readJSON file: "${WORKSPACE}/${filesCommitted}"
Jenkins管道脚本:
import groovy.json.JsonSlurper
import groovy.json.*
import groovy.json.JsonBuilder
node('java'){
def gitURL = Git_URL as String
def branchName = Branch as String
def GitHubCredentialsId = GitHub_Credentials_Id as String
def filesCommitted
stage('Clean')
{
deleteDir()
}
stage('SCM')
{
git branch: branchName, credentialsId: GitHubCredentialsId, url: gitURL
filesCommitted = sh(script:'git diff --name-only HEAD^', returnStdout:true)
def files = sh(script: "find . -name '*.json'", returnStdout:true)
println ("new files commited:" + filesCommitted)
println ("all files commited:" + files)
sh "pwd"
sh "ls"
}
stage('Add agents in RA'){
//def infra_file = unstashParam "infrafile"
//println(infra_file)
println(env.WORKSPACE)
println (filesCommitted)
def projects = readJSON file: "${env.WORKSPACE}/${filesCommitted}"
println(projects)
}
}
完整的jenkins控制台输出:
[Pipeline] sh
+ git diff --name-only 'HEAD^'
[Pipeline] sh
+ find . -name '*.json'
[Pipeline] echo
new files commited:java-infra-war-tomcat-piaas.json
[Pipeline] echo
all files commited:./java-infra-ear-jboss-piaas.json
./java-infra-war-tomcat-piaas.json
./java-infra-war-tomcat-piaas_demo.json
./angular-infra-zip-iis-piaas.json
./dotnet-infra-zip-iis-piaas.json
[Pipeline] sh
+ pwd
/appl/JenkinsSlave/workspace/SDA_WIP_development/RA agent
[Pipeline] sh
+ ls
angular-infra-zip-iis-piaas.json
dotnet-infra-zip-iis-piaas.json
java-infra-ear-jboss-piaas.json
java-infra-war-tomcat-piaas_demo.json
java-infra-war-tomcat-piaas.json
README.md
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Add agents in RA)
[Pipeline] echo
java-infra-war-tomcat-piaas.json
[Pipeline] readJSON
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
java.io.FileNotFoundException: /appl/JenkinsSlave/workspace/SDA_WIP_development/RA agent/java-infra-war-tomcat-piaas.json
does not exist.
filesCommitted
内容结尾似乎有多余的换行符。
尝试这个:
filesCommitted = sh(script:'git diff --name-only HEAD^', returnStdout:true).trim()
def projects = readJSON file: filesCommitted
使用时,通常会trim()
在sh
步骤中添加returnStdout:true
。这将删除返回字符串前后的所有多余空格。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句