我正在尝试将测试结果移到公共网页上。
我设置了“构建后动作”> “发布构建任务”来执行脚本。
脚本是:
cp -r /var/lib/jenkins/jobs/instrumentation-tests/htmlreports/HTML_Report/ /var/www/html/test/
Jenkins输出:cp:目录/ var / www / html / test不存在
如果我在运行jenkins的linux机器上以用户jenkins身份登录,我可以导航到源并查看当前有文件。我可以导航到目的地并看到它存在。
另外,我尝试从终端运行该命令作为jenkins用户,并且cp成功完成。
答案 0 :(得分:3)
正如您在评论中提到的,您的测试结果是在从属计算机上构建期间生成的。因此,您尝试将文件复制到从属服务器上的/var/www
,而不是Jenkins主服务器。
有几种不同的方法可以解决这个问题:
确保在主服务器上进行构建。
您可以通过在作业配置页面上选择“限制此项目可以运行的位置”,然后在文本字段中输入“master”来执行此操作。
这可确保您的文件复制在构建结束时起作用,假设Jenkins用户具有写入权限。
使用Publish over SSH plugin将文件从任何其他计算机直接发布到Jenkins主服务器上的/var/www
。
这样做的好处是它可以工作,无论Jenkins构建机器是在哪个构建机构上进行的。
您还可以将作业分为两部分:一个用于运行测试并生成结果的作业,另一个用于发布测试结果的作业。
第一个作业可以在任何计算机上运行,并使用“归档工件”构建后操作保存生成的HTML文件。然后它将开始第二个工作 - 通过“构建其他工作”后构建操作 - 以进行发布。
第二个作业可以使用上述任一方法:使用SSH发布,或者确保它在主服务器上运行并使用cp
的简单shell步骤。
在这两种情况下,您都可以使用Copy Artifact plugin从上游版本中复制已归档的HTML文件。