2015-05-14 48 views
1

我正在Jenkins的多任务配置作业(Regression_L1)中工作,任务是运行2种测试(test1和test2)。在多配置作业中,它会触发执行程序作业(Regression_executor)为选定的测试运行脚本。 Regression_L1作业被限制在matrix_service_jobs节点中运行,而矩阵作业将运行在从节点custom_matrix_service_jobs节点上。 Regression_executor作业被限制为在具有特定标签(RL1_Test_Machine)的远程计算机上运行。jenkins中的访问文件参数

我的目标是测试开发人员的定制构建。因此,我为作业添加了文件参数(配置 - 文件位置:CUSTOMBUILD/mybuild.zip)。问题是我如何访问上传的文件?

一些重要的信息:

  • Regression_executor的工作区:/home/regressionexec/
  • Regression_L1的工作区:/var/work/matrix_service_jobs/Regression_L1
  • Regression_l1矩阵工作区:​​和/var/work/workspace_user_matrix/workspace/Regression_L1/TEST_PHASE/test2/label/custom_matrix_service_jobs/
  • $ JENKINS_HOME:var/work/jenkins_home

我不知道在哪里可以找到上传的文件,所以我搜索了linux linux find。其结果是: /var/work/jenkins_home/Regression_L1/TEST_PHASE/test2/label/custom_matrix_service_jobs/builds/${BUILD_NUMBER}/fileParameters/CUSTOMBUILD/mybuild.zip

如何将其复制到执行测试脚本的从节点?无论你在“文件位置”进入

回答

3

,这将是位置保存上传文件的原文件名可变。

但是,在* nix,既不/也不.是有效的变量名字符,所以你的情况,如果“文件位置”是CUSTOMBUILD/mybuild.zip系统不能创建一个变量${CUSTOMBUILD/mybuild.zip}

该文件虽然仍是摆根据${WORKSPACE}/CUSTOMBUILD/mybuild.zip。您也可以使用此路径访问它。

然后可以使用Copy To Slave plugin,从主文件复制到你的奴隶

+0

我结束认为我的问题在$ {WORKSPACE}部分。将'PACKAGE_PATH = echo“$ {WORKSPACE} /CUSTOMBUILD/mybuild.zip”>> env.txt'作为参数传递给执行程序,然而,PACKAGE_PATH的等价物指向一个不存在的路径。事实上,当我试图在主机中使用'find'时,我发现上传的文件在JENKINS_HOME中,这与作业的工作区不同。请参阅我原文中的**重要信息**。 是的,复制到奴隶插件似乎是我需要的。但是,它依赖于获取上载文件的路径。谢谢。 – ac22

+0

尝试将'CUSTOMBUILD/mybuild.zip'简单地更改为'mybuild',然后查看作业的工作区(通过Jenkins UI)。该文件应该在那里。同样,这是针对实际要求文件参数的作业。 你用'find'找到的文件就在那里,因为那是Jenkins跟踪过去构建的参数(这是一个参数)。 '$ WORKSPACE'的内容也是不稳定的,并且只能在构建期间依赖于**。 – Slav

+0

我的不好。我在Build步骤中遇到了一个错误。我包含了一个清除工作区'rm -rf *'的步骤,这就是在触发执行程序之前删除文件参数的原因。非常感谢你! – ac22

0

我找不到工作区下我上传的文件,所以我使用类似

"%JENKINS_HOME%\jobs\%JOB_NAME%\builds\%BUILD_ID%\fileParameters\myUploadedFile"