本文档旨在使用Jenkins来持续集成并一键部署我们使用hexo博客系统建造的个人博客。
所以开始之前,我假设你已经具有了一个本地创建完成,且deploy到GitHub上的hexo博客项目。
注意,是deploy后的静态资源,因为我们最终挂载到Nginx下的也是hexo generate后的静态资源。
1.安装jenkins
环境:CentOS 7.0
安装方式:
1 | $ yum install yum-fastestmirror -y #安装自动选择最快源的插件 |
启动方式:
$ sudo service jenkins start
访问方式:
浏览器输入http://your server ip:8080/
更改配置(如端口)方式:
1 | $ vim /etc/sysconfig/jenkins |
2.jenkins基础配置
Unlock
经过上面的配置,你可以访问你的Jenkins了,在浏览器中输入:http://your server ip:8080/
,效果如下:
按照提示我们执行cat /var/lib/jenkins/secrets/initialAdminPassword
得到Administrator password
,输入后点击Continue,如下:
选择install suggested plugins
,等待安装完毕,如果有安装失败的可以跳过,之后可以手动根据需求安装。
设置初始账户和密码
设置完成后进入界面:
3.github配置
sercret text
注:此处需要一个对项目有写权限的账户
进入github –> setting –> Personal Access Token –> Generate new token
自己先保存此token
,如果丢失,之后再也无法找到这个token
。
GitHub webhooks 设置
进入GitHub上指定的项目 –> setting –> WebHooks&Services –> add webhook –> 输入刚刚部署jenkins的服务器的IP
4.jenkins的github配置
安装GitHub Plugin
系统管理–>插件管理–>可选插件
直接安装Github Plugin, jenkins会自动帮你解决其他插件的依赖,直接安装该插件Jenkins会自动帮你安装plain-credentials 、Git 、 credentials 、 github-api
配置GitHub Plugin
系统管理 –> 系统设置 –> GitHub –> Add GitHub Sever
如下图所示
API URL 输入 https://api.github.com
,Credentials点击Add添加,Kind选择Secret Text,具体如下图所示。
设置完成后,点击TestConnection
,提示Credentials
verified for user UUserName, rate limit: xxx
,则表明有效。
5.创建一个freestyle任务
- General 设置
填写GitHub project URL, 也就是你的项目主页
eg. https://github.com/your_name/your_repo_name
- 配置源码管理
- 填写项目的git地址, eg.
https://github.com/your_name/your_repo_name.git
- 添加github用户和密码
- 选择githubweb源码库浏览器,并填上你的项目URL,这样每次构建都会生成对应的changes,可直接链到github上看变更详情
- 构建触发器,构建环境
6.实现自动化部署
自动化部署可能是我们最需要的功能了,公司就一台服务器,我们可以使用人工部署的方式,但是如果公司有100台服务器呢,人工部署就有些吃力了,而且一旦线上出了问题,回滚也很麻烦。所以这一节实现一下自动部署的功能。
- 首先,先在Jenkins上装一个插件Publish Over SSH,我们将通过这个工具实现服务器部署功能。
- 在要部署代码的服务器上创建一个文件夹用于接收Jenkins传过来的代码,由于我的个人博客是直接挂载在Nginx下的,所以我在我的Nginx路径下新建了一个
html_temp
目录。 - Jenkins想要往服务器上部署代码必须登录服务器才可以,这里有两种登录验证方式,一种是ssh验证,一种是密码验证,就像你自己登录你的服务器,你可以使用ssh免密登录,也可以每次输密码登录,
系统管理-系统设置
里找到Publish over SSH这一项。
重点参数说明:
1 | Passphrase:密码(key的密码,没设置就是空) |
效果图:
配置完成后,点击Test Configuration测试一下是否可以连接上,如果成功会返回success,失败会返回报错信息,根据报错信息改正即可。
- 接下来进入我们创建的任务,点击构建,增加一些脚本代码,意思是将我hexo博客生成的静态资源打包成一个文件,因为我们要传输。
- 点击构建后操作,增加构建后操作步骤,选择send build artificial over SSH, 参数说明:
1 | Name:选择一个你配好的ssh服务器 |
- 现在在我们本地的
hexo
博客系统里面随便修改点东西,然后执行以下:
1 | hexo g |
向GitHub repo提交一次push
操作后,就会自动触发自动构建、远程部署的钩子,我们的博客系统就会自动集成新的内容了。