Eu recebo o seguinte erro para meu projeto do github depois de confirmar meu código no travis-ci.org:
Deploying application
on master ✓
domain: <mydomain> ✓
site path: /srv/http/webapps/Main ✓
zipping _site to site.zip...
decrypting ssh key...
bad magic number
Script failed with status 1
failed to deploy
Eu bifurquei um projeto que estou tentando assumir e manter enquanto o projeto está sendo descontinuado pelo autor, o que acho uma vergonha. Este projeto usa travis para atualizar seu site. Eu não estou familiarizado com os travis, nunca citei criptografia e, na verdade, nunca configurei um site antes, então estou completamente sem noção do que estou fazendo.
Estou usando três computadores para conseguir isso. Eu mesmo, um computador de desenvolvimento e o site que hospeda um.
Os arquivos que considero relevantes são .travis.yml
, .deploy/deploy.sh
e .deploy/deploy_key.enc
O que eu fiz foi o seguinte:
sudo ssh root@UBS-main
cd /srv/http/webapps/Main
nano .travis.yml (removing env.global.secure line)
ssh-keygen -t rsa -b 4096 -C '[email protected]' -f ./deploy_key
travis encrypt-file deploy_key --add
travis encrypt MY_SECRET_ENV=<pass> --add env.global
rm deploy_key
scp /srv/http/webapps/Main/deploy_key.enc folatt@UBS-Dev:~/workspace/UBS/UBS-site/deploy/deploy_key.enc
scp /srv/http/webapps/Main/.travis.yml folatt@UBS-Dev:~/workspace/UBS/UBS-site/.travis.yml
Isto está assumindo que eu
- precisa criar uma chave ssh
- Criptografar essa chave usando travis.
- Precisa de algum tipo de senha secreta? usando o travis novamente.
- remova a chave não criptografada.
- Mova a chave e o arquivo travis para o repositório do computador de desenvolvimento.
- E, em seguida, confirme as alterações no github.
.travis.yml
language: ruby
sudo: false
rvm:
- 2.2
env:
global:
- domain: <mydomain> (changed)
- site_path: /srv/http/webapps/Main (changed)
- secure: <bunch of encrypted code> (changed)
before_script:
- npm install -g bower
- bower install
script: bundle exec jekyll build
deploy:
provider: script
skip_cleanup: true
script: "./deploy/deploy.sh"
on:
branch: master
./deplay/deploy.sh
#!/usr/bin/env bash
set -e
if [ ! "env:$TRAVIS_BRANCH" == "env:master" ]; then
echo not on master, not deploying
exit 0
fi
echo "on master ✓"
if [ -z "$domain" ]; then
echo "domain" variable not set
exit 1
fi
echo "domain: $domain ✓"
if [ -z "$site_path" ]; then
echo "site_path" variable not set
exit 1
fi
echo "site path: $site_path ✓"
echo "zipping _site to site.zip..."
(cd _site/ && zip -r - .) > site.zip 2>/dev/null
echo "decrypting ssh key..."
openssl aes-256-cbc -k "$deploy_key_pass" -in deploy/deploy_key.enc -out deploy/deploy_key -d
chmod 400 deploy/deploy_key
echo "setting StrictHostKeyChecking for all domains..."
printf "Host *\n StrictHostKeyChecking no\n" > ~/.ssh/config
chmod 400 ~/.ssh/config
echo "copying site to $domain..."
scp -i deploy/deploy_key site.zip deploy@$domain:~/site.zip
ssh -i deploy/deploy_key deploy@$domain 'rm -rf "'$site_path'"/* && unzip ~/site.zip -d "'$site_path'" && rm ~/site.zip'