2016-08-25 3 views
0

Say У меня есть репо, что я хотел бы CircleCI развернуть после завершения тестовой последовательности и код следующим образом:Deploy на сервер с CircleCI и SCP

deployment: 
     staging: 
     branch: master 
     commands: 
      - scp -r wp-content/plugins/timespan [email protected]:public_html/wp-content/plugins 

Это работает локально, потому что я установил необходимо выполнить аутентификацию. Но с CircleCI этого контекста нет, поэтому он запрашивает пароль, который я не могу ввести, имея его на следующей строке, то есть - passw0rd.

Итак, я пробовал пару других вещей без успеха: 1) добавление ключа ssh в Circle, и он отвергает это, говоря, что они не поддерживают зашифрованные ключи. 2) Я попытался использовать sshpass, но не смог добавить его в качестве зависимости из-за того, что не знал, как и какой менеджер пакетов использовать для его ввода.

Возможно, кто-нибудь может просветить меня? Я не думаю, что это слишком далеко, но что-то не хватает.

ответ

1

sshpass только необходимо установить на стороне клиента. Вам не нужно устанавливать его на сервер.

Я не знаком с CircleCI, но похоже, что вы пытаетесь установить его на сервер sshpass, что совершенно не нужно. Просто сделайте sshpass -ppassw0rd scp ... в вашем скрипте развертывания CircleCI после его установки на сервере, на котором работает CircleCI, и все должно быть в порядке.

2

Вам не нужно шифровать ключ SSH. Я использую CircleCi для того же самого, просто добавьте нешифрованный ключ в свои разрешения SSH (вы найдете его в своих настройках проекта на CircleCi в разделе «Разрешения». Конечно, вам понадобится открытый ключ в вашем . сервера authorized_keys

в противном случае вы можете добавить дополнительные пакеты через circle.yml: https://circleci.com/docs/installing-custom-software/

вы можете использовать свой файл circle.yml запускать произвольные команды против вашей среды сборки вы имеете корневой доступ к среде через Суд. , поэтому вы должны быть в состоянии настроить его на содержание вашего сердца!

Пример:

dependencies: 
    pre: 
    - sudo apt-get update; sudo apt-get install ssh-pass 

Я надеюсь, что это поможет.

+0

Спасибо! Итак, мое понимание sshpass, et al. несколько эволюционировал, и я могу использовать ssh в терминале с помощью '- sshpass -p 'password' ssh [email protected]', но теперь не знаю, как запускать команды оттуда. Постановка «git pull origin master» после этого не запускается. Мысли? а следующий уровень объединяет несколько команд, так что я могу выполнять checkout, merge и другие git-операции одним выстрелом. Благодаря! – Daniel

+0

Я бы использовал SSH-ключи. Вы хотите запустить «git pull origin master» на удаленном сервере? Jush, используя SSH (и SSH-ключи), вы можете сделать это: 'ssh [email protected]" git pull origin master "'. Или, если у вас есть несколько команд для запуска, я бы поместил их все в скрипт на удаляемом узле, а затем запустил скрипт с помощью команды SSH. – FelicianoTech

Смежные вопросы