#ubuntu #jenkins #ros
#ubuntu #дженкинс #ros
Вопрос:
Итак, что я хочу сделать, это просто запустить «список пакетов» в задании jenkins. Мой Jenkinsfile довольно прост:
pipeline {
agent any
stages {
stage('Test') {
steps {
sh '. /opt/ros/kinetic/setup.bash'
sh 'rospack list'
}
}
}
}
Ни исходная команда, ни rospack не могут быть запущены внутри задания jenkins. Но когда я вхожу в систему с учетной записью jenkins и делаю то же самое, что указано выше, это работает. Итак, я действительно смущен тем, что не так с файлом Jenkins. Заранее спасибо за помощь!
- ОС: Ubuntu 16.04 LTS
- Дженкинс: 2.150.3
- ROS: кинетический
Комментарии:
1. И все же очень странная проблема заключается в том, что когда я создаю задание в свободном стиле, затем выполняю скрипт на этапе сборки, тогда это работает. Это означает, что проблема связана только с конвейером.
Ответ №1:
Сегодня я сам столкнулся с этой проблемой. sh '. /opt/ros/kinetic/setup.bash'
Сбой происходит потому, что setup.bash
она предназначена для выполнения с помощью bash, но здесь она вызывается с помощью sh.
К счастью, ROS также предоставляет установочный файл для использования с sh
, поэтому, если вы измените приведенную выше команду следующим образом, она должна успешно выполняться:
sh '. /opt/ros/kinetic/setup.sh'
Ответ №2:
Хорошо, насколько я понимаю, одна команда sh выполняется в одном терминале, поэтому исходный ПУТЬ не будет использоваться второй командой sh. Это работает при использовании /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'
}
}
}
}