У меня есть сервер Jenkins, который должен разгрузить выполнение более крупных тестов в кластер HPC:
Кластер предоставляет SSH-доступ своим пользователям.,Выполнение вычислений в кластере управляется диспетчером рабочей нагрузки , который определяет доступные вычислительные ресурсы каждого пользователя, а также приоритет его / ее заданий на основе того, что пользователь выполнил в кластере.до сих пор.
Необходимо использовать диспетчер рабочей нагрузки для выполнения заданий в кластере.
Я хотел соединить кластер с тестовым сервером Jenkins, поэтому я сгенерировал пару ключей SSH и скопировал открытый ключ jenkins в файл authorized_keys в кластере.На этом этапе я могу войти в систему из командной строки как пользователь кластера следующим образом:
/jenkinsserver/home/jenkins> whoami
jenkins
/jenkinsserver/home/jenkins> ssh clusteruser@clusterloginnode
Так что у пользователя jenkins нет проблем при входе в систему как clusteruser в кластере, используя открытый SSH-ключ сервера jenkins .
Это прекрасно, так как все, что я делаю в кластере, зависит от конфигурации кластера: clusteruser имеет свои собственные ресурсы и т. Д.
Теперь,если я хочу выполнить это в конвейере Дженкинса, все не работает.
Во-первых, просто используя
ssh clusteruser@clusterloginnode
в конвейере:
Соединение приводит к ошибке: «Псевдотерминал не будет выделен, потому что stdin не является терминалом», и для этого я нашел решение здесь .
Однако, когда я использую опцию "-tt",соединение висит, я вижу на выходе конвейера, что соединение установлено, и кластерная среда загружена, но она просто висит там.
Если я использую опцию "-T" для команды SSH, команда выполняется и завершается до того, как что-либо еще будет сделано, а затем я снова на главном узле Jenkins, поэтому я не выполняю командыкоторые отвечают за запуск теста.
Если я использую плагин Publish Over Ssh в Jenkins, он запрашивает имя пользователя на другом компьютере:
В моем случае это имеет смысл 0 , потому что я не настраиваю ни одного пользователя "jenkins" где-то на узле ремоделирования jenkins, я хочу, чтобы пользователи запрашивали SSH-соединение с кластером в своих сценариях SHELL, так как ониделайте обычно , используя свои имена пользователей кластера , чтобы они получали доступ к своим ресурсам в кластере (управляются менеджером рабочей нагрузки).
Что мне делать?