Travis-ci 远程构建 + 自动化部署

本贴最后更新于 596 天前,其中的信息可能已经水流花落

是什么

  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'
  • 服务器

    服务器,也称伺服器,是提供计算服务的设备。由于服务器需要响应服务请求,并进行处理,因此一般来说服务器应具备承担服务并且保障服务的能力。

    110 引用 • 553 回帖
  • 研究
    11 引用 • 34 回帖
  • 教程
    110 引用 • 404 回帖 • 5 关注
4 回帖
请输入回帖内容...