【Hexo搭建个人博客】(十一)使用Appveyor持续集成博客(备份Hexo博客源文件)

0. 引言

之前使用Hexo框架搭建了一个博客(Mculover666的个人博客),在Github和Coding双平台部署,但是在使用过程中带来了一些新的问题:

  • 问题1:Hexo自动部署到Github的只是public文件夹中的内容,其他重要的内容怎么办?比如辛辛苦苦配置的站点配置文件和主题配置文件;
  • 问题2:如果更换电脑怎么办?比如家里的电脑和实验室的电脑如何同步?
  • 问题3:如果哪天不幸硬盘坏了,咋整?

较为简单的一种办法是新建一个Github仓库,将所有需要备份的内容都上传上去,这样的备份操作简单粗暴有效,但是持续备份的时候就比较繁琐了,每次需要更新的时候,首先需要git push,然后进行hexo d,那么有没有什么方法可以让我们一键完成这些操作呢?

答案当然是有!可以使用持续集成服务来帮助我们~

使用了持续集成服务后,当有新的改变推到博客源仓库时,自动执行CI脚本,生成最新的静态网站发布。

1.什么是持续集成服务

持续集成服务(全名Continuous Integration,简称 CI),它其实是一个云端自动化构建和测试服务,它绑定 Github 上面的项目,只要有新的代码,就会自动抓取。然后,提供一个运行环境,执行测试,完成构建,还能部署到服务器。

那么,这样的一个云端自动构建和测试服务,为什么称为持续集成呢?

Github仓库中的代码只要有一点点变更,该服务就会自动运行构建和测试,反馈运行结果,确保符合预期以后,再将新代码"集成"到主干,所以该服务称为“持续”“集成”。

因为大多数用户都是在Windows下,所以在本文中我们使用持续集成服务工具appveyor——适用于Windows和Linux的持续集成解决方案。

2. 上传Hexo博客源码到新仓库

在Github上新建一个远程仓库:

然后初始化本地仓库,并且与远程仓库关联起来::

git init
git remote add origin https://github.com/Mculover666/Hexo-Blog-Source.git

我们不需要备份所有文件,创建一个.gitignore文件来说明忽略的文件和文件夹,通常需要备份的文件有:

  • source文件夹的所有内容
  • scaffolds文件夹的所有内容
  • 站点配置文件:_config.yml
  • themes文件夹的所有内容

综上,.gitignore文件的内容如下:

.deploy*/
node_modules/
public/
db.json
package.json
*.log

然后执行如下git命令开始推送:

git add .
git commit -m "hexo source"
git push origin master

3. 使用AppVeyor建立CI

访问AppVeyor登陆页面,使用GitHub账号登陆即可:

然后创建新的项目,添加Github仓库:

4.新建Access Token并加密

首先到Github生成Access Token,生成方法可以参考:Creating a personal access token for the command line

在GitHub生成好Access Token之后,还需要在AppVeyor加密页面把Access Token加密之后再替换Your GitHub Access Token

5. 添加自动化构建文件

然后在源文件中手动添加appveyor.yml文件,内容如下:

clone_depth: 5
environment:
access_token:
    secure: [Your GitHub Access Token]
install:
	- node --version
	- npm --version
	- npm install
	- npm install hexo-cli -g
build_script:
	- hexo generate
artifacts:
	- path: public
on_success:
	- git config --global credential.helper store
	- ps: Add-Content "$env:USERPROFILE\.git-credentials" "https://$($env:access_token):x-oauth-basic@github.com`n"
	- git config --global user.email "%GIT_USER_EMAIL%"
	- git config --global user.name "%GIT_USER_NAME%"
	- git clone --depth 5 -q --branch=%TARGET_BRANCH% %STATIC_SITE_REPO% %TEMP%\static-site
	- cd %TEMP%\static-site
	- del * /f /q
	- for /d %%p IN (*) do rmdir "%%p" /s /q
	- SETLOCAL EnableDelayedExpansion & robocopy "%APPVEYOR_BUILD_FOLDER%\public" "%TEMP%\static-site" /e & IF !ERRORLEVEL! EQU 1 (exit 0) ELSE (IF !ERRORLEVEL! EQU 3 (exit 0) ELSE (exit 1))
	- git add -A
	- if "%APPVEYOR_REPO_BRANCH%"=="master" if not defined APPVEYOR_PULL_REQUEST_NUMBER (git diff --quiet --exit-code --cached || git commit -m "Update Static Site" && git push origin %TARGET_BRANCH% && appveyor AddMessage "Static Site Updated")

这些文件内容中只需要替换Your GitHub Access Token为第4步中生成并加密的token即可。

6. 设置Appveyor环境变量

添加好appveyor.yml之后,再到Appveyor portal添加以下四个变量:

  • STATIC_SITE_REPO:博客站点Github仓库地址;
  • TARGET_BRANCH:博客站点仓库的branch(默认是master)
  • GIT_USER_EMAIL:GitHub账号的信息;
  • GIT_USER_NAME:GitHub账号的信息;

7. 完成

至此配置完成,以后只需要执行:git push将源代码上传到仓库后,Appveyor就会检测到变化,然后自动完成推送和部署。

执行推送

git push

观察自动化脚本运行情况

登录Appveyor网站,在current build中即可看到当前构建情况:


可以看到自动化脚本运行成功,再去看看博客站点是否更新:

Mculover666 CSDN认证博客专家 嵌入式软件开发 IoT全栈开发
CSDN博客专家,微信公众号mculover666,凭借与生俱来的热爱专注于嵌入式领域,在自己折腾的同时,以文字的方式分享所玩、所思、所想、所悟,作为一个技术人,我们一起前进~
已标记关键词 清除标记
相关推荐
<p> <strong><span style="font-size:20px;color:#FF0000;">本课程主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者</span></strong> </p> <p> <span style="color:#FF0000;"><strong><span style="font-size:18px;">1. 包含:<span style="color:#FFFF00;background-color:#FF0000;">项目源码、</span><span style="color:#FFFF00;background-color:#FF0000;">项目文档、数据库脚本、软件工具</span>等所有资料</span></strong></span> </p> <p> <span style="color:#FF0000;"><strong><span style="font-size:18px;">2. 手把手的带你从零开始部署运行本套系统</span></strong></span> </p> <p> <span style="color:#FF0000;"><strong><span style="font-size:18px;">3. 该项目附带的源码资料可作为毕设使用</span></strong></span> </p> <p> <span style="color:#FF0000;"><strong><span style="font-size:18px;">4. 提供技术答疑和远程协助指导</span></strong></span><strong><span style="font-size:18px;"></span></strong> </p> <p> <br /> </p> <p> <span style="font-size:18px;"><strong>项目运行截图:</strong></span> </p> <p> <strong><span style="font-size:18px;">1)系统登陆界面</span></strong> </p> <p> <strong><span style="font-size:18px;"><img src="https://img-bss.csdn.net/202002241015433522.png" alt="" /><br /> </span></strong> </p> <p> <strong><span style="font-size:18px;"><strong><span style="font-size:18px;">2)学生模块</span></strong></span></strong> </p> <p> <strong><span style="font-size:18px;"><img src="https://img-bss.csdn.net/202002241015575966.png" alt="" /></span></strong> </p> <p> <strong><span style="font-size:18px;"><strong><span style="font-size:18px;">3)教师模块</span></strong></span></strong> </p> <p> <strong><span style="font-size:18px;"><img src="https://img-bss.csdn.net/202002241016127898.png" alt="" /></span></strong> </p> <p> <strong><span style="font-size:18px;"><strong><span style="font-size:18px;">4)系统管理员</span></strong></span></strong> </p> <p> <strong><span style="font-size:18px;"><img src="https://img-bss.csdn.net/202002241016281177.png" alt="" /></span></strong> </p> <p> <strong><span style="font-size:18px;"><img src="https://img-bss.csdn.net/202002241016369884.png" alt="" /></span></strong> </p> <p> <strong><span style="font-size:18px;"><br /> </span></strong> </p> <p> <strong><span style="font-size:18px;"><strong><span style="font-size:18px;">更多Java毕设项目请关注我的毕设系列课程 <a href="https://edu.csdn.net/lecturer/2104">https://edu.csdn.net/lecturer/2104</a></span></strong></span></strong> </p> <p> <strong><span style="font-size:18px;"><br /> </span></strong> </p>
©️2020 CSDN 皮肤主题: 成长之路 设计师:Amelia_0503 返回首页