在另一份工作中使用一份工作的结果
我有一个运行makefile并生成一些文件的工作。 然后我想要另一份将这些文件发布到常春藤的工作。
我知道克隆工作区插件,但有没有其他选择?
你运行一个Makefile,然后你发布到艾维?
Ivy是Ant的一部分,是一个利用全球Maven仓库结构来获取所需的jar文件和其他依赖项的模块。
不要误解我的意思,我已经使用本地的远程Maven仓库来发布其他项目将依赖的C / C ++库(您可以使用wget
来获取项目)。 但是,我没有那样使用艾维。
如果您正在考虑Apache Ivy,那么您可以使用Maven进行发布。 有一个Maven Release插件可以将你的工件复制到你的Maven仓库,但你可能想要做的是部署。
在我的Jenkins构建中,我只是让Jenkins从命令行执行maven的deploy-file
步骤。 这使我可以将文件部署到我的Maven Ivy存储库中,而无需先创建一个pom.xml文件。 (好吧,你想创建一个pom.xml,因为你想包含一个依赖层次结构。)
我通常是在创建jar / war / ear文件的工作中完成这项工作。 但是,如果您想单独执行此操作,则可以使用“复制工件插件”。 这个插件允许作业B从作业A中复制任何或所有已发布的构件。如果您只需要构建的jar文件,这比克隆整个工作区快得多,也更简单。
我的个人偏好是在不依赖Jenkins内部文件结构的情况下完成这些事情,尽管有时候这意味着要了解其他构建工具的内部结构(例如Maven,或者在您的情况下常春藤)。
如果我是你,我会在一项工作中完成所有工作 - 即构建,然后让“常春藤发布者”(如果存在这样的插件)将工件发布到远程Ivy存储库。
如果这是不可能的,让第一份工作将工件“安装”到本地存储库/缓存中(我不确定它在常春藤上叫什么),然后让第二份工作从那里捡起它。
我不确定这是否是最好的方法,但它对我来说效果很好。
编辑我应该提及 - 在分布式环境中这种方式不太适用,除非像我一样,分布式环境由多个有权访问常用NAS文件系统的节点组成。
编辑2我还使用了复制到从属插件的分布式环境没有一个共同的文件系统。
你有几个选择,一个是克隆工作区,它工作的很好,但是需要的磁盘空间增加了一倍(在我们的例子中是相当相关的)。 其他大多数方法都是克隆工作区的变体。
我所做的是使用自定义工作区位置。 即我的第一份工作是建立一切,然后触发第二份工作。 在第二份工作中,我将自定义工作区设置为第一个工作区的工作区,以便作业在相同文件上执行其他任务。 您必须检查选项,以防止在第二份工作正在运行时构建第一份工作,因为两者都工作在相同的文件上,这是很好的一行。
但是,如果您需要并且小心谨慎,这可能是一个可行的解决方案。
链接地址: http://www.djcxy.com/p/9357.html上一篇: Using the results of one job, in another job
下一篇: Heap memory problems