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

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

是什么

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

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

    125 引用 • 588 回帖
  • 研究
    12 引用 • 34 回帖
  • 教程
    143 引用 • 602 回帖 • 8 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...