title: Set the build name and description from a Jenkins Declarative Pipeline
body: <p>I would like to set the build name and description from a Jenkins Declarative Pipeline, but can't find the proper way of doing it. I tried using an environment bracket after the pipeline, using a node bracket in an agent bracket, etc. I always get syntax error. </p>
  
  <p>The last version of my Jenkinsfile goes like so:</p>
  
  <pre><code>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...'
          }
      }       
  }
  </code></pre>
  
  <p>Error is:</p>
  
  <pre><code>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"
         ^
  </code></pre>
  
  <p>Ideally, I'd like to be able to read MY_PROJECT and MY_VERSION_NUMBER from the build.properties file, or from the Jenkins build log. Any guidance about that requirement would be appreciated as well.</p>
  
  <p><strong>UPDATE</strong></p>
  
  <p>Based on the answer I had below, the following worked:</p>
  
  <pre><code>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']
          }
      }
  </code></pre>
  
  <p>Now the build version is automatically set during the pipeline by reading the build.properties file.</p>