所以我要做的就是在jenkins作业中运行“ rospack list”。我的Jenkinsfile很简单:
pipeline {
agent any
stages {
stage('Test') {
steps {
sh '. /opt/ros/kinetic/setup.bash'
sh 'rospack list'
}
}
}
}
在jenkins job中都不能运行source命令或rospack。但是,当我使用jenkins帐户登录并执行与上面列出的相同的操作时,它可以工作。因此,我真的很困惑Jenkinsfile出了什么问题。预先感谢您的帮助!
答案 0 :(得分:0)
好的,据我所知,一个sh命令在一个终端中执行,因此第二个sh命令将不会使用源PATH。当使用/ bin / bash而不是'。'时,它可以工作:
**test.sh**
#! /bin/bash
. /opt/ros/kinetic/setup.bash
rospack list
**Jenkinsfile**
pipeline {
agent any
stages {
stage('Test') {
steps {
sh '/bin/bash /opt/ros/kinetic/setup.bash'
}
}
}
}
答案 1 :(得分:0)
我今天自己碰到了这个问题。
sh '. /opt/ros/kinetic/setup.bash'
失败的原因是,setup.bash
打算由 bash 执行,但此处使用 sh 调用。
幸运的是,ROS还提供了一个与sh
一起使用的安装文件,因此,如果您按以下方式修改上述命令,它应该可以成功执行:
sh '. /opt/ros/kinetic/setup.sh'