首页 > 解决方案 > 如何在 Jenkins 文件(管道)中使用 Shared Libray 中的 groovy 常量?

问题描述

我想在我的 Jenkins 管道中使用 Shared Libray 中的 grrovy 常量。我试试这个,但我有这个错误:

org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: WorkflowScript: 27: Not a valid stage section definition: "def paramChecker = ParameterChecker.new(this)". Some extra configuration is required. @ line 27, column 9. stage('Checkout') {

def libIdentifier = "project-jenkins-pipeline"
def libGitBranch = params.LIB_GIT_BRANCH
if(libGitBranch) {
    libIdentifier += "@${libGitBranch}"
}

def com = library(identifier: libIdentifier, changelog: false).com

def Constants = com.project.Constants
def ParameterChecker = com.project.ParameterChecker

pipeline {
    agent {
        docker {
            label "linux"
            image "my-host:8082/project-build-java:jdk1.6-jdk1.8-mvn3.2.5"
            registryUrl 'http://my-host:8082'
            registryCredentialsId 'ReadNexusAccountService'
        }
    }
    stages {
        stage('Clean workspace') {
            steps {
                deleteDir()
            }
        }
        stage('Checkout') {
            def paramChecker = ParameterChecker.new(this)
            paramChecker.checkProjectAndBranchNames()
            checkoutGitSCM(
                url: "${Constants.BITBUCKET_URL}/${paramChecker.projectName}.git",
                tag: Constants.GIT_PROJECT_DEFAULT_BRANCH
            )
        }       
        stage('Compilation Maven') {
            steps {
                timestamps {
                    sh 'mvn -version'   
                }
            }
        }
    }
}

标签: jenkinsjenkins-pipelinejenkins-shared-libraries

解决方案


script进去stepsstage('Checkout')

def libIdentifier = "project-jenkins-pipeline"
def libGitBranch = params.LIB_GIT_BRANCH
if(libGitBranch) {
    libIdentifier += "@${libGitBranch}"
}

def com = library(identifier: libIdentifier, changelog: false).com

pipeline {
    agent {
        docker {
            label "linux"
            image "my-host:8082/project-build-java:jdk1.6-jdk1.8-mvn3.2.5"
            registryUrl 'http://my-host:8082'
            registryCredentialsId 'ReadNexusAccountService'
        }
    }
    stages {
        stage('Clean workspace') {
            steps {
                deleteDir()
            }
        }
        stage('Checkout') {
            steps {
                script {
                    def Constants = com.project.Constants
                    def ParameterChecker = com.project.ParameterChecker
                    def paramChecker = ParameterChecker.new(this)
                    paramChecker.checkProjectAndBranchNames()
                    checkoutGitSCM(
                        url: "${Constants.BITBUCKET_URL}/${paramChecker.projectName}.git",
                        tag: Constants.GIT_PROJECT_DEFAULT_BRANCH
                    )
                }
            }
        }       
        stage('Compilation Maven') {
            steps {
                timestamps {
                    sh 'mvn -version'   
                }
            }
        }
    }
}

感谢@Matt SchuchardJenkins:无法在管道阶段定义变量


推荐阅读