【问题标题】:Access file parameter in jenkinsjenkins中的访问文件参数
【发布时间】:2026-02-10 02:40:02
【问题描述】:

我正在 Jenkins 中从事一项多配置工作(Regression_L1),其任务是运行 2 种测试(test1 和 test2)。在多配置作业中,它会触发一个执行器作业(Regression_executor)来运行所选测试的脚本。 Regression_L1 作业被限制在 ma​​trix_service_jobs 节点中运行,而矩阵作业被限制在从节点 custom_matrix_service_jobs 节点中运行。 Regression_executor 作业仅限于在具有特定标签 (RL1_Test_Machine) 的远程机器中运行。

我的目标是测试开发人员的自定义构建。所以我为这项工作添加了一个文件参数(config - 文件位置: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/test1/label/custom_matrix_service_jobs//var/work/workspace_user_matrix/workspace/Regression_L1/TEST_PHASE/test2/label/custom_matrix_service_jobs/
  • $JENKINS_HOME:var/work/jenkins_home

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

如何将其复制到执行测试脚本的从节点?

【问题讨论】:

    标签: jenkins jenkins-plugins multi-configuration


    【解决方案1】:

    无论您在“文件位置”下输入什么,该位置都是保存上传文件的原始文件名的变量。

    然而,在 *nix 上,/. 都不是有效的变量名字符,所以在你的情况下,如果“文件位置”是 CUSTOMBUILD/mybuild.zip 系统无法创建变量 @ 987654325@

    该文件仍然位于${WORKSPACE}/CUSTOMBUILD/mybuild.zip 下。您也可以通过此路径访问它。

    然后您可以使用 Copy To Slave plugin,将文件从 master 复制到您的 slave

    【讨论】:

    • 我认为我的问题出在 ${WORKSPACE} 部分。将PACKAGE_PATH=echo "${WORKSPACE}/CUSTOMBUILD/mybuild.zip" >> env.txt 作为参数传递给执行程序,但是,PACKAGE_PATH 的等效项指向不存在的路径。事实上,当我尝试在主机中使用find 时,我发现上传的文件在JENKINS_HOME 中,这与作业的工作区不同。请参阅我原帖中的一些重要信息。是的,Copy to Slave 插件似乎是我需要的。但是,它依赖于获取上传文件的路径。谢谢。
    • 尝试将 CUSTOMBUILD/mybuild.zip 简单地更改为 mybuild,然后查看作业的工作区(通过 Jenkins UI)。该文件应该在那里。显然,这是针对实际要求文件参数的作业。您使用find 找到的文件在那里,因为那是 Jenkins 跟踪过去构建的参数(这是一个参数)。 $WORKSPACE 的内容也是不稳定的,只能在期间构建。
    • 我的错。我在构建步骤上犯了一个错误。我包括一个清除工作区rm -rf * 的步骤,这就是为什么在触发执行程序之前删除文件参数的原因。非常感谢!
    【解决方案2】:

    我在 WORKSPACE 下找不到我上传的文件,所以我结束了使用类似的东西

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

    【讨论】: