2017-04-26 11 views
14

से बिल्ड का नाम और विवरण सेट करें, मैं जेनकिंस घोषणात्मक पाइपलाइन से बिल्ड नाम और विवरण सेट करना चाहता हूं, लेकिन इसे करने का उचित तरीका नहीं मिल रहा है। मैंने पाइपलाइन के बाद एक पर्यावरण ब्रैकेट का उपयोग करने की कोशिश की, एजेंट ब्रैकेट में नोड ब्रैकेट का उपयोग करके, मुझे हमेशा वाक्यविन्यास त्रुटि मिलती है।जेनकिंस घोषणात्मक पाइपलाइन

मेरी Jenkinsfile के पिछले संस्करण तो प्रकार है:

pipeline { 
    stages { 
     stage("Build") { 
      steps { 
       echo "Building application..." 
       bat "%ANT_HOME%/bin/ant.bat clean compile" 
       currentBuild.name = "MY_VERSION_NUMBER" 
       currentBuild.description = "MY_PROJECT MY_VERSION_NUMBER" 
      } 
     } 
     stage("Unit Tests") { 
      steps { 
       echo "Testing (JUnit)..." 
      echo "Testing (pitest)..." 
       bat "%ANT_HOME%/bin/ant.bat run-unit-tests" 
      } 
     } 
     stage("Functional Test") { 
      steps { 
       echo "Selenium..." 
      } 
     } 
     stage("Performance Test") { 
      steps { 
       echo "JMeter.." 
      } 
     } 
     stage("Quality Analysis") { 
      steps { 
       echo "Running SonarQube..." 
       bat "%ANT_HOME%/bin/ant.bat run-sonarqube-analysis" 
      } 
     } 
     stage("Security Assessment") { 
      steps { 
       echo "ZAP..." 
      } 
     } 
     stage("Approval") { 
      steps { 
      echo "Approval by a CS03" 
      } 
     } 
     stage("Deploy") { 
      steps { 
       echo "Deploying..." 
      } 
     } 
    } 
    post {  
     always { 
      junit '/test/reports/*.xml' 
     } 
     failure { 
      emailext attachLog: true, body: '', compressLog: true, recipientProviders: [[$class: 'CulpritsRecipientProvider'], [$class: 'DevelopersRecipientProvider']], subject: '[JENKINS] MY_PROJECT build failed', to: '...recipients...' 
     } 
     success { 
      emailext attachLog: false, body: '', compressLog: false, recipientProviders: [[$class: 'DevelopersRecipientProvider']], subject: '[JENKINS] MY_PROJECT build succeeded', to: '...recipients...' 
     } 
    }  
} 

त्रुटि है:

org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: 
WorkflowScript: 11: Expected a step @ line 11, column 5. 
       currentBuild.name = "MY_VERSION_NUMBER" 
    ^

WorkflowScript: 12: Expected a step @ line 12, column 5. 
       currentBuild.description = "MY_PROJECT MY_VERSION_NUMBER" 
    ^

आदर्श रूप में, मैं build.properties से MY_PROJECT और MY_VERSION_NUMBER को पढ़ने में सक्षम होना चाहते हैं फ़ाइल, या जेनकींस बिल्ड लॉग से। उस आवश्यकता के बारे में कोई भी मार्गदर्शन भी सराहना की जाएगी।

stage("Build") { 
    steps { 
     echo "Building application..." 
     bat "%ANT_HOME%/bin/ant.bat clean compile" 

     script { 
      def props = readProperties file: 'build.properties' 
      currentBuild.displayName = "v" + props['application.version'] 
     } 
    } 

अब बिल्ड संस्करण स्वचालित रूप से build.properties फ़ाइल को पढ़ने से पाइपलाइन के दौरान सेट है:

अद्यतन

जवाब मैं नीचे था, काम निम्नलिखित के आधार पर।

उत्तर

21

मुझे लगता है कि यह वही करेगा जो आप चाहते हैं। मैं एक script ब्लॉक के अंदर यह करने के लिए कर रहा था:

pipeline { 
    stages { 
     stage("Build"){ 
      steps { 
       script { 
        currentBuild.displayName = "The name." 
        currentBuild.description = "The best description." 
       } 
       ... do whatever. 
      } 
     } 
    } 
} 

स्क्रिप्ट एक कथात्मक पाइप लाइन से बाहर निकलने का तो अब बचने की तरह है। ऐसा करने के लिए शायद एक घोषणात्मक तरीका है लेकिन मुझे यह नहीं मिला। और एक और नोट। मुझे लगता है कि currentBuild.name के बजाय currentBuild.displayName चाहते हैं जेनकिंस ग्लोबल्स के लिए प्रलेखन में मुझे वर्तमान बिल्ड के तहत नाम संपत्ति नहीं दिखाई दे रही थी।

+0

काम करता है चमत्कार। धन्यवाद! –

संबंधित मुद्दे