詹金斯。在选项阶段使用共享库

时间:2019-05-06 07:45:54

标签: jenkins jenkins-pipeline

因此,我在jenkins中创建了一个带有侦听器的共享库,每次管道读取FlowNode时都会触发该侦听器,因此我可以在每个阶段,步骤等之前和之后运行groovy代码。

我可以在这样的步骤中调用共享库:

pipeline {
    agent any
    stages {
        stage('prepare') { 
            steps{
                prepareStepsWrapper()
            }
        }
        stage('step1') { 
            steps {
                echo 'step1'
            }
        }
        stage('step2') { 
            steps {
                echo 'step2'
            }
        }
        stage('step3') { 
            steps {
                echo 'step3'
                // fail on purpose
                sh 'notfoundexecutablelol'
            }
        }
        stage('step4') { 
            steps {
                echo 'step4'
            }
        }
    }
    post{
        always{
            println env.getEnvironment()
        }
    }
}

效果很好!

使用这种方法,“准备”阶段需要过滤掉,因此我切换到options指令:

pipeline {
    agent any
    options {
        prepareStepsWrapper()
    }
    stages {
        stage('step1') { 
            steps {
                echo 'step1'
            }
        }
        ...
    }
}

但是管道失败

  

WorkflowScript:4:无效的选项类型“ prepareStepsWrapper”

tl; dr;如何在options指令中加载共享库?

1 个答案:

答案 0 :(得分:1)

选项阶段有什么作用?

  

options指令允许配置特定于管道的选项   从管道本身内部。

您无法在options-stage中调用共享库。此阶段不应用于执行任何逻辑,而应为管道设置配置。可以找到所有可用的选项和文档here

您可以尝试创建一个仅调用prepareStepsWrapper()并使用locks的阶段,以避免在此阶段之前执行其他阶段。