Это работает из конвейера Jenkins:
stages {
stage('path') {
steps {
sh '''
#!/bin/bash
path="path/to/xml"
info=`curl --user $USER:$PASSWORD ${path}/test.xml | grep '<stakeoverflow>' | tail -1 | sed "s/.*<stakeoverflow>\\([^<]*\\)<\\/stakeoverflow>.*/\\1/"`
echo "${info}"
'''
}
}
}
Вот сценарии bash:
test. sh
function test_call {
: '
test comment
'
test_commands
url_commands
main
}
function test_commands {
: '
test comment two
'
# get essentails vars
another_test
echo "***************${PATH}***************"
info=`curl --user $USER:$PASSWORD ${PATH}/test.xml | grep '<stakeoverflow>' | tail -1 | sed "s/.*<stakeoverflow>\([^<]*\)<\/stakeoverflow>.*/\1/"`
echo "info is: ${info}"
}
Я пробовал также с двойным возвратом sla sh, но выскакивала та же ошибка, что упоминалась ниже в вопросе.
При попытке это:
stage('path') {
steps {
sh '''
set +x
chmod +x test.sh
echo "***********loading bash script***********"
source test.sh
curl --version
test_call
'''
}
}
Это не помогает с помощью «" »или« »я получаю этот вывод:
curl --version
curl 7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.27.1 zlib/1.2.3 libidn/1.18 libssh2/1.4.2
Вот ошибка:
curl: command not found
grep: command not found
tail: command not found
sed: command not found
После того, как я добавил путь скручивания следующим образом:
info=`/usr/bin/curl --user $USER:$PASSWORD ${PATH}/test.xml | grep '<stakeoverflow>' | tail -1 | sed "s/.*<stakeoverflow>\([^<]*\)<\/stakeoverflow>.*/\1/"`
Я получаю следующие ошибки:
grep: command not found
tail: command not found
sed: command not found
Похоже, что-то не так с 'или ".
NB Я тестировал тот же сценарий ios на тот же самый узел Дженкинса
Что я здесь не так делаю? Я довольно смущен, чтобы понять проблему.