2017-05-29 168 views
0

我有我使用的是詹金斯管道和失败,简单的Groovy脚本在混帐用一种奇怪的异常合并操作:詹金斯管道groovy.lang.MissingPropertyException

脚本:

node("master") { 
ws(env.BUILD_NUMBER.toString()) { // workspace 
    withCredentials([ 
     [$class: 'UsernamePasswordBinding', credentialsId: 'bitbucket', variable: 'BITBUCKET_AUTH'], 
     [$class: 'UsernamePasswordBinding', credentialsId: 'bitbucket-https', variable: 'BITBUCKET_HTTPS_AUTH'],]) { 

     def applicationName = env.CUSTOMER_NAME 
     def packageName = "no.bstcm.loyaltyapp.${env.REPO_NAME}" 
     def googleServicesJsonContents = env.GOOGLE_SERVICES_JSON 
     def bitbucketRepoName = "android_loyalty_app_${env.REPO_NAME}" 
     def bitbucketRepoApiUrl = "https://api.bitbucket.org/2.0/repositories/boost-development/${bitbucketRepoName}" 
     def starterBranch = "shopping_mall" 
     def projectPath = "jenkins-project" 

     stage('Create repository on bitbucket') { 
      sh "curl POST -v -u $BITBUCKET_AUTH $bitbucketRepoApiUrl -H 'Content-Type: application/json' -d '{\"is_private\": true, \"project\": {\"key\": \"LOY\"}}'" 
     } 

     stage('Create local repository') { 
      dir(projectPath) { 
       sh "git init" 
       sh "touch README.md" 
       sh "git add README.md" 
       sh "git commit --message='Initial commit'" 
      } 
     } 

     stage('Merge starter') { 
      dir(projectPath) { 
       sh "git init" 
       sh "git remote add starter https://[email protected]/boost-development/app_designer_starter_android.git" 
       sh "git fetch starter" 
       sh "git checkout master" <--- FAILS HERE 
       sh "git remote add origin https://[email protected]/boost-development/$bitbucketRepoName.git" 
       sh "git push -u origin master" 
       sh "git remote remove starter" 
      } 
     } 
    } 
} 

我收到异常(和管道破裂):

[Pipeline] sh 
[jenkins-project] Running shell script 
+ git fetch starter 
From https://bitbucket.org/***/*** 
* [new branch]  master  -> starter/master 
[Pipeline] sh 
[jenkins-project] Running shell script 
+ git checkout master 
Already on 'master' 
Branch master set up to track remote branch master from starter. 
[Pipeline] } 
[Pipeline] // dir 
[Pipeline] } 
[Pipeline] // stage 
[Pipeline] } 
[Pipeline] // withCredentials 
[Pipeline] } 
[Pipeline] // ws 
[Pipeline] } 
[Pipeline] // node 
[Pipeline] End of Pipeline 
groovy.lang.MissingPropertyException: No such property: git for 
class: org.codehaus.groovy.runtime.GStringImpl 
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAd 
apter.java:53) 
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.getProperty(ScriptBytecodeAdapter.java:458) 
at org.kohsuke.groovy.sandbox.impl.Checker$4.call(Checker.java:243) 
at org.kohsuke.groovy.sandbox.GroovyInterceptor.onGetProperty(GroovyInterceptor.java:52) 
at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onGetProperty(SandboxInterceptor.java:308) 
at org.kohsuke.groovy.sandbox.impl.Checker$4.call(Checker.java:241) 
at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.java:238) 
at com.cloudbees.groovy.cps.sandbox.SandboxInvoker.getProperty(SandboxInvoker.java:28) 
at com.cloudbees.groovy.cps.impl.PropertyAccessBlock.rawGet(PropertyAccessBlock.java:20) 
at WorkflowScript.run(WorkflowScript:36) 
at ___cps.transform___(Native Method) 

。你们有什么想法,有什么事情ç请问这个问题?我不知道,谷歌在这里没有什么帮助。

回答

1

麻烦在这种常规的字符串:

sh ".... $bitbucketRepoName.git ...." 

在这种情况下,常规尝试访问的变量bitbucketRepoName

财产git只是改变这一点:

sh ".... ${bitbucketRepoName}.git ...." 
+0

天啊谢谢你这么多。你不知道我没有注意到这个语法错误并寻找jenkins相关问题而浪费了多少时间。 – Rybzor