栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Jenkis下游作业无法找到上游工件

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Jenkis下游作业无法找到上游工件

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

  • 首先使用构建后操作 对工件 进行 存档 ,否则,您将无法复制任何内容。

    1. 如果您的文件位于的根目录中
      $WORKSPACE
      ,则应为:(
      PROJECTNAME-**.jar,PROJECTNAME-**.zip

      请注意,此处不是完整路径)
  • 然后

    Upstream Build that triggered this job
    用于“ 复制工件” 选择。

    1. 对于 要复制的工件,请 使用以下任一方法:

    2. **
      或空白以复制所有已归档的工件,或者

    3. PROJECTNAME-**.jar,PROJECTNAME-**.zip
      (与归档部分相同)

选项2

如果您不想存档,则可以

$WORKSPACE
直接使用with和
Copy from workspace of latest completedbuild

但是必须确保在下游构建执行过程中没有第二个上游构建可以运行,否则您将冒着从部分构建中获取部分文件的风险,因为如前所述,
$WORKSPACE
易挥发。

  • 再次,对于“ 复制工件” 步骤,在“ 要复制的工件” 字段下,使用相对于的路径
    $WORKSPACE
    ,即:
    PROJECTNAME-**.jar,PROJECTNAME-**.zip

选项3

如果您确实要在不同作业之间复制整个WORKSPACE,请使用其中一个

  • 克隆Workspace SCM 插件或
  • 共享工作区插件


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/413334.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号