Сделайте Jenkins 'Execute Shell' точно таким же, как при использовании bash shell
Итак, я столкнулся с несколькими моментами, которые, кажется, просто не работают прямо на этапе сборки jenkins 'Execute shell'. Это прекрасно работает, когда вы вошли в систему как один и тот же пользователь на той же машине, когда вводите в bash/zsh/ терминал.
Есть ли где-то настройки, чтобы они точно соответствовали, с точки зрения разрешений, вывода и т. Д.... кажется, что Дженкинс находится в какой-то странной песочнице, и это действительно расстраивает.
Несколько вещей, которые сработали до сих пор, это команды ruby, такие как
bundle exec nanoc compile
а также
cap deploy
Любые идеи были бы хорошы!
Больше информации: Jenkins работает на Mac OSX Mavericks.
1 ответ
Это ситуация, когда детали имеют значение.
Наиболее распространенный случай, когда команды работают во время интерактивного тестирования, но не работают при запуске из службы, - это простая зависимость от переменных среды, файлов точек, разрешений на файлы и аналогичных настроек.
Вы можете проверить, как пользователь, под которым вы используете Jenkins, используя su - jenkins
(предполагается, что пользователь по имени "Дженкинс"). Затем проверьте переменные среды в области видимости для вашей среды выполнения; один из способов сделать это просто запустить env
команда внутри вашей работы Дженкинс, а затем с помощью env -i K1=V1 K2=V2 ... your-command
смоделировать ту же среду в ваших тестах.
Наконец, убедитесь, что оболочка, используемая для тестирования, такая же, как и во время выполнения. Если Дженкинс начинает /bin/sh
нужно проверить с /bin/sh
- нет /bin/bash
(даже если /bin/sh
символическая ссылка на bash
!) и уж точно нет zsh
,
Если ваши случаи сбоев достаточно интересны, возможно, вы попадаете в рамки безопасности на уровне ОС. Невозможно определить это без точных подробностей о сбоях, которые здесь не приводятся (и в любом случае они не очень актуальны для Stackru; это будет вопросом для ServerFault или такого, если вы применяете ограничения такого типа). Ваш системный администратор - лучшие люди, которые могут здесь помочь.