2016-01-11 2 views
0

У меня есть сценарий для развертывания приложений beanstalk AWS. Ранние части сценария изменить несколько файлов на основе среды я развертывает:Статус выхода из сценария Bash для учета сброса git

if [[ $enviro == qa ]] || [[ $enviro == staging ]]; then 
    sed -i '' 's/'$app'.config/'$app'-'$enviro'.config/g' .ebextensions/0006_file.config 
    git add .ebextensions/0006_file.config && git commit -m " for deploy only - will be (soft) reset " 
fi 

Последний бит моего сценария возвращается, что с:

if [[ $enviro == qa ]] || [[ $enviro == staging ]]; then 
    git reset --soft HEAD~1 
    git reset HEAD .ebextensions/0006_file.config 
    git checkout .ebextensions/0006_file.config 
fi 

Однако между этими двумя блоками I имеют фактическую Deploy строку:

eb deploy $app-$enviro --label $current_date-$current_user --timeout 30 -v 

то, что я хотел бы сделать, это написать, если/то о том, что выходит из сценария, если блок «Eb Deploy» завершается с кодом выхода = 1, но и делает сброс GIT , Если блок сценария «eb deploy» успешно завершен I:

echo "Congratulations, you've deployed $branch to $enviro" 

Я не могу сказать, но я могу переусердствовать. Я открыт для предложений. Я предполагаю, что у моего второго блока будет еще один [[]], который устанавливает rc = $?

Мысли?

+0

Является ли это репозиторий git проверенным при развертывании изображения или является локальной конфигурацией для eb? –

+0

это локальная конфигурация для eb. – hobakill

+0

Тогда почему вы проверяете это на git? –

ответ

0

«Ловушка» поставила меня на правильную дорогу, но мне нужно было добавить функцию для завершения процесса.

function clean_up { 
    if [[ $enviro == qa ]] || [[ $enviro == staging ]] || [[ $enviro == staging2 ]]; then 
    git reset --soft HEAD~1 
    git reset HEAD .ebextensions/0006_file.config 
    git checkout .ebextensions/0006_file.config 
    fi 
} 
fi 
trap clean_up EXIT 
+0

первым аргументом 'trap' является код для запуска; если вы посмотрите на мой ответ, вы увидите, что это одна многострочная строка. Вы можете положить что-нибудь там, и это сработает, но функция, вероятно, более чистая. –

+0

@MarkReed - да, это определенно помогло. моя репутация еще не в 15, поэтому я не могу выдвинуть ваше предложение, но это было очень полезно. – hobakill

0

Если у вас есть код, который вы хотите запустить при выходе сценария, даже если он выйдет раньше, вы можете сделать это с помощью trap.

# this code will get run when the script exits, whether via `exit` or falling 
# off the bottom of the script 
trap ' 
    git reset --whatever 
' EXIT 
+0

Спасибо, я дам этот снимок и отчитаюсь. – hobakill

+0

получил это обратно: trap: use: trap [-lp] [arg signal_spec ...] – hobakill

+0

Мне пришлось исправить это с помощью функции [https://gist.github.com/hobakill/0a3813f74c0288b04603). – hobakill