Deploy buildów TravisCI przez SSH
Nie udało mi się znaleźć tych informacji w jednym miejscu, więc postanowiłem zebrać wszystko, czego potrzebujesz, i zrobić z tego wpis.
Musimy zaszyfrować klucz prywatny i powiązać go z twoim repozytorium w TravisCI oraz zarejestrować klucz publiczny na zdalnym VPS-ie. Gdy zostanie tam zapisany, build bot będzie mógł bezpiecznie z niego korzystać, kiedy zajdzie taka potrzeba.
Wymagania (maszyna lokalna)
- ruby-dev:
apt-get install ruby-dev - travis:
gem install travis
Generowanie klucza SSH i wysyłanie go do Travis CI
- Przejdź do katalogu swojego repozytorium i
sudo travis login --com(com, jeśli twoje repo jest prywatne i korzystasz ztravis.com, a nietravis.org, w przeciwnym razie użyjorg)
Jeśli masz włączone 2FA na koncie GitHub, musisz wygenerować token i podać go w ten sposób: sudo travis login --com --github-token <YOUR TOKEN HERE>- Wygeneruj klucz SSH:
ssh-keygen -t rsa -b 4096 -C 'build@travis-ci.org' -f ./deploy_rsa(utwórz klucz bez hasła) - Zaszyfruj klucz prywatny i dodaj go do travis:
sudo travis encrypt-file deploy_rsa -add - Skopiuj klucz publiczny na serwer docelowy i dodaj go do authorized keys:
ssh-copy-id -i deploy_rsa.pub username@hostip - Usuń
deploy_rsaze swojego repozytorium! Każdy, kto ma ten klucz, może uzyskać dostęp do twojego serwera bez hasła! - Dodaj poniższe linie do swojego pliku
.travis.yml:
before_deploy:
- openssl aes-256-cbc -K $encrypted_?_key -iv $encrypted_?_iv -in deploy_rsa.enc -out /tmp/deploy_rsa -d
- eval "$(ssh-agent -s)"
- chmod 600 /tmp/deploy_rsa
- ssh-add /tmp/deploy_rsa
deploy:
- provider: script
skip_cleanup: true
script: scp -r ./directory_to_copy username@hostip:/dest/dir
addons:
ssh_known_hosts:
- hostipWartość ? w zaszyfrowanych kluczach znajdziesz w Settings->Environment Variables swojego repozytorium w Travisie
- Od teraz wszystkie udane buildy będą deployowane