如何从另一个job2访问Hudson job1工件?

时间:2011-03-17 09:43:16

标签: hudson jenkins hudson-api

我们在哈德森的一个项目有生产工作和夜间工作。生产作业需要从特定的夜间构建#(作为参数提供)中提取一些工件。任何人都可以帮我们提一下如何实现这个目标吗?

3 个答案:

答案 0 :(得分:8)

Copy Artifact插件似乎能够做到这一点。

另一种方法可能是通过

获取工件
http://server/jobs/job1/[build #]/artifacts/

答案 1 :(得分:1)

您可以在作业的配置页面中使用“构建环境”配置工具。勾选“配置M2额外构建步骤”框,然后添加一个执行外壳,它可以从所需的工件中查找内容。

答案 2 :(得分:0)

我们有类似的需求并使用以下系统groovy:

import hudson.model.*

def currentBuild = Thread.currentThread().executable;
currentBuild.addAction(new ParametersAction(new StringParameterValue('LAST_BUILD_STATUS', 'FAILURE')));
def buildJob = Hudson.instance.getJob("ArtifactJobName");
def artifacts = buildJob.getLastBuild().getArtifacts();
if (buildJob.getLastBuild().getResult() == Result.SUCCESS && artifacts != null && artifacts.size() > 0) {
    currentBuild.addAction(new ParametersAction(new StringParameterValue('VARIABLE_NAME', artifacts[0].getFileName())));
    currentBuild.addAction(new ParametersAction(new StringParameterValue('LAST_BUILD_STATUS', 'SUCCESS')));
}

这将在VARIABLE_NAME中创建一个带有工件名称的ArtifactJobName,我们使用它,因为它们都存储在特定文件夹中。我不确定如果你有多个工件会发生什么,但似乎你可以从工件数组中获取它们。

当您正在构建另一个getLastSuccessfulBuild时,您可以使用ArtifactJobName来防止出现问题,并且您获得的数组为null。