因为项目部署在服务器, 每次改动一点都要上服务器重新pull
和启动服务, 特别麻烦, 所以用了travis
来进行自动部署
使用Travis CI 实现自动部署
Travis CI
是在软件开发领域中的一个在线的,分布式的持续集成服务,用来构建及测试在GitHub
托管的代码。Travis
只能在GitHub
项目上使用,只要项目有改动,Travis
就会为其提供一个运行环境,执行测试、构建甚至部署任务。
为项目开启Travis
进入Travis, 使用GItHub账号登录,点击右上角的头像,进入Profile。选择项目,打开开关即可。
基本配置
点击项目名和开关之间的齿轮可以进入设置页,在这里你可以进行相关的配置,不过大多数情况下保持默认即可。
编写部署脚本
当仓库发生改动时可以让 Travis
自动执行一些脚本来重新启动服务以使改动生效
先在项目根目录创建 script/deploy.sh
文件, 写好要执行的命令, 然后留着给后面待用, 下面是用在我的项目中的文件
1 | echo --------------------------------------------- |
可以把两个 eeooff
中的命令换为你要执行的ssh
命令对应的参数改为你实际的参数
编写.travis.yml
这个配置文件描述了Travis将如何工作, 可以参阅官方文档, 下面给出自己配置的实例
1 | language: python |
- language 代表执行命令的语言
- before_install 表示下面的命令会在
install
之前执行, 这里主要是解密ssh key文件 - install 表示安装依赖的命令, 这里只是部署, 不需要依赖, 所以设置为true
- script 执行脚本命令完成部署
加密你的ssh key
在 linux
环境下进行下面的操作
安装 travis
1 | 安装ruby |
登录 travis
1 | 登录Travis |
加密私钥文件
1 | 加密文件 |
加密完后,当前目录下会增加一个key.enc
文件,即key
加密后的文件。请注意,不要将key
上传到GitHub
, 取而代之的是key.enc
, 然后通过上面的 before_install
钩子会帮我们解密成真正的私钥文件来帮助我们登录自己的服务器进行操作(当然要记得替换成自己的环境变量)
至于私钥怎么生成和配置, 可以看一下这个
自动部署效果
给项目加个小图标
在 travis
点击小图标出来
然后在项目readme
添加上下面这样的语句就会显示出来了
1 | [![Build Status](https://travis-ci.org/code-flows-in-you/Server.svg?branch=master)](https://travis-ci.org/code-flows-in-you/Server) |