Выполнение сценария bash copy_file.sh
из сценария Jenkins Groovy и попытка отправки почты в зависимости от кода выхода, сгенерированного из сценария bash.
copy_file.sh
:
#!/bin/bash
$dir_1=/some/path
$dir_2=/some/other/path
if [ ! -d $dir ]; then
echo "Directory $dir does not exist"
exit 1
else
cp $dir_2/file.txt $dir_1
if [ $? -eq 0 ]; then
echo "File copied successfully"
else
echo "File copy failed"
exit 1
fi
fi
Часть groovy script
:
stage("Copy file") {
def rc = sh(script: "copy_file.sh", returnStatus: true)
echo "Return value of copy_file.sh: ${rc}"
if (rc != 0)
{
mail body: 'Failed!',
subject: 'File copy failed',
to: "[email protected]"
System.exit(0)
}
else
{
mail body: 'Passed!',
subject: 'File copy successful',
to: "[email protected]"
}
}
Теперь, независимо от exit 1
в bash-скрипте, groovy-скрипт всегда получает код возврата 0
в rc
и отправляет Passed!
писем!
Любые предложения, почему я не могу получить код выхода из сценария bash в этом сценарии Groovy?
НУЖНО ЛИ МНЕ ИСПОЛЬЗОВАТЬ КОД ВОЗВРАТА ВМЕСТО КОДА ВЫХОДА?
bash
, как и сценарийgroovy
, написан мной. Кажется, что всякий раз, когда сценарий bash сталкивается сexit 1
, он возвращает управление сценариюgroovy
, но сценарийgroovy
не получает код возврата от bash должным образом. - person Foobar-naut   schedule 10.01.2018