首页 > 解决方案 > 如何将 .deb 文件从 jenkins Pipeline 发送到 Spinnaker Pipeline?

问题描述

我有一个詹金斯管道,它产生一个构建工件,它是一个deb文件。

在此处输入图像描述

我打算使用该 deb 文件来填写 Bake Configuration Phase 中的 Package 选项。

在此处输入图像描述

它不起作用并导致

错误

我该怎么做呢?

我想我需要从 Spinnaker 管道的构建触发器(Jenkins 管道)中传输工件,但我不明白该怎么做。

这有什么用吗?为了发送文件,我无法理解他们想让我做什么。

任何帮助表示赞赏。谢谢。

标签: jenkinscontinuous-integrationjenkins-pipelinecontinuous-deploymentspinnaker

解决方案


到目前为止你所做的看起来是正确的,所以我们需要调试它失败的原因。您必须查看失败的执行源(按“源”链接)。这个 json 结构是执行上下文(你可能想在浏览器中安装一个 json 格式化插件或其他东西来阅读它)。导航到trigger.artifacts那里寻找工件。如果你找到它,请在此处发布结果。我认为问题可能出在 deb 文件的名称上。它应该被命名为simplenodeappinstaller_1.0-0_amd64.deb. 一个简单的解决方案是添加 jenkins 内部版本号或时间戳作为版本号。

您还可以尝试激活工件装饰器(设置artifact.decorator.enabled: trueigor-local.yml. 这将导致 Igor 以更明智的方式解析 deb 和 rpm 文件,恕我直言。有关更多信息,请参见下文。

另一件事是 Jenkins 有时会将所有测试结果和其他内容放入工件列表中,我认为默认返回的工件最大数量为 20。但是,这可以在密钥下进行配置BuildArtifactFilter.maxArtifacts(请参阅https://github.com/spinnaker/ igor/blob/master/igor-web/src/main/java/com/netflix/spinnaker/igor/build/BuildArtifactFilter.java)。阅读代码,似乎 deb 文件应该已经优先于其他类型的工件,所以我真的不认为这是问题所在。

装饰底漆

启用工件装饰器将转换此工件:

fileName: "openmotif22-libs-2.2.4-192.1.3.x86_64.rpm"
displayPath: "openmotif22-libs-2.2.4-192.1.3.x86_64.rpm"
relativePath: "openmotif22-libs-2.2.4-192.1.3.x86_64.rpm"

进入

fileName: "openmotif22-libs-2.2.4-192.1.3.x86_64.rpm"
displayPath: "openmotif22-libs-2.2.4-192.1.3.x86_64.rpm"
relativePath: "openmotif22-libs-2.2.4-192.1.3.x86_64.rpm"
reference: "openmotif22-libs-2.2.4-192.1.3.x86_64.rpm"
name: "openmotif22-libs"
type: "rpm"
version: "2.2.4-192.1.3.x86_64"
decorated: "true"

内置装饰器支持deband rpm,但可以使用如下配置对其进行扩展:

artifact:
#  This is a feature toggle for decoration of artifacts.
  decorator:
    enabled: true
    fileDecorators:
       - type: docker/image
         decoratorRegex: '(.+):(.+)'
         identifierRegex: '(.+\/.+:.+)'

推荐阅读