Как развернуть на пользовательский сервер из Travis с помощью скрипта - PullRequest
0 голосов
/ 26 июня 2018

Мой текущий CI имеет GitHub-крюк для запуска тестов travis.Я хочу добавить функцию deploy в мою конфигурацию Travis, которая запускает скрипт bash, который подключается к моему серверу по ssh и выполняет git pull.Это возможно?Например:

  • Travis запускает тесты, а затем запускает развертывание provider: script bash scripts/deploy.sh
  • Сценарий SSH на моем сервере (pw может быть Travis ENV var)
  • Скрипт Deploy выполняет git pull

Примечание: мой сервер - Ubuntu, и у меня есть полный доступ с правами root и выделенный IP.

Ответы [ 2 ]

0 голосов
/ 14 октября 2018

Если у вас есть root-доступ к вашему серверу, сохраните приведенные ниже коды в файле с именем «server-setup.sh» на локальном компьютере.

chmod +x server-setup.sh
execute ./server-setup.sh 

server-setup.sh

#!/usr/bin/env bash

echo "Creating a separate user who have deploy access on your server"
read -p 'Server Address ' SERVER
read -p 'Deploy User Name ' USER

# Generate ssh key pair
ssh-keygen -t rsa -N "" -f ${USER}_rsa
PUB_KEY=$(cat ${USER}_rsa.pub)
PRV_KEY=$(cat ${USER}_rsa)

# Encrypt private key with your CI tool
travis encrypt-file ${USER}_rsa ./travis/${USER}_rsa.enc --add --force

# Add rsa keys to gitignore
echo ${USER}_rsa >> .gitignore
echo ${USER}_rsa.pub >> .gitignore

ssh -t -o StrictHostKeyChecking=no root@"${SERVER}" << EOF
sudo adduser --disabled-password --gecos "" ${USER}
echo "travis ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers.d/${USER}
chmod 0440 /etc/sudoers.d/${USER}
sudo usermod -a -G docker ${USER}

sudo su ${USER}
cd ~
mkdir ~/.ssh
chmod 700 ~/.ssh
echo "${PUB_KEY}" >> ~/.ssh/authorized_keys

# Add ssh key to help cloning private github repo
echo "${PRV_KEY}" >> ~/.ssh/github_rsa
chmod 600 ~/.ssh/github_rsa
eval \$(ssh-agent)
ssh-add ~/.ssh/github_rsa
ssh-keyscan github.com >> ~/.ssh/known_hosts
echo IdentityFile ~/.ssh/github_rsa >> ~/.ssh/config
EOF

echo *********************************************************************************************************
echo "Go to https://github.com/"$(git config --get travis.slug)"/settings/keys/new and add the below text :-"
echo ---------------------------------------------------------------------------------------------------------
echo ${PUB_KEY}
echo ---------------------------------------------------------------------------------------------------------

См. Один пример здесь .travis.yml file и travis / deploy.sh file: Example

Примечание: Но git pull не очень хорошая идея.Лучше создать свои артефакты или любые зависимости от самого travis и использовать scp или что-то еще, чтобы скопировать эти артефакты из travis на ваш сервер через ssh.Или сначала зайдите на свой сервер, извлеките репозиторий github, затем настройте репо на сервере для приема push-уведомлений от travis.

0 голосов
/ 26 июня 2018

хорошо, ко мне приходят 2 метода, чтобы решить вашу проблему.

вы можете использовать команду Ожидаем , которая написана на TCL, для взаимодействия с командой ssh, когдадля этого нужно ввести пароль.Вы можете проверить это статья

Второй метод, это не использование пароля, а закрытый ключ для доступа к удаленному серверу без необходимости ввода пароля.вы можете использовать ssh-keygen для генерации пары ключей, которые будут храниться как $ home / .ssh / id_rsa и $ home / .ssh / id_rsa.pub, а тот, который с суффиксом pub является открытым ключом, вы можете поместитьэто на удаленном сервере: $ home / .ssh / authorized_keys, тогда вам больше не понадобится пароль

...