无法在詹金斯工作中运行任何ROS命令

时间:2019-03-03 22:08:06

标签: ubuntu jenkins ros

所以我要做的就是在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出了什么问题。预先感谢您的帮助!

  • 操作系统:Ubuntu 16.04 LTS
  • 詹金斯:2.150.3
  • ROS:动力学

Error info from Jenkins jobTest with jenkins account

2 个答案:

答案 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'