/Travis-CI-VPS-CD

使用 Github, Travis CI 和自建 VPS 服务器构建 CI/CD 流程

Primary LanguageGoMIT LicenseMIT

Travis-CI-VPS-CDBuild Status

说明

本人之前就借助免费的 Github 和 Travis CI 实现 CI 的功能,但是一直没有关注 CD 部分, 毕竟觉得个人的项目不需要这样的要求,但是最近想着把这部分功能实现,其实也是可以省下不少时间。

思路

Github---->Travis-ci---->VPS
前边部分官方已经提供了完好的解决方案,我们只需要把第二部分配置通过即可。其实第二部分的主要思路就是让 Travis-ci 使用ssl登录到我们的 VPS 中部署好服务。
当然这面临到一个问题,Travis-ci 怎么来访问 VPS, 就是借助 ssl 登录。但是这会引申到另一个问题,怎么 解决ssl登录秘钥的问题。本例中,使用到了travis的一个工具。

$ brew install travis 
$ travis login --auto 
$ travis encrypt-file ~/.ssh/org.travis-ci --add 

通过上述指令安装了 travis,并且登录到 travis-ci账户中,然后使用encrypt-file工具加密了之前配置好秘钥。

关于org.travis-ci是登录vps的秘钥,这部分大家可以网上查找相关于ssh登录的部分

参照本例的 .travis.yaml 文件:

before_install:
  - openssl aes-256-cbc -K $encrypted_c35b3785930d_key -iv $encrypted_c35b3785930d_iv
        -in org.travis-ci.enc -out ~/.ssh/org.travis-ci -d
  - chmod 600 ~/.ssh/org.travis-ci
  - echo -e "Host $DEPLOY_ADDRESS\n\tHostName $DEPLOY_ADDRESS\n\t
        StrictHostKeyChecking no\n\tIdentityFile ~/.ssh/org.travis-ci" >> ~/.ssh/config

这部分的功能其实就是解密之前加密的 org.travis-ci 文件,放置到 .ssh 目录下, 并且设置文件属性,然后配置 .ssh/config 文件。如果配置过ssl登录的人一看就应该明白,只不过现在使用了脚本的形式。

看到这里大家应该也意识到了 org.travis-ci.enc 文件需要上传到 github 中,但是 org.travis-ci 文件是不需要的, 这个文件是访问vps的秘钥文件,不能公开。

再看:

after_success:
  - scp -o stricthostkeychecking=no -r travis-ci-vps-cd
      $DEPLOY_USERNAME@$DEPLOY_ADDRESS:~/travis-ci-vps-cd/
  - ssh -tt $DEPLOY_USERNAME@$DEPLOY_ADDRESS < run.sh

after_success 处其实就是 ssl 登录到服务器中部署服务了。