BlueOcean не запрашивает некоторые из моих многоотраслевых параметров jenkins - PullRequest
0 голосов
/ 26 июня 2018

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

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

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

Вот мой Jenkinsfile:

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».

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

1 Ответ

0 голосов
/ 10 декабря 2018

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

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

...