S SH в ec2 из jenkins и запускаем команды - PullRequest
0 голосов
/ 02 августа 2020

Я пытаюсь настроить свой Jenkinsfile так, чтобы мой master jenkins s sh работал на удаленном сервере ec2 и запускал команды на удаленном сервере . Пока я добавил свой главный ключ publi c сервера jenkins в список authorized_keys моего удаленного сервера ec2, и я могу ввести s sh на свой удаленный сервер. Соответствующие части моего Jenkinsfile:

echo "===> about to SSH into the dev environment.."
        sh '''#!/bin/bash
          echo "===> in bash script now"
          ssh -tt ubuntu@xxx.xx.xx.xxx
          ls
          pwd          
          git pull origin master
          rm -rf node_modules
          npm install
          node app.js
        '''

Я знаю, что смог sh в свой удаленный экземпляр ec2, потому что ls печатает содержимое файлов на моем удаленном сервере.

Однако pwd выводит /var/lib/jenkins/workspace/jenkinsfile_master , что означает, что я все еще на моем основном сервере jenkins . Кроме того, мои команды git и npm не запускаются, потому что git и npm не установлены на моем главном сервере Jenkins.

Поэтому мой первый вопрос: действительно ли я s sh на мой удаленный сервер? Если да, то почему pwd печатает рабочий каталог на моем сервере Jenkins вместо моего удаленного сервера? А во-вторых, как я могу по-настоящему запускать команды на моем удаленном сервере?

1 Ответ

1 голос
/ 02 августа 2020

Рассуждая о поведении, которое вы испытываете, каждая команда вызывается индивидуально в командной строке (что означало бы, что каждая из них запускалась как отдельный сеанс). Если это так, вам нужно объединить их все в цепочку без каких-либо дополнительных плагинов, таких как пример ниже.

ssh -tt ubuntu@xxx.xx.xx.xxx && ls && pwd && git pull origin master .....

Существует плагин Jenkins с именем S SH Steps , который будет позволяют запускать каждую команду, как показано ниже команда удаленно на сервере с помощью AWS CLI / SDK. При этом, поскольку вы используете команду git pull, вам необходимо убедиться, что учетные данные существуют на диске удаленного сервера.

...