使用travis-ci实现持续部署

前面已经使用travis部署自己的gitpage了,有些方法可以扩展到部署项目。这样就能够在我提交代码的时候,travis就可以就自动更新服务器的代码,并自动构建。
通过git clone命令把这个项目克隆到本地,然后在项目根目录下添加一个**.travis.yml**文件。这个文件是travis-ci持续集成的关键,它定义了你所有持续集成的操作。为了简单起见,我们仅仅使用它进行自动化部署:

1
2
3
4
5
language: node_js
node_js:
- "10"
after_success:
- ssh root@xxx.xxx.xxx.xxx -p yyy 'cd /home/www/project && git pull && npm run build'

配置ssh登录,前面已经写过。这样就可以登录远程服务器并完成,但是暴露密码总是不可以的…

travis 免密登录

  1. 在本地通过gem安装travis命令行工具(macOS默认支持ruby):
    1
    gem install travis
    使用travis登录:
    1
    travis login
    然后输入github的账号密码即可。
    加密本地ssh-key并自动写入.travis.yml:

** –add参数表示自动添加脚本到.travis.yml文件中**

1
travis encrypt-file ~/.ssh/id_rsa --add

这时会看到.travis.yml多了一段before_install的内容:

1
2
3
before_install:
- openssl aes-256-cbc -K $encrypted_e65149523857_key -iv $encrypted_e65149523857_iv
-in id_rsa.enc -out ~\/.ssh/id_rsa -d

然后把最后一行的“\”转义符删掉,并换行顶格添加如下两条内容:

1
2
- chmod 600 ~/.ssh/id_rsa
- echo -e "Host xxx.xxx.xxx.xxx\n\tStrictHostKeyChecking no\n" >> ~/.ssh/config

切记把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

分享到 评论