我正在尝试在Jenkins上构建一个管道,该管道在节点上运行命令并通知我以下错误:
groovy.lang.MissingPropertyException: No such property: api for class: groovy.lang.Binding
at groovy.lang.Binding.getVariable(Binding.java:63)
at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onGetProperty(SandboxInterceptor.java:270)
at org.kohsuke.groovy.sandbox.impl.Checker$6.call(Checker.java:289)
at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.java:293)
at com.cloudbees.groovy.cps.sandbox.SandboxInvoker.getProperty(SandboxInvoker.java:29)
at com.cloudbees.groovy.cps.impl.PropertyAccessBlock.rawGet(PropertyAccessBlock.java:20)我不知道node命令,它是一个错误命令,或者它代表另一个错误,这是de pipeline文件:
def call() {
pipeline {
agent any
parameters {
string(name: 'branch', defaultValue: 'refs/heads/develop', description: 'git branch where fetch sourcecode')
}
environment {
GIT_URL = getGitRepoURL()
GIT_CREDENTIALS = '*******'
}
tools {
nodejs "node"
}
triggers {
cron('H 06 * * 1-5')
}
stages {
stage ('Initialize'){
steps {
echo 'initializing'
deleteDir()
bat '''
echo "PATH = %PATH%"
echo "M2_HOME = %M2_HOME%"
'''
}
}
stage ('Sourcecode'){
steps {
echo 'fetching sourcecode from ' + env.GIT_URL
checkout([$class: 'GitSCM', branches: [[name: params.branch]], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: env.GIT_CREDENTIALS, url: env.GIT_URL]]])
}
}
stage ('Execute raml2html'){
steps {
sh 'cd ..\HelpDevelopsAPI
node raml2html -s %WORKSPACE% -c %WORKSPACE%\..\apidef-aqj-commons -o /server/api --cat .*.html --schema /server/schema/%JOB_BASE_NAME% --mock /server/mock/%JOB_BASE_NAME%
cd %WORKSPACE%'
}
}
}
}
}
def getGitRepoURL() {
String projectName = env.JOB_BASE_NAME
print 'projectName '+projectName +'\n'
String[] projectParts = projectName.tokenize( '-' )
String bian = projectParts[1]
String name = projectParts[0]+'-'+projectParts[1]+'-'+projectParts[2]
echo 'exampleurl'+bian+'/'+name+'.git'
return 'exapleurl'+bian+'/'+name+'.git'
}发布于 2019-08-09 17:56:57
您看到的错误意味着jenkins正在脚本中查找单词api,并试图解释是jenkins的变量或命令,但没有找到匹配项。我在您的脚本中搜索了单词api,发现了两个问题:
,
%VAR%)。您应该改用$VAR。尝试更改:
sh 'cd ..\HelpDevelopsAPI
node raml2html -s %WORKSPACE% -c %WORKSPACE%\..\apidef-aqj-commons -o /server/api --cat .*.html --schema /server/schema/%JOB_BASE_NAME% --mock /server/mock/%JOB_BASE_NAME%
cd %WORKSPACE%'至:
sh '''cd ..\HelpDevelopsAPI
node raml2html -s $WORKSPACE -c $WORKSPACE\..\apidef-aqj-commons -o /server/api --cat .*.html --schema /server/schema/$JOB_BASE_NAME --mock /server/mock/$JOB_BASE_NAME
cd $WORKSPACE'''发布于 2021-07-01 19:14:06
您正在使用特定于Windows的构造/语法。除了@vasiliki-siakka提出的建议之外:将字符串中的反斜杠目录分隔符\替换为正斜杠/
sh '''cd ../HelpDevelopsAPI
node raml2html -s $WORKSPACE -c $WORKSPACE/../apidef-aqj-commons -o /server/api --cat .*.html --schema /server/schema/$JOB_BASE_NAME --mock /server/mock/$JOB_BASE_NAME
cd $WORKSPACE'''或者转义反斜杠:\\。
发布于 2021-10-26 13:17:23
不允许声明性管道中的“def”部分,尽管它是脚本管道的一部分。请参阅此博客“如何使用嵌入脚本管道”- How can I use def in jenkins pipeline
https://stackoverflow.com/questions/57410799
复制相似问题