【问题标题】:Jenkins build pipeline with reliable sourceJenkins 使用可靠来源构建管道
【发布时间】:2013-06-13 18:22:54
【问题描述】:

我已经使用Build Pipeline Plugin 和Jenkins Clone Workspace SCM Plug-in 设置了一个Jenkins 构建管道,如Jochen Wierum 所述

这非常有用,但我有一个问题... Clone Workspace SCM 插件只能让您获得最新(良好)的构建,因此管道图可能有点误导。如果我在版本号 4 中手动触发管道的第二阶段,但版本号 5 中的第一阶段已经发生,那么我触发的第二阶段实际上将使用版本号 5 中的构建工件。这可能是令人困惑和潜在的危险。

是否有更好的构建管道工作流程可以保证使用此特定构建集的特定上游构建工件?

我了解 Clone Workspace SCM 插件仅存储最新的,但我认为可能有一种方法可以使用标准的 Archive the artifacts 构建后操作来实现我的目标获得所有成功的构建。我只是不知道如何将其用作下一阶段的来源。

我已经找到了this answer,但就我而言,我并没有尝试使用特定的修订版,而是使用前一个构建阶段的确切结果。例如,我的构建阶段工作之一可能是发布到暂存环境。为此,我不想一直回到源代码控制并从头开始构建,因为我的早期阶段已经构建、运行测试等。

【问题讨论】:

    标签: jenkins continuous-integration jenkins-plugins


    【解决方案1】:

    您可以创建一个包含更改集的虚拟文件并对其进行验证,以确保您在触发构建阶段时拥有所需的版本。有关如何执行此操作的更多详细信息。 http://antagonisticpleiotropy.blogspot.com.au/2012/02/implementing-real-build-pipeline-with.html

    【讨论】:

    • 谢谢。我已经在您之前的@​​987654323@ 上commented 描述了一些我试图通过提出这个问题来克服的问题。
    【解决方案2】:

    我使用构建参数来实现它。 Jenkins 不擅长让构建以正确的格式指定自己的参数(因为不同的参数有不同的格式),所以我在初始构建的“发布步骤”中使用了一些 Groovy:

    import hudson.model.*
    def thr = Thread.currentThread()
    def build = thr?.executable
    build.addAction(new ParametersAction(new StringParameterValue('UPSTREAM_BUILD_NUMBER', '<SpecificBuildSelector><buildNumber>' + build.getNumber() + '</buildNumber></SpecificBuildSelector>')))
    

    一旦从每个构建中记录下来,我就使用 Copy Artifacts 插件将初始构建的工件复制到管道中的下一个作业中。您只需将新参数“UPSTREAM_BUILD_NUMBER”指定为复制工件插件的参数,然后您就可以访问整个管道中的相同文件,而无需担心新构建会篡夺您的工件.相同的文件只是从一个版本复制到另一个版本。如果这与指纹识别和构建管道插件相结合,您将获得一个持续部署管道,具有可听性以及在出现问题时部署先前构建的能力。

    【讨论】:

    • 谢谢,这看起来很有趣。自从我尝试在 Jenkins 中设置管道以来已经有一段时间了,但如果我这周晚些时候有时间的话,我将不得不尝试你的建议。
    猜你喜欢
    • 1970-01-01
    • 2018-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-12
    • 2019-03-26
    • 2020-07-18
    • 2017-07-16
    相关资源
    最近更新 更多