测试执行期间如何打印Jenkins指定目录的文件及文件夹列表?
在Jenkins测试运行期间打印指定目录内容的方法
当然可以!在Jenkins测试运行过程中打印指定目录下的所有文件、文件夹内容完全可行,这里有几种实用的实现方式,根据你的Jenkins环境和配置习惯选择即可:
方法一:Shell脚本(Linux/Unix环境)
如果你的Jenkins构建节点是Linux或Unix系统,直接在构建步骤中添加「Execute shell」任务,使用常见的文件遍历命令就能实现:
- 打印目录下所有内容(包含子目录,带详细权限、大小等信息):
echo "=== 目录/var/jenkins_home/jobs/${JOB_NAME}/workspace/targets 内容如下 ===" ls -laR /var/jenkins_home/jobs/${JOB_NAME}/workspace/targets
这里的*${JOB_NAME}*是Jenkins内置的环境变量,会自动替换为当前运行的Job名称,不用手动硬编码Job名,适配性更强。
- 只输出简洁的文件/文件夹路径列表(递归子目录):
find /var/jenkins_home/jobs/${JOB_NAME}/workspace/targets -type f -o -type d | sort
find命令可以灵活筛选,比如去掉-type f就只显示文件夹,sort让输出结果更整齐有序。
方法二:Jenkins Pipeline脚本
如果你的项目用的是Jenkins Pipeline(声明式或脚本式),可以直接在Jenkinsfile中添加打印步骤:
pipeline { agent any stages { stage('Print Targets Directory Content') { steps { sh ''' echo "=== 开始打印指定目录内容 ===" ls -laR /var/jenkins_home/jobs/${JOB_NAME}/workspace/targets echo "=== 目录内容打印完成 ===" ''' } } } }
同样借助*${JOB_NAME}*变量自动适配当前Job,不管哪个Job复用这个Pipeline,路径都会自动匹配。
方法三:Windows环境适配
如果你的Jenkins构建节点是Windows系统,就用Windows批处理命令,在「Execute Windows batch command」步骤中添加:
echo === 目录C:\Jenkins\jobs\%JOB_NAME%\workspace\targets 内容如下 === dir /s /b "C:\Jenkins\jobs\%JOB_NAME%\workspace\targets"
/s参数表示递归遍历子目录,/b表示输出简洁的路径格式,路径带空格时一定要用引号包裹。
小提示
- 确保Jenkins运行用户拥有目标目录的读取权限,否则会出现权限不足的报错。
- 如果你的Workspace路径有自定义配置,记得根据实际情况调整目录路径,比如有些Jenkins会把Workspace放在其他位置。
内容的提问来源于stack exchange,提问作者Larry
相关产品推荐
相关产品推荐

