Travis CI 实践(2)

537 阅读2分钟

上篇回顾

在上篇中,我们完成了利用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。推荐两款远程工具:xshellWinSCP

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

文章学习参考:Github + Travis CI + PM2实现 Next.js 项目