利用CI自动部署hexo博客

递归蝉翼
• 阅读 5455

每次写完一篇文章,都会手动执行hexo ghexo d去生成静态网页后在进行部署到Github page上去

而且为了保存文章的源码md文件还需要push到对应的仓库分支上,比较麻烦

都说懒惰推动着新的东西出现,那么能不能只保存原md文件push上去,其他的操作都让它自动去完成呢 ?

答案肯定是可以的,下面就来讲解一下CI具体的实现方法(这里只讲解如何把travis接入):


首先来介绍利用的工具:

  • Github Page:是github网站提供的静态网站服务,集体详细的介绍可以查看官方文档
  • travis: 是在线托管的CI服务,用Travis来进行持续集成,不需要自己搭服务器官方网站

接入Travis过程:

  1. 登录Travis网站用github授权登录
  2. 登录后在个人主页选择你需要CI的仓库
  3. 点击你选择的hexo博客的仓库进行配置

点击左上角红色框的More options按钮,选择Settings打开配置页面进行配置
利用CI自动部署hexo博客

第一个配置项:Build only if .travis.yml is present代表的意思是:只有在.travis.yml文件中配置的分支改变了才构建
第二个配置项:Build pushes代表当推送完这个分支后开始构建

到了这一步,我们已经开启了要构建的仓库,但是还有个问题就是,构建完后,我们怎么将生成的文件推送到github上呢?
我们只要想github一push,他就自动构建并push静态文件到githubpages,那么下面要解决的就是Travis CI怎么访问github

  1. Travis CI配置GithubAccess Token 用来访问Github

首先我们进入github的设置页面,然后点击Developer settings选项进入开发者设置,然后字点击Personal access tokens
利用CI自动部署hexo博客
点击右上角的Generate new token会让你输入密码确定,然后进入一个生成token的页面
利用CI自动部署hexo博客

输入token的描述,选择这个token权限,然后然后点击生成就可以了,然后复制保存下来,下次在进来就看不到了
利用CI自动部署hexo博客

左后还在 Travis 仓库配置界面setting里面 环境变量Environment Variables进行配置token方便在构建文件中引用:如下图
利用CI自动部署hexo博客

  1. 在博客的源码文件分支下添加.travis,yml配置文件,决定怎么执行构建任务,下面是.travis,yml的内容:
language: node_js
node_js: stable

install:
  - npm install

script:
  - hexo g

after_script:
  - cd ./public
  - git init 
  - git config user.name "jjeejj"
  - git config user.email "wenjunjiang1993@163.com"
  - git add .
  - git commit -m "Update docs"
  - git push --force --quiet "https://${GH_TOKEN}@${GH_REF}" master:master

branches:
  only:
    - hexo
env:
 global:
   - GH_REF: github.com/jjeejj/jjeejj.github.io.git

这其中的config改成对应你自己的

到此为止,就已经配置完成了,下面就让我们推送一篇文章测试一下的
现在我本地源码目录有新加的一篇文章:
利用CI自动部署hexo博客

然后进行push提交(此刻应该等待编译成功了)

然后稍等一会就可以在博客网站上看到刚才的那篇文章了
利用CI自动部署hexo博客

你也可以在Travis的博客仓库的控制台看到编译的日志
利用CI自动部署hexo博客

这里备注一下,由于平常我们写文章都是使用heox new draft新建的草稿文件,是放在_drafts文件夹中的,写完之后需要手动hexo publish一下,移到_psots文件夹中的,使用构建时候,还是需要这样做的

利用CI自动部署hexo博客

扫描关注,查看更多文章,提高编程能力

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
美凌格栋栋酱 美凌格栋栋酱
6个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Karen110 Karen110
4年前
两行Python代码将JSON文本转换成标准字典
在获取网页报文时,经常遇到JSON格式的文本。如:\\\html"code":200,"message":"success","data":   "count":47,"pageCount":3,"floorCount":27,"list":     \       "info":           "
Wesley13 Wesley13
3年前
VSCode配置FiraCode和更纱黑体字体
!(https://oscimg.oschina.net/oscnet/c7bb62d935ceb01d3b7fe176322e84ae00d.png)Fira Code下载到FiraCode字体的GitHub(https://www.oschina.net/action/GoToLink?urlhttps%
Stella981 Stella981
3年前
Hexo建站过程总结
Hexo是一个基于Node.js快速、简洁且高效的博客框架,可以将Markdown文件快速的生成静态网页,托管在GitHubPages上。由于原来博客的主机费用问题,我没有办法再在那个主机上面再进行博客的更新,实在是太贵了,对于我来说。所以就在GitHub上面开始建站,使用Hexo来搭载我的博客。Hexo和WordPress有很大的不
Stella981 Stella981
3年前
Hexo的版本控制与持续集成
想必很多人会把Hexo生成出来的静态网站放到GitHubPages来进行托管。一般发布Hexo博客的流程是,首先在本地搭建Hexo的环境,编写新文章,然后利用hexodeploy来发布到Git。那么对于本地的Hexo的原始文件怎么管理呢?如果换电脑了怎么办?如果没有对原始文件进行备份,突然有一天你的本地环境挂了导致源文件丢失,那不就呵呵了。也许你会想
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
PHP 爬虫体验(二)
自从使用hexo在githubpage更新博客之后,我每次在cnblog上发布文章,需要手动再更新hexo。hexo使用markdown格式来写文章,手动更新需要对文章本身内容进行转化,做成md文件再进行上传,后来就想到,本身爬虫就可以对页面中的各种元素进行提取,同时markdown使用的是标记语法,那么使用爬虫分析文章元素,提取主要内容并且根据模板自动生
Stella981 Stella981
3年前
PowerDesigner列名、注释内容互换
在用PowerDesigner时,常常在NAME或Comment中写中文在Code中写英文,Name只会显示给我们看,Code会使用在代码中,但Comment中的文字会保存到数据库TABLE的Description中,有时候我们写好了Name再写一次Comment很麻烦,以下两段代码就可以解决这个问题。在PowerDesigner中PowerDesig