2017-05-29 179 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