上篇回顾
在上篇中,我们完成了利用Travis CI 完成了源码的自动化构建,并建立了部署分支: DEPLOY-PROD。接下来我们需要做的是远程服务器拉取代码并npm run start了。下面是一个实例图,上一节中我们已经完成了1.2.3步:

Travis CI 连接remote
1. ruby安装(Mac忽略):
为了使用Travis的文件加密功能,所以需要Ruby环境,但由于笔者并不是Mac,所以需要先安装ruby环境,具体安装略。
2. 安装Travis
gem install travis
3. travis登录
travis login --com
输入你的GitHub账号和密码
4. 生成ssh私钥
ssh-keygen -t rsa
存放在到默认文件夹即可,一般为C盘的user/xxx/.ssh
5. 加密私钥
回到项目的根目录,进行加密travis encrypt-file 你的私钥路径/.ssh/id_rsa --add --com。这时候你会发现,项目的根目录多了一个id_rsa.enc文件,并且.travis.yml多了一段代码before_install,并且与Travis CI 中相对应。
6. 完成了Travis CI 连接remote
再做一些修改:

remote 连接 GitHub
1. 环境安装(已有忽略)
由于笔者是全新的ubuntu服务器,所以先安装node环境,再安装pm2。推荐两款远程工具:xshell和WinSCP。
2. 生成密钥
在remote环境中ssh-keygen -t rsa生成公钥,利用cat .ssh/id_rsa.pub查看生成的密钥,复制下来。
3. 在GitHub里面填写复制的公钥。
在填写地址里面新增New SSH key。
4.remote 拉取 GitHub代码
在远程通过SSH的方式拉取代码:git clone $YOUR_SSH。
5.完成Remote的pull功能
可以看见远程有刚刚拉取的代码。

利用pm2串联起来
1.编写pm2的配置文件
在项目根目录新建ecosystem.config.js:
module.exports = {
apps: [
{
name: 'efoxlang',
script: 'yarn',
args: 'run start'
}
],
deploy: {
// "prod" is the environment name
prod: {
user: 'root',
key: '~/.ssh/id_rsa',
host: ['你的远程服务器地址'],
ssh_options: 'StrictHostKeyChecking=no',
// 拉取部署分支
ref: 'origin/DEPLOY-PROD',
// 仓库地址
repo: '你的远程仓库的SSH路径',
// 部署 remote 路径
path: '/你想要的部署路径,
'post-deploy': '. /root/.nvm/nvm.sh && yarn install && pm2 reload ecosystem.config.js'
},
}
}
初始化pm2
执行pm2 deploy production setup完成对pm2的初始化。之后执行pm2 deploy production update对新代码的更新。
为了自动化更新,可以在.travis.yml添加以下代码
after_deploy:
- pm2 deploy pm2.config.js prod update --force
查看结果
使用pm2 ls可以看见当前运行的项目了,在本地电脑可以使用域名访问了。
总结
从免费申请使用华为云,到第一个demo跑起来,成就感满满。后续继续完善一下,今天先到这里了。
代码仓库:GitHub