Jenkins PackageCloud 上传 - 缺少工件 - 指纹 - 没有这样的文件或目录

Jenkins PackageCloud upload - Missing artifact - fingerprint - No such file or directory

使用:

詹金斯:2.7.2

PackageCloud Plugin: 1.11

在 packagecloud.io 站点创建了一个新的试用帐户,创建了一个新的私有存储库(URL 刚好:https://packagecloud.io/arunsangal/deb_stuff)。

根据文档,我在 packagecloud.io 新域下创建了一个新的 Jenkins 凭证。然后,在 Jenkins packagecloud.io 域凭据中,我创建了一个新用户 (arunsangal) 并提供了密码值(即生成的 API 令牌 packagecloud.io 站点)并根据此插件的文档对其进行配置。

接下来,我创建了一个 Jenkins 作业,它正在成功创建一个 .deb 包文件。这是我要上传到 packagecloud.io 私有存储库中的私有存储库的文件:https://packagecloud.io/arunsangal/deb_stuff

在作业中,我看到我的 .deb 文件已成功生成。 在 post-build 操作中,我使用指纹识别选项 find/fingerprint 我的 .deb 文件(即 Glob 模式:deb-builder/.deb*) .

在 Jenkins 作业的 build# 页面上,当我单击 See Fingerprints link( Jenkins 作业的左侧区域)。

但是用于将相同工件推送到 packagecloud 的 post-build action/step 不起作用。出于某种原因,它试图在我的 Jenkins 作业的工作区的根目录中找到该文件(即使我在指纹识别步骤中提到 .deb 文件位于 "deb-builder" 文件夹下)。

收到此错误消息:

06:03:36 Recording fingerprints
06:03:37 2017-02-22T06:03:37.789+0000 [org.jenkinsci.plugins.packagecloud.ArtifactPublisher] Verbose Logging Enabled
06:03:37 2017-02-22T06:03:37.790+0000 [org.jenkinsci.plugins.packagecloud.ArtifactPublisher] Build Status: SUCCESS
06:03:37 2017-02-22T06:03:37.794+0000 [org.jenkinsci.plugins.packagecloud.ArtifactPublisher] Job configured with: { repo: deb_stuff, distro: 20, username: arunsangal }
06:03:37 2017-02-22T06:03:37.795+0000 [org.jenkinsci.plugins.packagecloud.ArtifactPublisher] Fingerprinting: found 1 fingerprints
06:03:37 2017-02-22T06:03:37.799+0000 [org.jenkinsci.plugins.packagecloud.ArtifactPublisher] Finding valid Packages (findValidPackages)
06:03:37 2017-02-22T06:03:37.800+0000 [org.jenkinsci.plugins.packagecloud.ArtifactPublisher] Processing: wfcli_5.0.10-22_amd64.deb
06:03:37 ERROR: Step ‘Push to packagecloud.io’ aborted due to exception: 
06:03:37 java.io.FileNotFoundException: /var/lib/jenkins/workspace/Dummy_create_wfcli_deb_package/wfcli_5.0.10-22_amd64.deb (No such file or directory)
06:03:37    at java.io.FileInputStream.open(Native Method)
06:03:37    at java.io.FileInputStream.<init>(FileInputStream.java:146)
06:03:37    at hudson.FilePath.read(FilePath.java:1779)
06:03:37    at org.jenkinsci.plugins.packagecloud.ArtifactPublisher.findValidPackages(ArtifactPublisher.java:303)
06:03:37    at org.jenkinsci.plugins.packagecloud.ArtifactPublisher.perform(ArtifactPublisher.java:211)
06:03:37    at hudson.tasks.BuildStepMonitor.perform(BuildStepMonitor.java:45)
06:03:37    at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:779)
06:03:37    at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:720)
06:03:37    at hudson.model.Build$BuildExecution.post2(Build.java:185)
06:03:37    at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:665)
06:03:37    at hudson.model.Run.execute(Run.java:1766)
06:03:37    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
06:03:37    at hudson.model.ResourceController.execute(ResourceController.java:98)
06:03:37    at hudson.model.Executor.run(Executor.java:410)

看起来,插件 post-构建步骤没有查看正确的位置(或无法找到正确的路径)来找到 package/artifact 成功找到的指纹识别步骤(根据上面提到的标准输出)。

在 Github: https://github.com/jenkinsci/packagecloud-plugin 中,相关文件似乎是: packagecloud-plugin/src/main/java/org/jenkinsci/plugins/packagecloud/ArtifactPublisher.java

根据上面的输出,packagecloud post-build 步骤试图在 /var/lib/jenkins/workspace/Dummy_create_wfcli_deb_package/wfcli_5.0.10-22_amd64.deb 位置找到 .deb 文件 尽管该文件实际存在于:/var/lib/jenkins/workspace/Dummy_create_wfcli_deb_package/deb-builder/wfcli_5.0.10-22_amd64.deb

截至目前,此 Jenkins PackageCloud 插件期望仅从 Jenkins 作业的工作区/根位置选择文件。

因此,在我的情况下,在给定的 deb-builder 文件夹中创建包后,我必须通过执行以下操作将所有这些 *.deb 文件从 deb-builder 复制到 JOB 的 WORKSPACE 位置:

cp deb-builder/*.deb ..

接下来,在指纹识别中,我将模式更改为 *.deb(而不是 deb-builder/*.deb

在此之后,post 构建操作 Push To pacakgecloud.io 操作按预期工作。

另请参阅相关问题(我在解决此 post 后看到):Jenkins packagecloud plugin - upload of a package ex .deb failed if it already exist

jenkins/packagecloud插件作者在这里--

抱歉,您 运行 陷入这些问题!该插件应该只有 "see" 个与指纹识别模式匹配的文件,所以只需更改它就足够了(除非有错误)。