【问题标题】:Execute code prior to execution of the Jenkinsfile在执行 Jenkinsfile 之前执行代码
【发布时间】:2016-12-25 14:03:29
【问题描述】:

我们在 git 存储库中使用 Jenkinsfiles 来定义 Jenkins CI 应该如何执行。

是否可以在执行由存储库的Jenkinsfile 定义的管道之前注入一些代码、步骤等?有时我们需要在运行管道之前添加一些步骤。

执行 maven 作业的示例: Jenkins 文件包含克隆、构建、测试、安装步骤 因此,运行管道作业将使用以下步骤创建管道:

cloneFromGit->buildMvn->testMvn->installMvn

但是,我们需要确保所有构建工件(jar 等)都进入我们的工件存储库。我们需要的是更新/更改 Jenkinsfile 以添加额外步骤的能力。使用上面的示例,我们需要能够让管道运行以下步骤:

cloneFromGit->buildMvn->testMvn->installMvn->pushToArtifactRepository

侵入性/简单的方法是将pushToArifactRepository-step 添加到所有 Jenkinsfile 中,但是我们确实(也不想)控制任何给定 Jenkinsfile 的内容。

【问题讨论】:

    标签: jenkins jenkins-pipeline jenkinsfile


    【解决方案1】:

    我可以推荐使用Jenkins Workflow Global Library。在这里,您可以定义在不同管道作业之间共享的功能。然而,这将要求每个Jenkinsfile 主动调用该“构建后”任务。该任务的实际实现可以隐藏在全局库中,因此Jenkinsfile 可以非常简单。

    在我使用的示例中,我的Jenkinsfiles 仅触发管道执行如下:

    def pipe = new org.typo3.chefci.v1.Pipeline()
    pipe.execute()
    

    实际的实现在central repository中。

    【讨论】:

    • 我就是这么想的。我们目前正在使用全局库来获取可选的“东西”。我们真的不想在所有 Jenkinsfile 中强制执行最后一步,但如果这是唯一的方法,那就这样吧。
    • 我的意思是这个问题实际上并不是jenkins-pipeline 特定的。有例如Global Post Script Plugin(从未亲自使用过)可以在每次构建后执行您的代码。不知道,如果它也适用于 WorkflowJob
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-02
    相关资源
    最近更新 更多