Deploy buildów TravisCI przez SSH
Wdrażanie buildów TravisCI na VPS przez SSH: wygenerowanie klucza deploy, zaszyfrowanie go CLI travis, żeby mógł trafić do repo, i konfiguracja before_deploy oraz deploy w .travis.yml.
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