解决Jenkins中Node和Yarn路径问题:‘No such file or directory‘

在Jenkins中使用Node.js和Yarn时,可能会遇到 'No such file or directory' 错误。这通常是因为Jenkins构建环境没有正确设置PATH环境变量,导致它无法找到Node.js或Yarn的执行文件。以下是几种解决这个问题的方法,确保您的CI/CD流程顺利运行。

方法1:创建软链接(我使用的方法)

软链接方法是在系统的通用bin目录(如/usr/bin)创建一个到NVM Node版本的链接。

sudo ln -s /root/.nvm/versions/node/v16.14.2/bin/node /usr/bin/node
sudo ln -s /root/.nvm/versions/node/v16.14.2/bin/yarn /usr/bin/yarn

这样,无论在哪个路径下运行yarn,都能正确找到node

方法2:修改构建脚本的环境变量

在Jenkins的构建脚本中,您可以临时设置PATH环境变量:

export PATH=/root/.nvm/versions/node/v16.14.2/bin:$PATH
yarn -v

这允许构建过程识别到正确的Node.js和Yarn路径。

方法3:在构建脚本中初始化NVM

通过在Jenkins的构建脚本中加载NVM,您可以使用NVM来切换到指定的Node版本:

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
nvm use v16.14.2
yarn -v

这种方法不需要修改全局环境变量,是一种更加安全和可控的方法。

方法4:确保正确的用户Shell配置

如果Jenkins服务以守护进程方式运行,确保在启动服务时,Jenkins用户(通常是jenkins用户)的shell配置文件(如.bashrc.profile)正确加载了NVM。

总结

在Jenkins中设置正确的Node.js和Yarn路径,对于确保构建过程的稳定性至关重要。通过上述方法,您可以确保Jenkins能够正确找到和使用Node.js和Yarn,从而避免常见的路径错误,让您的自动化构建流程更加流畅。

使用场景

无论您是在使用NVM管理多个Node.js版本,还是在不同项目中使用不同版本的Node.js,这些方法都能帮助您解决Jenkins环境中的路径问题。它们特别有助于在持续集成和持续部署(CI/CD)中使用Node.js和Yarn时,保持构建任务的可靠性和效率。

以上就是解决Jenkins中Node和Yarn路径问题的详细指南,希望它能帮助您顺利配置和运行您的Jenkins任务。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/805472.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在线视频下载工具lux(原annie)安装及使用教程

安装教程 下载ffmpeg,参考这篇文章:Python——Windows下载ffmpeg由于博主的系统为windows,所以选择不安装lux,直接下载.exe文件,进入lux的github网站后,选择右侧的Releases,下载下图的windows …

渗透测试常见端口总结

21端口渗透剖析 FTP通常用作对远程服务器进行管理,典型应用就是对web系统进行管理。一旦FTP密码泄露就直接威胁web系统安全,甚至黑客通过提权可以直接控制服务器。这里剖析渗透FTP服务器的几种方法。 基础爆破:FTP爆破工具很多,…

SpringBoot删除菜品模块开发(SpringMVC分割参数、事务管理、异常处理、批量删除)

需求分析与设计 一:产品原型 在菜品列表页面,每个菜品后面对应的操作分别为修改、删除、停售,可通过删除功能完成对菜品及相关的数据进行删除。 删除菜品原型: 业务规则: 可以一次删除一个菜品,也可以批…

【proteus仿真】定时器0中断实验

#include <REGX51.H> sbit LED1P2^0; void delay(unsigned int ten_s) {while(ten_s--); } void inittime0(void) {TMOD0x01;//选择为定时器0模式&#xff0c;工作方式1TH00xFC;//初值65536-100064536FC18H,定时1msTL00x18;ET01;//打开定时器0中断允许EA1;//打开总中断TR…

取消请求实战

关于前端取消请求&#xff0c;大多数文章都是new AbortController() 然后将signal放到请求中&#xff0c;然后执行abort取消&#xff0c;这种文章怎么好意思拿出来啊&#xff0c;mmmmini版的官方文档罢了。 首先要明确我们想要的效果是什么&#xff0c;可以对比一下toast.show…

InternLM2 技术报告——社区翻译版

InternLM2技术报告于近日正式对外发布&#xff0c;不少社区大佬自发地参与到报告的翻译与解读中来。本文为社区用户翻译的InternLM2技术报告原文&#xff0c;分享给大家~ 论文地址&#xff1a; https://arxiv.org/pdf/2403.17297.pdf 摘要 大型语言模型&#xff08;LLMs&…

红队内网攻防渗透:内网渗透之内网和域信息收集

红队内网攻防渗透 1.内网渗透之信息收集1.内网信息收集的目的2.本机信息收集网络配置查询操作系统及版本信息查看系统体系结构查看安装的软件及版本、路径等查询本机服务查询进程列表查毒软件查看启动程序信息查看计划任务查看主机开机时间查询用户列表获取本地管理员查看当前在…

unity的引用传递和数组的联系

引用传递 //引用传递 static void SetY(out int x,out int y ){x 0;y 0;x 1000;}static void Main(string[] args){int x 0;int y 10;SetY(out x, out y);Console.WriteLine($"x{x},y{y}");} 结果是&#xff1a;x1000&#xff0c;y0 数组的引用传递 数组值…

Linux 创建命令

在学习linux操作系统时,一般从最基本的cd、pwd命令,到常用命令mkdir、cat、df等,再到高级命令sed、awk、nmcli、crontab等,学习linux时会遇到大量命令。当我们不会使用时,可以借助man、info、--help等,查看如何使用,从中学习选项、参数等设置方法。 当进一步学习bash编…

Java基础常见面试总结

文章目录 1. 变量、数据类型转换、运算符1.1 变量1.2 数据类型转换1.2.1强转的注意事项 1.3 进制的转换1.4 位运算符1.5 运算符1.6 三元运算符 2. 流程控制2.1 键盘录入_Scanner2.2 Random随机数2.3 switch(选择语句)2.4 分支语句2.5 循环语句 3. 数组3.1 数组的定义3.2 数组操…

LeetCode热题100

一丶哈希 1、两数之和 方法一&#xff08;自己想到&#xff09;&#xff1a;暴力枚举&#xff0c;两次循环遍历所有相加的情况 class Solution {public int[] twoSum(int[] nums, int target) {for(int i0;i<nums.length;i){for(int ji1;j<nums.length;j){if(nums[i]nu…

证件照小于30kb怎么弄?这个工具三步搞定

当我们需要将照片上传到各种平台时&#xff0c;常常会遇到图片文件大小限制的问题。无论是社交媒体平台还是工作需求&#xff0c;如果照片文件过大&#xff0c;系统会提示上传失败或无法上传。想要解决的这个问题&#xff0c;可以选择将图片压缩指定大小&#xff0c;比如图片压…

蓝桥杯-求阶乘

问题描述 满足 N!的末尾恰好有 区 个o的最小的 N 是多少? 如果这样的 N 不存在输出 -1。 输入格式 一个整数 区。 输出格式 一个整数代表答案。 样例输入 样例输出 10 评测用例规模与约定 对于 30% 的数据,1<K<106 对于 100% 的数据,1<K<1018 运行限制 最大运行时…

Redis 分区:构建高性能、高可用的大规模数据存储解决方案

在 Redis 中&#xff0c;分区是一种将数据分布在多个实例上的技术&#xff0c;用于处理大规模数据和提高系统性能。通过分区&#xff0c;可以将数据均匀地分布在多个节点上&#xff0c;从而减轻单个节点的负载压力&#xff0c;并实现水平扩展。 Redis 分区应用场景 1. 大规模…

Go语言中如何处理goroutine和循环变量

对goroutine和循环变量处理不当可能是Go开发人员在编写并发应用程序时最常犯的错误之一。让我们看一个具体的例子,然后我们将定义发生此类错误的条件以及如何防止发生这类错误。 在下面的示例中,我们初始化一个切片,然后在作为新goroutine执行的闭包中访问这个元素: s := …

【Git教程】(九)版本标签 —— 创建、查看标签,标签的散列值,将标签添加到日志输出中,判断标签是否包含特定的提交 ~

Git教程 版本标签&#xff08;tag&#xff09; 1️⃣ 创建标签2️⃣ 查看存在的标签3️⃣ 标签的散列值4️⃣ 将标签添加到日志输出中5️⃣ 判断tag是否包含特定的提交&#x1f33e; 总结 大多数项目都是用 1.7.3.2和 “ gingerbread” 这样的数字或名称来标识软件版本的。在 …

5g和2.4g频段有什么区别

运行的频段不同 2.4G和5G频段的主要区别在于它们运行的频段不同&#xff0c;2.4G频段运行在2.4GHz的频段上&#xff0c;而5G频段&#xff08;这里指的是5GHz频段&#xff09;运行在5GHz的频段上。12 这导致了两者在传输速度、覆盖范围、抗干扰能力等方面的明显差异。以下是详…

数字图像处理与交叉学科中名词的拧巴

特征提取 图像处理——对图像、目标或特征点进行定量描述的方法及过程。 模式识别——对原特征进行特征变换&#xff0c;从高维空间到低维空间映射。 特征向量 模式识别、图像处理——一个观测包括多个变量&#xff0c;样本的多个特征组成特征向量。 线性代数——特征值对应的…

[闲聊统计]之参数估计是什么?(下)

我们在前面说了一下参数估计中的点估计&#xff0c;接下来&#xff0c;我们来讲一下区间估计。 区间估计——在点估计的基础上&#xff0c;给出总体参数估计的一个估计区间&#xff0c;该区间由样本统计量加减估计误差而得到。 置信水平——如果将构造置信区间的步骤重复多次&a…

01背包问题 小明的背包

2.小明的背包1 - 蓝桥云课 (lanqiao.cn) #include <bits/stdc.h> using namespace std; const int N1010;//开始写的105 开小了 样例过了但最后只过了很少一部分 int n,m; int v[N],w[N]; int f[N][N];int main() {cin>>n>>m;for(int i1;i<n;i){cin>&…