当前位置: 首页 > 知识库问答 >
问题:

脚本化管道中的后期等效项?

吴品
2023-03-14

与声明式管道相比,脚本管道中“post”的语法是什么?https://jenkins.io/doc/book/pipeline/syntax/#post

共有2个答案

苗冯浩
2023-03-14

你可以修改@jf2010解决方案,让它看起来整洁一点(在我看来)

try {
    pipeline()
} catch (e) {
    postFailure(e)
} finally {
    postAlways()
}


def pipeline(){
    stage('Test') {
        sh 'echo "Fail!"; exit 1'
    }
    println 'This will run only if successful'
}

def postFailure(e) {
    println "Failed because of $e"
    println 'This will run only if failed'

}

def postAlways() {
    println 'This will always run'
}
郁景龙
2023-03-14

对于脚本化管道,所有内容都必须以编程方式编写,并且大部分工作在 finally 块中完成:

< code>Jenkinsfile(脚本管道):

node {
    try {
        stage('Test') {
            sh 'echo "Fail!"; exit 1'
        }
        echo 'This will run only if successful'
    } catch (e) {
        echo 'This will run only if failed'

        // Since we're catching the exception in order to report on it,
        // we need to re-throw it, to ensure that the build is marked as failed
        throw e
    } finally {
        def currentResult = currentBuild.result ?: 'SUCCESS'
        if (currentResult == 'UNSTABLE') {
            echo 'This will run only if the run was marked as unstable'
        }

        def previousResult = currentBuild.getPreviousBuild()?.result
        if (previousResult != null && previousResult != currentResult) {
            echo 'This will run only if the state of the Pipeline has changed'
            echo 'For example, if the Pipeline was previously failing but is now successful'
        }

        echo 'This will always run'
    }
}

https://Jenkins . io/doc/pipeline/tour/running-multi-steps/#整理

 类似资料:
  • 问题内容: 我正在尝试将旧样式的基于项目的工作流转换为基于Jenkins的管道。在浏览文档时,我发现有两种不同的语法分别命名为和。例如最近(2016年底)发布的Jenkins网络语法。尽管有一个新的语法版本,Jenkins仍然也支持脚本语法。 现在,我不确定这两种类型的哪种情况最合适。语法将很快被弃用吗?詹金斯管道的未来会是这样吗? 任何可以分享有关这两种语法类型的想法的人。 问题答案: 最初创建

  • 为了实现自动化,我希望用管道作业初始化Jenkins2.0实例。我想创建一个Groovy脚本,该脚本在启动时复制到文件夹。该脚本应该创建一个Jenkins2.0管道作业,用于处理来自SCM的Jenkinsfile。

  • 我希望能够在Jenkins中包装一个“阶段”,这样我就可以在一个阶段的开始和结束时执行自定义代码,比如: 我想我可以通过使用元类来做到这一点: 但是Groovy脚本本身似乎是一个绑定,它没有元类: 我还在学习Groovy和Jenkins管道是如何工作的,所以也许我只是错过了一些东西。

  • 问题内容: 我想在脚本化管道中使用选项。 可能吗 ? 问题答案: 您可以从这里尝试答案

  • 问题内容: 对于自动化,我想使用管道作业初始化Jenkins 2.0实例。我想创建一个Groovy脚本,在启动时将其复制到该文件夹中。该脚本应创建一个Jenkins 2.0 Pipeline作业,以处理来自SCM的Jenkinsfile。 我找不到与2.0管道类相关的Javadoc或如何执行此操作的示例。 以前,使用Job DSL创建管道,我使用Groovy脚本通过构建器创建。该工作将成为Job

  • 问题内容: 我试图使用以下代码执行构建,最后,在构建成功时执行构建后操作。仍然,我得到了MultipleCompilationErrorsException,说我的try块不是有效的节定义。请帮忙,我尝试了很多重组障碍,但似乎无法解决问题。 问题答案: 您使用的是声明式的方式来指定管道,因此您不得使用try / catch块(用于脚本化管道),而应使用post部分。参见:https : //jen