从其他项目插件复制 Artifakt 不会复制任何工件

Copy Artifakt from other project plugin does not copy any artifacts

我有 2 个构建过程。一个是编译我们的 delphi 项目,第二个是在 ftp 服务器上部署工件。 我使用 "artifact deployer" 插件存储工件。

如此处其他一些帖子所述copy-artifacts-from-specific-promoted-build or there how-to-promote-a-specific-build-number-from-another-job-in-jenkins 我安装了触发插件的推广插件 build/call 在其他项目上。

目前看来一切正常。部署作业被触发。但在开始后部署作业失败并显示评论 "konnte nicht auf vorgelagerten Artefaktbereich zugreifen. Archiviert das Quellprojekt Artefakte?" 或 "could not access upstream artifact area. is upstream project archiving artifacts"? 但在编译作业日志中说:

ArtifactDeployer] - Starting deployment from the post-action ...
[ArtifactDeployer] - 398 file(s) have been copied from the 'C:\Daten\jenkins\jobs\Integra-2.2.4.SP_P1\workspace' to '\titan\IntegraWWS2\Deploy.2.4.SP_P115-08-17_13-42-38\bin32'.
[ArtifactDeployer] - Stopping deployment from the post-action...

我还可以从该特定版本的网站访问存档的工件。

为了在 "copy artifacs from other project" 部分定义特定版本,我尝试了各种版本:

none 有效。而且我确定这不是 windows 访问限制问题。

"Artifact Deployer" 不是您的链接答案中描述的主要 "Artifact Archiving" 操作(其中一个是我的)。

为了使用这些描述的方法,您需要使用默认的 "Archive the Artifacts" post-build 操作。此方法将:

  • 将工件存储在 Jenkins 服务器本身的作业目录结构中。
  • 通过 http://$JENKINS_URL/job/$JOB_NAME/<build_number>/artifact
  • 提供工件
  • 以上位置可以被"Copy Artifacts"插件使用。
  • 简而言之:Jenkins(和其他插件)知道工件所在的标准位置。

"Artifact Deployer"插件:

  • 将工件复制到非标准(远程)位置
  • Jenkins(和其他插件,例如 "Copy Artifacts")不知道您的工件保存在哪里。

您的解决方案

如果您使用 "Artifact Deployer" 插件将工件从 Jenkins 移走没有特别的原因,那么您应该考虑使用默认的 "Archive the Artifacts" post-build 操作。

如果有理由将工件存储在远离 Jenkins 的地方(考虑大小、完整性、工件等),那么您必须配置自己的 "getter" 方法以从存储工件的任何地方获取工件,到当前构建的工作区。

简而言之,ArtifactDeployer 插件会更改工件的保存位置。这显然已经作为编译工作的一个步骤完成了。 如果你想分开编译和部署,那么你应该

  • 不要在编译作业中使用 ArtifactDeployer 插件
  • 让编译作业构建标准工件
  • 在部署作业中使用 CopyArtifact 插件 (https://wiki.jenkins-ci.org/display/JENKINS/Copy+Artifact+Plugin) 以访问已编译的工件。
  • 将工件(在之前的步骤中复制)部署到您喜欢的位置(您可以在部署作业中将复制的工件标记为新工件并使用 ArtifactDeployer 插件发布它们)