Ниже моя Настройка канала связи Jenkins
stage ('Import') {
steps {
sshagent([sshCredentials]) {
sh '''
#!/bin/bash
sh -x ETL_AUTOMATION/Scripts/export.sh
'''
Вывод сборки:-
[[ RMO_TST12 == ]]
ETL_AUTOMATION/Scripts/export.sh: 17: ETL_AUTOMATION/Scripts/export.sh: [[: not found
ЕСЛИ условие в сценарии:-
if [[ "$SOURCE_FOLDER" == "" ]]; then
echo "SOURCE_FOLDER not specified... exiting"
exit 1
fi
Я упомянул #!/bin/bash в моем сценарии также.
Помогите мне, я действительно поражен здесь.
Вы работаете sh -x ETL_AUTOMATION/Scripts/export.sh
. Это означает, что export.sh
выполняется sh
а не bash
. На Ubuntu, sh
простая оболочка POSIX, названная dash
, и это не поддерживает эти [[
конструкция, которая является bash
вещь. Поэтому просто измените свой сценарий так, чтобы он был запущен с [1 112] вместо [1 113]. Я не знаю синтаксис Jenkins вообще, но я подозреваю, что Вы хотите один из них:
sshagent([sshCredentials]) {
sh '''
ETL_AUTOMATION/Scripts/export.sh
'''
или, если Ваш export.sh
не исполняемый файл:
sshagent([sshCredentials]) {
sh '''
bash ETL_AUTOMATION/Scripts/export.sh
'''
Или, возможно, просто:
sshagent([sshCredentials]) {
bash '''
ETL_AUTOMATION/Scripts/export.sh
'''
, С другой стороны, можно измениться export.sh
, таким образом, это не использует функции только для удара:
if [ -z $SOURCE_FOLDER ]; then
echo "SOURCE_FOLDER not specified... exiting"
exit 1
fi