0

使用:

詹金斯:2.7.2

包云插件1.11

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

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

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

在作业中,我看到我的 .deb 文件已成功生成。在构建后操作中,我使用指纹选项来查找/指纹我的 .deb 文件(即 Glob 模式:deb-builder/ .deb*)。

在 Jenkins 作业的 build# 页面上,当我单击See Fingerprints链接(Jenkins 作业的左侧区域)时,它成功显示对于给定的 build#,它具有有效的 .deb 文件。

但是将相同的工件推送到 packagecloud的构建后操作/步骤不起作用。出于某种原因,它试图在我的 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$3.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)

看起来,插件构建后步骤没有查看正确的位置(或无法找到正确的路径)来查找指纹步骤成功找到的包/工件(根据上述标准输出)。

在 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

4

2 回答 2

0

截至目前,这个 Jenkins PackageCloud 插件预计文件只能从 Jenkins 作业的工作区/根位置中选取。

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

cp deb-builder/*.deb ..

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

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

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

于 2017-02-27T19:30:30.393 回答
0

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

抱歉,您遇到了这些问题!该插件应该只“看到”与指纹模式匹配的文件,因此只需更改它就足够了(除非存在错误)。

于 2017-02-28T03:27:24.563 回答