是什么
- 远程测试(构建)
- 手动执行用户提交的测试脚本
- 可根据语言配置环境与参数
- 基于流的构建
- 自动化部署
- 测试完成后自动部署
- 部署结果可通过邮件告知用户
流程
- 登录travis-ci.org
- 勾选需要ci的github项目
- 本地git add . && git commit -m ‘xxx’ && git push
- travis接收到push,进行远程ci
- test完毕,执行部署脚本
- 部署完成
远程部署需要准备的
- 本机安装travis控制台
gem install travis
- 远程机开启ssh免密登录,本地ssh私钥文件假设为
~/.ssh/id_rsa
- 登录travis:
travis login
- 目录切换到项目,加密私钥
travis encrypt-file ~/.ssh/id_rsa --add
- yml文件内,
after success
加入ssh连接与脚本执行语句
坑
- 信任ip
- 远程服务端第一次ssh连接的时候需要信任ip,这边使用
StrictHostKeyChecking=no
参数来解决
- known_hosts
- 不知道和1.是不是同一个问题,在yml中添加节点 addons: ssh_known_hosts: [ip]解决
- 执行脚本环境变量
- 远程部署时执行
npm install
报找不到npm的错误,是因为远程连接之后没有加载环境变量导致的。
- 解决方式:在部署脚本第一行写:
source /etc/profile # 环境变量路径
- Npm permission deny
- 改用cnpm
- 路径分隔符
修改为~/ssh/id_rsa -d
yml文件demo
language: node_js
node_js: 8.5
sudo: required
addons:
ssh_known_hosts: 111.111.111.111
cache:
directories:
- node_modules
before_install:
- openssl xxxxxxxxxxx
-in id_rsa.enc -out ~/.ssh/id_rsa -d
- chmod 600 ~/.ssh/id_rsa
install:
- npm install
after_success:
- ssh root@111.111.111.111 StrictHostKeyChecking=no 'cd /var/www/static/travis/ && git pull && sh ./deploy.sh'