有没有办法消除Jenkins声明性管道中的重复阶段?

ccgok5k5  于 2023-01-20  发布在  Jenkins
关注(0)|答案(1)|浏览(144)

我正在开发一个声明性管道,其中除了bat命令中的两到三个参数外,我有多个相同的阶段。基本上每个阶段都在代理上运行相同的应用程序,只有传递给应用程序的参数发生变化。目前我有10多个相同的阶段,除了阶段中的2或3个单词。
我试图找到一种方法,基本上只写一次阶段,然后用不同的参数一遍又一遍地运行它。我打算尝试使用函数,但是,我读到它不可能从函数运行管道命令。因为我的阶段使用的是Bat命令,我不认为我可以使用函数。
我是被所有几乎相同的阶段卡住了,还是有更好的方法来处理它?
我的舞台的简化版本看起来像这样...

Stages
{
    Stage ('First Stage')
    {
        steps {
            script {
                def programToRun = "\"${env.APPLICATION_PATH}\" /path:Output /file:FirstFile"                   

                def errorLevel = bat(
                    returnStatus: true,
                    script: scripttoExecute
                )
                if (errorLevel == 0)
                {
                    DoSomething()
                }
            }
        }
    }
    
    Stage ('Nth Stage')
    {
        steps {
            script {
                def programToRun = "\"${env.APPLICATION_PATH}\" /path:Output /file:NthFile"                 

                def errorLevel = bat(
                    returnStatus: true,
                    script: scripttoExecute
                )
                if (errorLevel == 0)
                {
                    DoSomething()
                }
            }
        }
    }
}
dohp0rv5

dohp0rv51#

您可以使用函数而不会出现问题。请检查下面的示例。

myVar = 1

pipeline {
    agent any

    stages {
        stage('Stage1') {
            steps {
                script {
                    myFunction("STAGE1")   
                }
            }
        }
        stage('Stage2') {
            steps {
                script {
                    myFunction("STAGE2")   
                }
            }
        }
    }
}

def myFunction(def input) {
    sh "echo $input"
    echo "$myVar"
}

相关问题