build - 如何从 Jenkins 的另一份工作中提升特定的内部版本号?

我安装了Promoted Build Plugin来自 Jenkins现在我在从现有工作中推广构建时遇到了一些麻烦。这是场景:

  • 现有 Nightly Build每天晚上运行的作业,运行所需的所有测试和指标;
  • 现有 Deploy Build接受参数 ${BUILD_NUMBER} 并部署具有来自 Nightly Build 的相应 ${BUILD_NUMBER} 的构建
  • 假设 [Nightly Build] 运行并成功构建了工件 #39
  • 现在我可以运行 [Deploy Build] 作为参数传入 #39
  • [Nightly Build] #39 中的工件将被部署

  • 到现在为止还挺好。现在是我想添加 Build Promotions 的部分...



    有没有办法推广Nightly Build #39 (注意它之前已经建好了)来自 Deploy Build ?或者甚至可能来自其他地方,坦率地说,我在这里迷路了:(

    我没有看到它们具有明确的上游/下游关系,因为它们没有:始终运行此构建,然后在执行期间运行另一个 - [Deploy Build] 有时仅在 [Nightly build ]。

    最佳答案

    参数化触发器插件 2.23 版更新:

    版本 2.23+ behavior changed (感谢 AbhijeetKamble 指出)。 传递的任何参数预定义参数 调用 ( 构建 ) 作业的部分必须存在于被调用的 ( 部署 ) 作业中。此外,被调用的作业参数的限制适用,所以如果被调用的作业的参数是选择 ,它必须预先填充所有可能的值(来自促销)。或者直接使用 正文 参数类型。

    解决方案

    是的,我有完全相同的设置:构建作业(基于 SVN 提交)和手动执行的部署作业。当用户从构建作业中选择任何构建(包括较旧的构建)时,他们可以转到 促销状态 链接并执行各种部署推广,例如部署到 DEV、部署到 QA 等

    以下是在构建作业上设置促销的方法:

  • 您将需要这些插件:Parameterized Trigger Plugin , Promoted Builds Plugin
  • 您还需要设置默认值 存档文物 此构建作业的构建后操作。
  • 复选标记 提升构建时间
  • 定义 姓名 “部署到 DEV”
  • 标准 复选标记 仅当手动批准时
  • 行动 使用 在其他项目上触发/调用构建
  • 项目 build 在此处输入部署作业的名称
  • 复选标记 阻塞直到触发的项目完成它们的构建
  • 如果触发的构建更差或等于 ,则将此构建标记为失败:失败(根据部署作业的状态进行调整)
  • 预定义参数 (代码 A)

  • 代码 A:
    Server=IP_of_my_dev_server`  
    Job=$PROMOTED_JOB_NAME`  
    BuildSelection=<SpecificBuildSelector><buildNumber>$PROMOTED_NUMBER</buildNumber></SpecificBuildSelector>
    

    以上,在 预定义参数 部分,= 左侧的名称是部署作业中定义的参数。 = 的右侧是执行此促销时将分配给这些参数的值。定义三个参数 Server , JobBuildSelection .

    参数Server=是我自己的,因为我的部署作业可以部署到多台服务器。但是,如果您的部署作业被硬编码为始终部署到特定位置,则您将不需要它。
    Job=参数是必需的,但参数的名称取决于您在部署作业中设置的内容(我将在那里解释配置)。值 $PROMOTED_JOB_NAME必须保持原样。这是提升过程知道的环境变量,并引用回构建作业的名称(配置提升过程的名称)
    BuildSelection=参数是必需的。这整条线必须保持原样。传递的值为 $PROMOTED_NUMBER ,这再次宣传是知道的。在您的示例中,它将是 #39 .

    阻塞直到触发的项目完成它们的构建 复选标记将使升级过程等到部署作业完成。如果没有,升级过程将触发部署作业并成功退出。等待部署作业完成的好处是,如果部署作业失败,升级星也会被标记为失败。

    (这里有一点要注意:promotion star 会出现成功 部署作业正在运行。如果部署失败,它只会在部署作业完成后才变为失败。逻辑上......但可以如果您在部署完成之前查看促销明星会有点困惑)

    这是设置部署作业的方法
  • 您将需要 Copy Artifacts plugin
  • 此版本已参数化
  • 配置类型为 的参数选择(或文本)姓名 Server (此名称必须与上一节中促销 预定义参数 中的配置匹配)
  • 选项:输入促销事件的 可能使用的服务器 IP 列表。预定义参数 在上一节中(请参阅下面的更新说明)
  • 配置类型为 的参数选择(或文本)姓名 Job (此名称必须与上一节中促销 预定义参数 中的配置匹配)
  • 选择:输入构建作业的默认名称。仅当您手动触发部署作业时才需要这样做。当部署作业从提升中触发时,提升将提供值(Job= 来自 预定义参数 我们配置)。此外,如果没有从促销的 传递的值预定义参数 ,将使用第一个选择值。如果构建和部署作业之间存在一对一的关系,则可以省略 Job=促销配置中的参数。
  • 更新: since version 2.23 of Parameterized Trigger , 中的可用选项部署 作业配置必须具有来自促销预定义参数的所有可能值。如果您不想要该限制,请使用“文本”而不​​是“选择”
  • 配置类型为 的参数复制工件的构建选择器 姓名 :BuildSelection
  • 默认选择器 : 最新成功构建
  • 构建 步骤
  • 配置 从另一个项目复制工件
  • 项目名称 输入 ${Job}
  • 哪个版本选择 Specified by a build parameter
  • 参数名称 输入 BuildSelection (没有 ${...} !)
  • 相应地为您的工件配置其余部分,这些工件将从构建作业复制到部署作业的工作区
  • 根据需要在部署作业中使用复制的工件以部署

  • 所以现在,通过上面的部署作业,您可以手动运行它并从要部署的构建作业中选择哪个构建号(上次构建、上次成功、按构建号等)。您可能已经对其进行了非常相似的配置。构建作业上的提升将基本上执行相同的操作,并根据执行的提升提供构建编号。

    如果您对说明有任何问题,请告诉我。

    https://stackoverflow.com/questions/15126059/

    相关文章:

    build - 构建和构建 OCaml 项目的首选方式是什么?

    maven-2 - Maven - 如何将任意类路径条目添加到 jar?

    build - Lisp 可执行文件

    jenkins - 如何在 Jenkins 中安排构建?

    c++ - Visual Studio 2010 不会自动链接来自依赖项的项目中的静态库,因为它应该

    java - Android 构建失败 - java.lang.IllegalArgumentExc

    build - 如何更改 Gradle 下载位置

    java - 如何让 Maven 使用正确的存储库?

    visual-studio - Visual Studio 构建速度非常慢

    c++ - 在 CMake 中添加多个可执行文件