我希望有一些全局JenkinsFile,可以在我们使用的任何JenkinsFile中作为一个库使用。具体而言,在使用该JenkinsFile的JenkinsLib中声明环境变量的阶段。
我们已经使用声明式JenkinsFile作为共享JenkinsLib,我们在各种乔布斯中都使用了大量的Gloabl JenkinsFiles。但在几乎所有的全球JenkinsFiles中,我们都有相同的几个阶段。例如结帐、init等,我希望有一些全局阶段库文件,可以在我们为JenkinsFiles创建的任何一个JenkinsLib中使用。
例如,具体来说,我们有一个"init“阶段,它宣布了几个ENV和Global。所以我创造了一个"getGloabalStage.groovy“就像-
// Init stage
def initStage = "
env.STARTED_BY = buildInfo.getStartedByUser()
env.SVN_REVISION = shell.getCommandOutput(\"svn info --show-item last-changed-revision\")
env.SVN_AUTHOR = scmExtras.getEmailsFromChangeList().join(\",\")
env.PRODUCT_VERSION = versionHelper.getMainVersion()
def timeInSeconds = (long) (currentBuild.startTimeInMillis / 1000)
env.TEST_REPORT = \"TestsResults_${currentBuild.number}.xml\"
currentBuild.description = \"${env.STARTED_BY} on ${env.NODE_NAME}, ${env.PRODUCT_VERSION} - r.${env.SVN_REVISION}\"
buildInfo.printBuildInfo()
"
// svn checkout stage
def svnCheckoutStage = "svn.checkout(\"${env.REPO_NAME}\",\"${env.BRANCH_NAME}\")"
// generate stage
def generateStage(stageRequested) {
stageToRun = "${stageRequested}Stage"
return {
"echo \"Gloabl Stage ${stageRequested}\"
${stageToRun}
"
}
}然后我尝试在其他JenkinsFile中使用它,比如
stages {
stage('Init') {
steps{
script {
getGloabalStage.generateStage("init")
}
}
}
stage ('Checkout'){
steps{
script {
getGloabalStage.generateStage("svnCheckout")
}
}
}但"init“阶段行不通。我尝试了几个选项“和\但它没有工作”
我还尝试将"stage -> step ->脚本“放入其中,但我们使用了声明式jenkinsFile,因此它在调用JenkinsFile时不接受它。
我还尝试使用initStage作为一个函数并调用它,但也没有成功。
目前我所犯的错误-
2:除了“‘\n’”之外,什么都期待得到,无论如何,@第2行,第63栏。= buildInfo.getStartedByUser()
因此,说到底,我需要在声明式JenkinsFile中有一些全局位置,在这里我可以定义全局阶段和步骤,这些步骤可以声明全局变量,并在包含和执行它的JenkinsFile中定义参数。
发布于 2022-07-12 08:31:36
你可以尝试这样的方法
def setVars() {
env.STARTED_BY = buildInfo.getStartedByUser()
env...
}
def svnCheckout() {
svn.checkout("${env.REPO_NAME}", "${env.BRANCH_NAME}")
}打电话给他们
stages {
stage('Init') {
steps{
script {
getGloabalStage.setVars()
}
}
}
stage ('Checkout'){
steps{
script {
getGloabalStage.svnCheckout()
}
}
}
}https://stackoverflow.com/questions/72948645
复制相似问题