前面已经使用travis部署自己的gitpage了,有些方法可以扩展到部署项目。这样就能够在我提交代码的时候,travis就可以就自动更新服务器的代码,并自动构建。
通过git clone命令把这个项目克隆到本地,然后在项目根目录下添加一个**.travis.yml**文件。这个文件是travis-ci持续集成的关键,它定义了你所有持续集成的操作。为了简单起见,我们仅仅使用它进行自动化部署:
1 | language: node_js |
配置ssh登录,前面已经写过。这样就可以登录远程服务器并完成,但是暴露密码总是不可以的…
travis 免密登录
- 在本地通过gem安装travis命令行工具(macOS默认支持ruby):使用travis登录:
1
gem install travis
然后输入github的账号密码即可。1
travis login
加密本地ssh-key并自动写入.travis.yml:
** –add参数表示自动添加脚本到.travis.yml文件中**
1 | travis encrypt-file ~/.ssh/id_rsa --add |
这时会看到.travis.yml多了一段before_install的内容:
1 | before_install: |
然后把最后一行的“\”转义符删掉,并换行顶格添加如下两条内容:
1 | - chmod 600 ~/.ssh/id_rsa |
切记把xxx.xxx.xxx.xxx换成你服务器的IP。
最后把添加.travis.yml的项目push到github即可。
重新回到travis-ci.org的页面,进入项目,就能够看到持续集成的效果了。
问题
使用travis登录远程服务器已经达成,拉去代码也可以,但是这次遇到一个问题:zsh:1: commad not found:npm,明明手动登录可以使用npm的,travis就不可以了呢?
排查了下发现原因是因为node是使用nvm管理的,npm不在**/usr/bin**下导致的,那一个解决方案就通过包管理器方式安装 Nodejs。