Переменная доступа Jenkinsfile внутри параметра - PullRequest
0 голосов
/ 27 февраля 2019

Я пытаюсь создать параметр в Jenkinsfile, который по умолчанию равен BUILD_NUMBER

pipeline {
    agent { label 'windows' }

    options {
        copyArtifactPermission("${JOB_NAME}");
    }

    parameters {
        string(
            name: 'DEPLOY_BUILD_NUMBER',
            defaultValue: "${env.BUILD_NUMBER}",
            description: 'Fresh Build and Deploy OR Deploy Previous Build Number'
        )
    }

    stages {
        stage ('Build') {
            steps {
                sh '''
                   echo "Building Project"
                   Echo "Packaging into tar.gz"
                '''
            }
            post {
                success {
                    archiveArtifacts artifacts: '*.tar.gz'
                }
            }
        }
        stage ('Deploy') {
            steps {
                echo "Deploying...."
                echo "${params.DEPLOY_BUILD_NUMBER}"
                echo "${env.BUILD_NUMBER}"
                script {
                    step ([$class: 'CopyArtifact',
                         projectName: '${JOB_NAME}',
                         filter: "*.tar.gz",
                         fingerprintArtifacts: true,
                         selector: [$class: 'SpecificBuildSelector', buildNumber: "${params.DEPLOY_BUILD_NUMBER}"]
                         ]);
                }
            }
        }
    }
    post {
        success {
            script {
                currentBuild.displayName = "#${BUILD_NUMBER}"
            }
        }
    }
}

Но на самом деле это печать, а не сборка нет

[Pipeline] echo
Deploying....
[Pipeline] echo
env.BUILD_NUMBER
[Pipeline] echo
144

Что мне нужно изменить наполучить действительное значение env.BUILD_NUMBER, когда я ссылаюсь на params.DEPLOY_BUILD_NUMBER.

1 Ответ

0 голосов
/ 27 февраля 2019

Вы можете решить эту проблему, указав в параметрах номер сборки как env.BUILD_NUMBER.Учитывая ваш пример кода, он будет выглядеть следующим образом:

parameters {
  string(
    name: 'DEPLOY_BUILD_NUMBER',
    defaultValue: "${env.BUILD_NUMBER}",
    description: 'Fresh Build and Deploy OR Deploy Previous Build Number'
  )
}

Обратите внимание, что env.BUILD_NUMBER приведен как строка (что в любом случае подходит для того, что вы хотите), но если вам нужно выполнять арифметические операции над нимнапример, тогда вам нужно будет сделать что-то вроде:

parameters {
  string(
    name: 'DEPLOY_BUILD_NUMBER',
    defaultValue: "${env.BUILD_NUMBER.toInteger() + 1}",
    description: 'Fresh Build and Deploy OR Deploy Previous Build Number'
  )
}

Это будет преобразовать env.BUILD_NUMBER в целое число, добавить его к нему, а затем спецификация string() в параметре приведёт егоназад к строке.

Теперь, чтобы фактически использовать параметр DEPLOY_BUILD_NUMBER, вам нужно обратиться к нему из карты params, например params.DEPLOY_BUILD_NUMBER.

steps {
  echo "${params.DEPLOY_BUILD_NUMBER}"
  script {
    step ([$class: 'CopyArtifact',
      projectName: '${JOB_NAME}',
      filter: "*.tar.gz",
      fingerprintArtifacts: true,
      selector: [$class: 'SpecificBuildSelector', buildNumber: "${params.DEPLOY_BUILD_NUMBER}"]
    ]);
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...