如何用Jenkins在多文件夹并行执行yarn test?解决yarn未找到问题
多目录并行执行yarn test及Jenkins中yarn未找到问题解决
一、并行运行yarn test的可行性与实现方案
完全可行,以下两种主流方式可实现,且都能在Jenkins中获得直观的测试结果界面:
1. Jenkins Pipeline(推荐)
通过Pipeline的parallel块可以将三个目录的测试任务并行执行,每个任务的状态、输出独立展示,界面可读性极强。示例Jenkinsfile如下:
pipeline { agent any stages { stage('并行执行测试') { parallel { stage('Common 模块测试') { steps { dir('/home/user/project/common') { sh 'yarn test' } } } stage('Web 模块测试') { steps { dir('/home/user/project/web') { sh 'yarn test' } } } stage('Mobile 模块测试') { steps { dir('/home/user/project/mobile') { sh 'yarn test' } } } } } } }
将此文件存入项目根目录,在Jenkins中创建Pipeline项目即可使用。
2. 命令行工具(Freestyle项目适配)
如果暂时不想切换到Pipeline,可以使用concurrently这类工具在单构建步骤中并行执行命令:
- 先全局安装工具:
npm install -g concurrently - 在Freestyle项目的构建步骤中执行:
concurrently "cd /home/user/project/common && yarn test" \ "cd /home/user/project/web && yarn test" \ "cd /home/user/project/mobile && yarn test"
注意:这种方式的测试输出会混合显示,不如Pipeline的界面清晰。
二、Freestyle项目中yarn提示未安装的解决思路
已配置NodeJS插件但仍报错,按以下步骤排查:
确认NodeJS插件的PATH注入
- 进入Jenkins全局工具配置,找到你的NodeJS安装项,确保勾选了「Install yarn globally」
- 在Freestyle项目的「构建环境」中,勾选「Provide Node & npm bin/ folder to PATH」,这会将NodeJS及yarn的bin目录加入构建进程的环境变量
排查路径问题
在构建步骤中先执行以下命令,确认yarn是否在PATH中:echo $PATH which yarn如果输出中没有yarn的路径,说明PATH未正确注入,可手动指定yarn的绝对路径执行(路径根据你的Jenkins NodeJS安装位置调整):
/var/lib/jenkins/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/Node_18/bin/yarn test改用项目本地yarn
避免依赖全局yarn,直接使用每个项目目录下的本地yarn(前提是已执行yarn install):cd /home/user/project/common && ./node_modules/.bin/yarn test
内容的提问来源于stack exchange,提问作者BenNG
相关产品推荐
相关产品推荐

