如何在Jenkins声明式管道中为步骤创建方法?

时间:2019-01-09 10:30:21

标签: jenkins groovy jenkins-declarative-pipeline

我想将stepspost包装在一个函数中。

这很好:

pipeline {
    agent any
    stages {
        stage('Test') {
            steps {
                whateverFunction()
            }
            post {
                sh 'echo test'
            }
        }
    }
}

void whateverFunction() {
    sh 'ls /'
}

但是,一旦我打包步骤并将其发布到我的函数中,它将不起作用。 (失败,错误:steps in a stage must be in a ‘steps’ block.

pipeline {
    agent any
    stages {
        stage('Test') {
            whateverFunction()
        }
    }
}

void whateverFunction() {
    steps {
        sh 'echo test'  
    }
    post {
        sh 'echo test'
    }
}

我还尝试过拥有steps,然后在其中包含steps的那一步中调用我的函数。基本上使steps中的steps变形,导致没有执行任何步骤的行为。 (但显然这将是有效的詹金斯文件)

是否可以有一个在舞台内包含stepspost的函数。还是有办法实现类似的功能?

1 个答案:

答案 0 :(得分:0)

似乎无法在声明式管道的方法内使用post创建类似功能。为此,您可以尝试使用脚本化管道。

对于声明性管道,只能在postexample)内或stage块(example)之后使用stages部分。