BlueOcean не запрашивает некоторые из моих многоотраслевых параметров jenkins

Недавно я изменил Jenkinsfile моей ветки (на данный момент у меня есть только одна ветка с этой веткой jenkins).

Когда я пытаюсь запустить многоветвевой конвейер для этой ветки, у меня запрашивается много параметров, но не новый, который я добавил.

Если я захожу в Jenkins(не в BlueOcean), то в конфигурации я их вижу, и если оттуда запускаю сборку, то тоже их вижу.

Вот мой Дженкинсфайл:

pipeline {
    agent {
        node{
            label 'windows-node'
            customWorkspace "D:\\ws\\${env.BRANCH_NAME}"            
        }
    }
    options{
        skipDefaultCheckout()
    }
    triggers{
        pollSCM 'H 23 * * *'
    }
    stages {        
        stage('Initialization started'){
            steps{
                echo "Job parameters:\n\t- Build X86: ${params.buildX86}\n\t- Build X64: ${params.buildX64}\n\t- Commit Version changes: ${params.commitVersionChanges}.${env.BUILD_NUMBER}\n\t- Setup Version: ${params.version}\n\t- Setup Configuration: ${params.setupConfiguration}\nCurrent repository: ${workspace}"                 
            }
        }
        stage('Checkout'){
            steps{
                echo "Custom checkout: ${env.BRANCH_NAME}"
                checkout scm
            }
        }
        stage('ABC Solution Pre-build') {
            steps {
                changeAsmVer "${params.version}.${env.BUILD_NUMBER}"
                bat 'nuget.exe restore Solution\\ABC.sln'
                powershell 'ContinuousIntegration\\Scripts\\ChangeBindingVersion.ps1 "HDAPluginNet4" "Src\\Clients\\OpcServer\\Xms.OpcHda.Server\\HDANSrv.Net4.exe.config"'             
            }           
        }
        stage('Preparing SonarQube'){
            when{
                expression{ params.runTests == true && env.BRANCH_NAME == 'develop'}
            }

            steps{
                withSonarQubeEnv('XYZ SonarQube') {
                    script{
                        def sqScannerMsBuildHome = tool 'SonarQube.Runner-3.0'
                    }
                    bat "${sqScannerMsBuildHome}\\SonarQube.Scanner.MSBuild.exe begin /k:ABC /n:ABC /v:${params.version}.${env.BUILD_NUMBER} /d:sonar.host.url=%SONAR_HOST_URL% /d:sonar.login=%SONAR_AUTH_TOKEN% /d:sonar.cs.nunit.reportsPaths=TestResult.xml /d:sonar.cs.dotcover.reportsPaths=dotcover.html"      
                }
            }
        }
        stage('Build ABC Solution') {
            steps{
                bat "\"${tool 'MSBUILD15'}\" Solution\\ABC.sln /p:Configuration=${params.setupConfiguration} /p:Platform=\"Any CPU\" /t:Rebuild"
            }
        }
        stage('ABC Solution Pre-setup') {
            when{
                expression{ params.buildX64 == true || params.buildX86 == true}
            }
            steps{
                bat "\"Src\\Obfuscation\\XmsApplicationsObfuscation\\Release\\obfuscationProcess.cmd\" \"${workspace}\" \"${workspace}\\output\\dotfuscator.zip\" \"XXXXXXXX\""
                bat "Doc\\BuildDocumentation.bat"
            }
        }
        stage('X64 Setup build') {
            when{
                expression{ params.buildX64 == true}
            }
            steps{
                bat "\"${tool 'MSBUILD15'}\" Solution\\SetupWix.sln /p:Configuration=${params.setupConfiguration} /p:Platform=x64 /t:Rebuild /p:Version=\"${params.version}.${env.BUILD_NUMBER}\""
                bat "move SetupWix\\SetupWix\\bin\\Release\\en-us\\ABCSetup.msi SetupWix\\SetupWix\\bin\\Release\\en-us\\ABCSetup_64_bit.msi"
            }
        }

        stage('X86 Setup build') {
            when{
                expression{ params.buildX86 == true}
            }
            steps{
                bat "\"${tool 'MSBUILD15'}\" Solution\\SetupWix.sln /p:Configuration=${params.setupConfiguration} /p:Platform=x86 /t:Rebuild /p:Version=\"${params.version}.${env.BUILD_NUMBER}\""
                bat "move SetupWix\\SetupWix\\bin\\Release\\en-us\\ABCSetup.msi SetupWix\\SetupWix\\bin\\Release\\en-us\\ABCSetup_32_bit.msi"
            }
        }

        stage('Post-setup'){
            when{
                expression{ params.buildX64 == true || params.buildX86 == true}
            }
            steps{
                powershell 'ContinuousIntegration\\Scripts\\MoveSetups.ps1'
            }
        }
        stage('Commit version change'){
            when{
                expression{ params.commitVersionChanges == true}
            }
            steps{
                bat 'git add "./*AssemblyInfo.*"'
                bat 'git commit -m "Assembly infos changed by Jenkins"'
                bat "git push origin HEAD:${env.BRANCH_NAME}"
            }
        }
        stage('Testing'){
            when{
                expression{ params.runTests == true}
            }
            steps{
                bat 'dotcover.exe analyze ContinuousIntegration/DotCoverConfig.xml'   
                nunit testResultsPattern: 'TestResult.xml'              
            }
        }
        stage('Finishing SonarQube'){
            when{
                expression{ params.runTests == true && env.BRANCH_NAME == 'develop'}
            }
            steps{
                withSonarQubeEnv('XYZ SonarQube') {
                    script{
                        def sqScannerMsBuildHome = tool 'SonarQube.Runner-3.0'
                    }
                    bat "${sqScannerMsBuildHome}\\SonarQube.Scanner.MSBuild.exe end"   
                }
            }
        }
    }
    post{
        failure {
            emailext body: "<b>Error while excuting the following job</b><br><br>Project: ${env.JOB_NAME} <br>Build Number: ${env.BUILD_NUMBER} <br>Build URL: ${env.BUILD_URL}", mimeType: 'text/html', recipientProviders: [brokenTestsSuspects(), brokenBuildSuspects()], subject: "ERROR CI: Project name -> ${env.JOB_NAME}"
        }
        unstable{
            emailext body: "<b>Error while excuting the following job</b><br><br>Project: ${env.JOB_NAME} <br>Build Number: ${env.BUILD_NUMBER} <br>Build URL: ${env.BUILD_URL}", mimeType: 'text/html', recipientProviders: [brokenTestsSuspects(), brokenBuildSuspects()], subject: "ERROR CI: Project name -> ${env.JOB_NAME}"
        }
    }
    parameters {
        booleanParam(name: 'buildX86', defaultValue: false, description: 'Build for X86 platform')
        booleanParam(name: 'buildX64', defaultValue: true, description: 'Build for X64 platform')
        booleanParam(name: 'commitVersionChanges', defaultValue: false, description: 'Commit the version changes')
        booleanParam(name: 'runTests', defaultValue: false, description: 'Run unit tests')      
        string(name: 'version', defaultValue: '3.6.0', description: 'Version of the setup to build')
        choice(name: 'setupConfiguration', choices: '''Release
Debug''', description: 'Setup configuration to use')
    }
}

«Новые» параметры, для которых я не получаю никаких запросов (только в BlueOcean), — это «runTests».

Что я могу сделать, чтобы получить их? Пробовал перезагружать, ничего не изменилось.


person J4N    schedule 26.06.2018    source источник
comment
По моему опыту, вы должны запустить конвейер один раз после добавления параметра, прежде чем он появится в Blue Ocean.   -  person Matt Schuchard    schedule 26.06.2018
comment
Я сделал, он запускался 2-3 раза, как если бы значение было = false.   -  person J4N    schedule 26.06.2018


Ответы (1)


Согласно примеру документации, parameters {} необходимо объявить перед stages{} , в противном случае он не знает, какие значения поместить в переменные шаблона, потому что скриптовые конвейеры последовательно выполняются сверху вниз.

Кроме того, если это было только что добавлено в Jenkinsfile, вам может потребоваться запустить его дважды, в первый раз он не узнает, что есть параметры, с которыми нужно иметь дело.

person Rob Porter    schedule 10.12.2018