Как определить, запущен ли скрипт CI на сервере GitHub

#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 (aka set -u ) это приводит к сбою скрипта CI: unbound variable , есть ли у вас альтернатива для проверки, не установлен ли CI / не true ?