使用GitHub管理代码,写完之后经常需要打包部署到阿里云服务器,于是开始学习使用travis CI。
中间过程参考如下
持续集成服务 Travis CI 教程
http://www.ruanyifeng.com/blog/2017/12/travis_ci_tutorial.html
https://segmentfault.com/a/1190000011218410?_ea=5032568
我碰到的问题是:
iv undefinition
原因在于`.travis.yml里的两个变量没有读取到,解密失败
travis encrypt-file命令将使用对称加密 (AES-256) 为你加密文件, 并将密钥存储在secure变量中,travis CI没有把这个值自动同步到travis项目下的变量里,百思不得解
于是采用指定key 和iv值的方式:
travis encrypt-file ~/.ssh/id_rsa --add -k XX64位XXX --iv XX32位XX
然后手动在travis 平台项目下添加这两个环境变量
最终配置如下:
language: node_js
node_js:
- 8.9.4
cache:
directories:
- node_modules
before_install:
- openssl aes-256-cbc -K $encrypted_25e713513946_key -iv $encrypted_25e713513946_iv
-in .travis/id_rsa.enc -out ~/.ssh/id_rsa -d
- chmod 600 ~/.ssh/id_rsa
addons:
ssh_known_hosts: "$IP"
branches:
only:
- master
install:
- npm install
before_script:
script:
- npm run build
after_script:
- pwd
- scp -o StrictHostKeyChecking=no -r dist/ root@$IP:/opt/nginx/
平台最终实现自动部署:
github:https://github.com/libp/littleweb
====================
11.16补充,终于找到key和iV没有自动进入travis的原因了。
travis有两个地址:
https://www.travis-ci.org/
https://travis-ci.com/
前一个面向公有仓库,后一个面向私有仓库。
执行travis encrypt-file ~/.ssh/id_rsa --add
只会将key和iv添加到公有仓库里。我在私有仓库里当然找不到!!
后面果断把私有仓库干掉,取消在github里的授权就OK了
只需要保留https://www.travis-ci.org/
这个地址的CI build
即可