jenkins学习:pipeline运行问题-cmake:command not found

本文记录了一位Jenkins新手在使用Pipeline时遇到的CMake命令未找到的问题。问题源于Pipeline脚本中agent设置错误,导致脚本在未安装CMake的节点上执行。尝试了修改shell脚本、配置环境变量和直接指定CMake路径等方法后,最终发现是由于`agent any`设置导致任务在不同设备上运行。通过将agent改为特定的节点标签,如`agent { label 'build' }

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

记录下jenkins新手学习使用过程中发现的问题和解决方法,以免遗忘。

一.结论:

        pipeline script中agent设置错误,让shell命令运行在了未安装cmake的agent。

二.问题描述及解决过程:

1.问题:在jenkins上配置了一个pipeline工程,在pepeline script中运行shell脚本时,出现错误--cmake : command not found,如下图:

由于之前建自由风格项目使用过cmake ,没有怀疑cmake未安装,觉得可能是环境变量问题,随即百度,发现主要解决方式是以下三种:

1)在shell脚本开头加-ilex,即:

# !/bin/bash -ilex

该命令加上后,运行脚本前会加载所有环境变量

2)在jenkins网页配置环境变量,具体路径为Manage Jenkins ---->Config System,x下面的路径就看具体的了(我的路径就和网上不同)。

3)简单粗暴,shell脚本中直接export cmake路径

以上三种方式尝试后,均告失败,然后因为之前自由项目是正常使用cmake的,所以在两个项目中分别使用shell命令:whoami、cat /etc/passwd 、whereis cmake,得到的结果感觉两个项目运行在不同的linux设备上,最后确定是因为这里:

running on这里另一个项目是另一个参数, 明显两个项目运行在不同的设备上,百度后发现是pipeline script中agent 参数问题。

agent参数是可以设置你的项目在哪个设备哪个文件夹下运行,其中的设备(node)为你在Manage Jenkins---->Manage Nodes and Clounds中设置的node,之前错误是默认的any:

agent any

表示运行在你配置的nodes中任意一个,我配置了多个node,所以运行在了不同的设备出现了问题,改为同一个设备:

agent {
    label 'build'
}

修改后,build项目正常

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值