k4czp3r.xyz Blog

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#

  1. Przejdź do katalogu swojego repozytorium i sudo travis login --com (com, jeśli twoje repo jest prywatne i korzystasz z travis.com, a nie travis.org, w przeciwnym razie użyj org)
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>
  1. Wygeneruj klucz SSH: ssh-keygen -t rsa -b 4096 -C 'build@travis-ci.org' -f ./deploy_rsa (utwórz klucz bez hasła)
  2. Zaszyfruj klucz prywatny i dodaj go do travis: sudo travis encrypt-file deploy_rsa -add
  3. Skopiuj klucz publiczny na serwer docelowy i dodaj go do authorized keys: ssh-copy-id -i deploy_rsa.pub username@hostip
  4. Usuń deploy_rsa ze swojego repozytorium! Każdy, kto ma ten klucz, może uzyskać dostęp do twojego serwera bez hasła!
  5. Dodaj poniższe linie do swojego pliku .travis.yml:
yaml14 linii · przewiń
   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:       - hostip

Wartość ? w zaszyfrowanych kluczach znajdziesz w Settings->Environment Variables swojego repozytorium w Travisie

  1. Od teraz wszystkie udane buildy będą deployowane