Я пытаюсь настроить свой 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 вместо моего удаленного сервера? А во-вторых, как я могу по-настоящему запускать команды на моем удаленном сервере?