如何通过 URL 访问 Jenkins 在 lastSuccessfulBuild 中创建的工件?

How can I access artifacts created by Jenkins in the lastSuccessfulBuild through a URL?

我正在使用 Jenkins 管道构建 Android 应用程序。

构建成功完成后,它会创建一个 .apk 文件。

我希望 QA 团队的成员能够下载此文件并在上传它之前测试应用程序 Google 商店,所以我希望这些用户(有权访问 Jenkins 服务器)能够通过 Jenkins 服务器上的 URL 访问工件,如图 in this SO question 但出于某种原因,我用来尝试下载工件的 URL 一直给我 404 错误。

这些是我正在尝试访问但无济于事的 link:

https://company-ci-server.company.net/job/Itai_repos/job/Product-Android/job/develop/lastSuccessfulBuild/build/outputs/apk/Company-production-release.apk

https://company-ci-server.company.net/job/Itai_repos/job/Product-Android/job/develop/lastSuccessfulBuild/artifact/product-production-release.apk

作业配置为多分支,这意味着 Jenkins 正在监视 GitHub 中的项目,为所有分支编制索引,每当发生提交时,作业就会开始...这就是为什么 link 太长了,以防你想知道...

那我做错了什么?为什么我不能通过 URL 访问工件?

作为构建过程中的 post-构建步骤 添加任务 "Archive the artifacts"。 并指定要访问的文件。

在您的项目仪表板页面上,您将看到 link 到 "Last successful artifacts"

编辑:我们添加的部分配置:

<hudson.tasks.ArtifactArchiver>
    <artifacts>
       bin\file1Setup.exe, bin\file2Setup.exe
    </artifacts>
    <allowEmptyArchive>false</allowEmptyArchive>
    <onlyIfSuccessful>false</onlyIfSuccessful>
    <fingerprint>false</fingerprint>
    <defaultExcludes>true</defaultExcludes>
</hudson.tasks.ArtifactArchiver>

如果有人感兴趣,因为我自己编写管道并且我没有使用 GUI 来配置我的工作,那么我遗漏了管道中实际归档的部分,这里是相关的缺失代码:

step([$class: 'ArtifactArchiver', artifacts: '**/build/outputs/apk/*.apk', fingerprint: false])

这一步告诉 Jenkins 在给定路径中查找 apk 文件。 然后 Jenkins 发布 apk,你可以通过 URL:

访问它
https://ci-server.company.net/job/Itai_repos/job/Products-Android/job/develop/<BUILD_NUMBER>/artifact/

谢谢