#bash #ubuntu #github #continuous-integration
#bash #ubuntu #github #непрерывная интеграция
Вопрос:
У меня есть скрипт сборки, который запускается всякий раз, когда я отправляю что-то в репозиторий. Однако я также хочу запустить скрипт локально, потому что я не хочу нажимать фиксацию, которая завершится сбоем на сервере. Моя проблема в том, что некоторые программы различаются в моей локальной среде тестирования и на сервере. Как я могу определить, запущен ли скрипт на сервере? Лучшим решением было бы, если бы на сервере была какая-либо переменная env, которую я мог бы проверить. Плохим решением было бы добавить некоторый env на мой локальный компьютер, потому что это не масштабируется среди членов команды.
Для моего конкретного случая: я хочу скомпилировать свой исходный код на GH, но для этого мне нужно установить некоторые зависимости. На GH I мои команды должны начинаться с sudo
, однако при использовании локального тестирования мне нужно установить sudo перед его использованием (или просто удалить его).
Ответ №1:
вы можете проверить, выполняется ли ваш скрипт в среде GH (или другом CI) через CI
переменную среды. И если значение не пустое, вам нужно добавить sudo
в свою команду
SUDO=''
if [[ ! -z "$CI" ]]; then
SUDO='sudo'
fi
$SUDO a_command
Комментарии:
1. При использовании
set -o nounset
(akaset -u
) это приводит к сбою скриптаCI: unbound variable
, есть ли у вас альтернатива для проверки, не установлен ли CI / не true ?