TravisCI-builds deployen via SSH
Ik kon de informatie hierover nergens op één plek vinden, dus besloot ik alles wat je nodig hebt te verzamelen en er een post van te maken.
We moeten de private key versleutelen en aan je repo in TravisCI koppelen, en de public key op je remote VPS registreren. Zodra die daar is opgeslagen, kan de build bot er veilig bij wanneer dat nodig is.
Vereisten (lokale machine)
- ruby-dev:
apt-get install ruby-dev - travis:
gem install travis
SSH-key genereren en naar Travis CI pushen
- Ga naar de directory van je repository en
sudo travis login --com(comals je repo privé is en jetravis.comgebruikt in plaats vantravis.org, gebruik andersorg)
Als je 2FA op je GitHub-account hebt ingeschakeld, moet je een token genereren en het zo meegeven: sudo travis login --com --github-token <YOUR TOKEN HERE>- Genereer een SSH-key:
ssh-keygen -t rsa -b 4096 -C 'build@travis-ci.org' -f ./deploy_rsa(maak de key aan zonder wachtwoord) - Versleutel de private key en voeg hem toe aan travis:
sudo travis encrypt-file deploy_rsa -add - Kopieer de public key naar de doelserver en voeg hem toe aan de authorized keys:
ssh-copy-id -i deploy_rsa.pub username@hostip - Verwijder
deploy_rsauit je repository! Iedereen met deze key kan zonder wachtwoord toegang tot je server krijgen! - Voeg de volgende regels toe aan je
.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:
- hostipVoor de ? in de encrypted keys kijk je bij Settings->Environment Variables van je repository in Travis
- Vanaf nu worden alle geslaagde builds gedeployd