gem install travis
travis login输入账号密码登录成功后,使用
travis encrypt-file加密:
travis encrypt-file ~/.ssh/id_rsa --add上面命令执行完后,会生成一段解密命令并添加到
.travis.yml中:
before_install:
- openssl aes-256-cbc -K $encrypted_830d3b21a25d_key -iv $encrypted_830d3b21a25d_iv
-in ~/.ssh/id_rsa.enc -out ~/.ssh/id_rsa -d接下来,把加密后的私钥文件(id_rsa.enc)复制到代码库中,千万要注意不要错把未加密的私钥文件(id_rsa)复制到你的代码库中。然后把上面的解密命令的
-in ~/.ssh/id_rsa.enc改为
-in id_rsa.enc。通过上面的过程就基本建立测试机与生产服务器的信任关系,但还有一些小细节要处理。例如,降低id_rsa文件的权限,否则ssh处于安全方面的原因会拒绝读取秘钥;将生产服务器地址加入到测试机的信任列表中,否则连接时会询问是否信任服务器。更改后的配置如下:
before_install:
- openssl aes-256-cbc -K $encrypted_830d3b21a25d_key -iv $encrypted_830d3b21a25d_iv
-in id_rsa.enc -out ~/.ssh/id_rsa -d
- chmod 600 ~/.ssh/id_rsa
- echo -e "Host 102.201.64.94ntStrictHostKeyChecking non" >> ~/.ssh/config最后,测试机就可以愉快地操作生产服务器了,例如下面是一个nodejs应用的
.travis.yml文件配置:
language: node_js
node_js:
- '4.4.4'
before_install:
- openssl aes-256-cbc -K $encrypted_830d3b21a25d_key -iv $encrypted_830d3b21a25d_iv
-in id_rsa.enc -out ~/.ssh/id_rsa -d
- chmod 600 ~/.ssh/id_rsa
- echo -e "Host 102.201.64.94ntStrictHostKeyChecking non" >> ~/.ssh/config
script:
- npm run test
after_success:
- npm prune --production # 删除devDependencies
- tar -jcf indoor-server.tar.bz2 * # 打包并压缩代码
- scp indoor-server.tar.bz2 jingsam@102.201.64.94:~/ # 复制到生产服务器上
- ssh jingsam@102.201.64.94 'mkdir -p indoor-server && tar -jxf indoor-server.tar.bz2 -C indoor-server' # 解压
- ssh jingsam@102.201.64.94 'cd indoor-server && pm2 startOrReload pm2.json' # 重启pm2总结
本篇文章讲的自动部署其实与nodejs关系不大,完全适用于各种语言的自动部署,其原理都是相通的。
好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对软件开发网的支持









