记录下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项目正常