TL; DR
您正在尝试使用工件而不先对其进行归档。
您正在尝试使用绝对路径,但它们应相对于
$WORKSPACE和/或“存档位置”。
完整答案
您误解了与詹金斯有关的“工件”的概念。
什么是詹金斯文物
工件是 在“ 归档工件 后生成”操作的帮助下专门 在构建后 保留的文件。
构建运行时,它在以下位置运行:
$WORKSPACE,该文件通常位于文件系统中的
$JENKINS_HOME/jobs/$JOB_NAME/workspace
Inside内部,您可以拥有SCM检出文件夹,临时构建文件,最终构建文件,二进制文件等。
的内容
$WORKSPACE是 挥发性的 ,你不应该依赖它,编译时间范围之外(和下游的工作 是
构建时间范围之外)。
$WORKSPACE不同主/从节点之间的内容可能有所不同,可以随时通过admin或SCM更新/清除/签出将其删除。
同样重要的是要了解整个 工作* 只有 一个 。$WORKSPACE
*
但是现在请注意您的 Build History ,该列表中有几个条目,这些条目由内部版本号(#)和日期时间戳记引用。这些都存储在:
$JENKINS_HOME/jobs/$JOB_NAME/builds/$BUILD_ID
与
$BUILD_ID正在构建,日期时间戳样
2014-10-22_11-33-46
将
$WORKSPACE包含有关信息 当前或最近的 (和问题是:你永远无法知道这是否是“当前”或“最后”)建设;
该
builds文件夹包含所有过去的(保留)建立执行的记录(这是什么使的 建置沿革 名单在你的左边), 每构建 。
默认情况下,它仅包含Jenkins本身需要的内容:build.xml复制,更改日志信息,控制台日志。当您转到URL时
http://$JENKINS_URL/job/$JOB_NAME/[nn]/,其中
[nn]是一个数字作业生成/运行编号(#),它将从
builds文件系统上的文件夹中读取此信息。
为了保留构建的工件(避免它们被下一个构建覆盖,消除烦恼或只是访问较早的构建),您需要 存档工件
(具有相同标题的相同构建后操作)。归档工件时,您指示
$WORKSPACE要保留的文件。当詹金斯(Jenkins)进行存档时,会将这些文件(保留[相对于
$WORKSPACE]保留的路径)放入:中
$JENKINS_HOME/jobs/$JOB_NAME/builds/$BUILD_ID/archive/。
这样,您可以为先前的构建保留多组工件,而不仅仅是的“最新/最后”
$WORKSPACE。
为了完整起见,我将提到Jenkins的“永久链接”,例如
http://$JENKINS_URL/job/$JOB_NAME/lastSuccessfulBuild和
/lastFailedBuild,实际上是文件系统上到其中一个保留
builds/$BUILD_ID文件夹的符号链接。
最后,您可以通过作业配置上的 “舍弃旧版本”复选
标记来控制运行多少版本以及保留多少工件(可以单独配置)。默认情况下,所有内容都会保留,但是如果您开始保留工件,则需要考虑硬盘空间容量。
解决问题的方法
因此,使用上述信息,并查看您的错误消息,您现在应该看到 Copy Artifacts 插件正在
/archive/构建部分下正确地寻找工件。
你也应该看到, 复制文物 插件并 没有
让你选择“当前版本”时,选择其构建从复制。它具有永久链接(例如“上次成功”或“上次构建”)和特定的内部版本号,所有这些都转换为以下位置的保留内部版本
$JENKINS_HOME/jobs/$JOB_NAME/builds/$BUILD_ID/archive/
甚至“触发了这项工作的上游构建”也将链接到特定的
$BUILD_ID。
在以下任一选项中
归档工件的* 配置相对于$WORKSPACE
。 复制工件的
配置相对于“存档位置”,即。
由于“复制工件”是相对于“存档位置”的,而“存档位置”是相对于的,因此对于所有密集目的,两种配置的相对路径可以相同,也可以相对于
*
$JENKINS_HOME/jobs/$JOB_NAME/builds/$BUILD_ID/archive/
$WORKSPACE``$WORKSPACE
选项1
首先使用构建后操作 对工件 进行 存档 ,否则,您将无法复制任何内容。
- 如果您的文件位于的根目录中
$WORKSPACE
,则应为:(PROJECTNAME-**.jar,PROJECTNAME-**.zip
请注意,此处不是完整路径)
- 如果您的文件位于的根目录中
然后
Upstream Build that triggered this job
用于“ 复制工件” 选择。对于 要复制的工件,请 使用以下任一方法:
**
或空白以复制所有已归档的工件,或者PROJECTNAME-**.jar,PROJECTNAME-**.zip
(与归档部分相同)
选项2
如果您不想存档,则可以
$WORKSPACE直接使用with和
Copy from workspace of latest completedbuild,
但是必须确保在下游构建执行过程中没有第二个上游构建可以运行,否则您将冒着从部分构建中获取部分文件的风险,因为如前所述,
$WORKSPACE易挥发。
- 再次,对于“ 复制工件” 步骤,在“ 要复制的工件” 字段下,使用相对于的路径
$WORKSPACE
,即:PROJECTNAME-**.jar,PROJECTNAME-**.zip
选项3
如果您确实要在不同作业之间复制整个WORKSPACE,请使用其中一个
- 克隆Workspace SCM 插件或
- 共享工作区插件



