是什么

  1. 远程测试(构建)
    1. 手动执行用户提交的测试脚本
    2. 可根据语言配置环境与参数
    3. 基于流的构建
  2. 自动化部署
    1. 测试完成后自动部署
    2. 部署结果可通过邮件告知用户

流程

  1. 登录travis-ci.org
  2. 勾选需要ci的github项目
  3. 本地git add . && git commit -m ‘xxx’ && git push
  4. travis接收到push,进行远程ci
  5. test完毕,执行部署脚本
  6. 部署完成

远程部署需要准备的

  1. 本机安装travis控制台gem install travis
  2. 远程机开启ssh免密登录,本地ssh私钥文件假设为~/.ssh/id_rsa
  3. 登录travis: travis login
  4. 目录切换到项目,加密私钥travis encrypt-file ~/.ssh/id_rsa --add
  5. yml文件内,after success加入ssh连接与脚本执行语句

  1. 信任ip
    1. 远程服务端第一次ssh连接的时候需要信任ip,这边使用StrictHostKeyChecking=no参数来解决
  2. known_hosts
    1. 不知道和1.是不是同一个问题,在yml中添加节点 addons: ssh_known_hosts: [ip]解决
  3. 执行脚本环境变量
    1. 远程部署时执行npm install报找不到npm的错误,是因为远程连接之后没有加载环境变量导致的。
    2. 解决方式:在部署脚本第一行写: source /etc/profile # 环境变量路径
  4. Npm permission deny
    1. 改用cnpm
  5. 路径分隔符

    修改为~/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'

****

Thanks for Reading

Jiahao.Zhang
NetEase Inc. Hangzhou 
        Front-End Developer