从其他项目插件复制 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" 部分定义特定版本,我尝试了各种版本:
- 使用来自上游作业的参数
- "upstream Build that triggered that job" 选项
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
插件发布它们)
我有 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" 部分定义特定版本,我尝试了各种版本:
- 使用来自上游作业的参数
- "upstream Build that triggered that job" 选项
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
插件发布它们)