使用Travis CI自动部署Hexo到GitHub
原文链接(转载请注明出处):使用Travis CI自动部署Hexo到GitHub
前言
使用 hexo + gitPages
搭建个人博客的人都知道,每当要发表一篇博文,第一步得手动使用 hexo g
命令生成静态网页,然后还得通过 hexo d
命令将静态文件推送到GitHub远程仓库,不说麻烦不麻烦,更重要的是有时候环境换了,没有搭建 hexo 环境,想发篇博客的时候就没有可能了。而现在通过 Travis CI 就能自动构建自己的博客。我们只需将写好的 Markdown
格式的博文push
到 hexo源文件 分支即可。
Travis CI 介绍
Travis CI 是目前新兴的开源持续集成构建项目,它与 jenkins,GO的很明显的特别在于采用 yaml 格式,简洁清新独树一帜。目前大多数的 github 项目都已经移入到 Travis CI 的构建队列中,据说 Travis CI 每天运行超过 4000 次完整构建。
hexo 介绍
Hexo 是一个快速、简洁且高效的博客框架。Hexo 使用 Markdown(或其他渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成静态网页。
使用 Travis 自动构建
我的博客自动部署思路是,将 hexo
源码 push
到博客 项目的另外一个分支,
既一个分支放源码,一个分支放静态文件,使用 Travis CI
自动部署 hexo 源码的分支,构建完成后自动推送到 静态文件的分支上,而这一切都在一个仓库上进行操作。
注意:如果使用的是GitPage
的个人站点来搭建博客的 ,则博客静态文件在 master
分支上;如果使用的是 gitPages
的项目站点来搭建博客,则博客的静态文件在 gh-pages
分支上。
在GitHub 上生成 Access Token
如果想要 让travis CI
构建完成之后自动 push 到 master 分支,则travis需要有对这个仓库进行操作的权限,此时我们就需要为Travis CI 配置Access Token(访问令牌)。
在GitHub上生成Access Token 的步骤是,点击头像进入设置(Settings),r然后点击左边菜单栏最下面的Developer settings
选项,进入后点击左边的 Personal access tokens
选项,进入后点击右上角的Generate new token
按钮
点击后就会来到下面的界面,先给 Token 起一个名字,然后为它设置一些权限,其中红框内的权限是必须的,其他可以随意添加。
点击下面的 create token
按钮,就会生成一个已经赋予好权限的 token 值,接下来我们Travis CI 网站的配置中。
配置 Travis CI
如果之前从未使用 Travis CI 来构建项目,则我们先需要使用GitHub账号来登录网站,登录进来后,会进到如下图界面,如果底下 没有把 GitHub 仓库中的项目加载进来,可以手动点击右上角的 Sync account
按钮,待到同步完成后将要自动构建的项目开启。
开启后点击设置图标就可以进行一系列的设置,如下图所示,先开启 General
里的两项选项:
Build only if .travis.yml is present
:只有在.travis.yml
文件中配置的分支改变了才构建Build branch updates
:当分支更新后开始构建
然后在 Environment Variables
一栏里将在 GitHub 下获取的的 Access Token
值添加进来
添加配置文件到Hexo源码分支下
上面提到的 .travis.yml
配置文件需要添加到hexo 源码的根目录下,因为Travis CI 在自动构建时需要获取这些配置信息,以此来完成构建任务;这些配置信息主要包括源码分支,静态文件推送分支,仓库地址等信息。
其中主要内容如下:
language: node_js
node_js: stable
# S: Build Lifecycle
install:
- npm install
#before_script:
# - npm install -g gulp
script:
- hexo g
after_script:
- cd ./public
- git init
- git config user.name "dmego" --{GitHub账户名称}
- git config user.email "zengkai12138@outlook.com" --{Github账户邮箱}
- git add .
- git commit -m "Update docs"
- git push --force --quiet "https://${GH_TOKEN}@${GH_REF}" master:master
# E: Build LifeCycle
branches:
only:
- hexo --{Hexo源码分支名称}
env:
global:
- GH_REF: github.com/dmego/dmego.github.io.git --{仓库地址}
配置到这一步就已经把所有配置全部完成,下面就是验证的过程
构建并自动部署结果
将某篇文章中的一个表格增加一行后将修改推送到hexo源码所在的hexo
分支
,然后等Travis CI 构建并自动部署成功后。
点击博文发现表格多了一行。
总结
这样做虽然能很好的实现自动部署的功能,但是有个问题也要注意,就是博客源码公开问题,如果对博客源码不介意的可以直接使用公开仓库,如果介意那就没有办法了,除非使用付费的私有仓库,或者把项目放在Coding
上去,因为上有提供免费的私有仓库。就我个人认为,既然是自己的博客,本来就是要给人看的,博客源码也谈不上存在什么隐私。
使用Travis CI自动部署Hexo到GitHub的更多相关文章
- 使用Travis CI自动部署Hexo博客
自从使用GitHub Pages和Hexo来发布博客之后,不得不说方便了许多,只需要几个简单的命令博客就发布了.但在不断的使用中发现每次的发布操作也挺耗时的. 我一般的操作是将平时整理好的md文件放到 ...
- 使用 Travis CI 自动部署 Hexo 站点至 GitHub Pages
Hexo 与 GitHub Pages 安装配置请参考:Hexo 与 GitHub Pages 本文源码与生成的静态文件在同一项目下,源码在 source 分支,静态文件在 master 分支 新增 ...
- 使用Travis CI自动部署博客到github pages和coding pages
每次换系统或换电脑之后重新部署博客总是很苦恼?想像jekyll那样,一次性部署完成后,以后本地不用安装环境直接 git push 就能生成博客?那推荐你应该使用使用 Travis CI了. 这篇文章我 ...
- 手把手教从零开始在GitHub上使用Hexo搭建博客教程(四)-使用Travis自动部署Hexo(2)
前言 前面一篇文章介绍了Travis自动部署Hexo的常规使用教程,也是个人比较推荐的方法. 前文最后也提到了在Windows系统中可能会有一些小问题,为了在Windows系统中也可以实现使用Trav ...
- 手把手教从零开始在GitHub上使用Hexo搭建博客教程(三)-使用Travis自动部署Hexo(1)
前言 前面两篇文章介绍了在github上使用hexo搭建博客的基本环境和hexo相关参数设置等. 基于目前,博客基本上是可以完美运行了. 但是,有一点是不太好,就是源码同步问题,如果在不同的电脑上写文 ...
- 用GitHub Actions自动部署Hexo
什么是 GitHub Actions ? GitHub Actions 是一个 CI/CD(持续集成/持续部署)工具,GitHub 于 2018 年 10 月推出,正式版于 2019 年 11 月正式 ...
- Gitlab CI 自动部署 asp.net core web api 到Docker容器
为什么要写这个? 在一个系统长大的过程中会经历不断重构升级来满足商业的需求,而一个严谨的商业系统需要高效.稳定.可扩展,有时候还不得不考虑成本的问题.我希望能找到比较完整的开源解决方案来解决持续集成. ...
- 部署hexo后github pages页面未更新或无法打开问题
title: 部署hexo后github pages页面未更新或无法打开问题 date: 2018-03-30 15:34:29 categories: methods tags: hexo gith ...
- 基于 Github Actions 自动部署 Hexo 博客
前言 前不久使用了 Hexo 搭建独立博客,我是部署在我的腾讯云轻量应用服务器上的,每次都需要 hexo deploy 然后打包.上传.解压和刷新 CDN,非常麻烦.我的服务器配置也不高 2C2G 无 ...
随机推荐
- angularjs-1.3代码学习-$parse
这次我们来看一下angular的Sandboxing Angular Expressions.关于内置方法的,核心有两块:Lexer和Parser.其中大家对$parse可能更了解一点.好了不多废话, ...
- tomcat配置单项HTTPS协议
1.进入到jdk下的bin目录 1)进入cmd窗口,cd进入目录: 2)找到JDK安装bin目录,shift+右击打开命令窗口: 3)如果配置类环境变量,在任意cmd命令窗口都可以: 2.输入 ...
- 从web图片裁剪出发:了解H5中的canvas
本篇内容不针对canvas文档对每个api进行逐个的详解! 本篇内容不针对canvas文档对每个api进行逐个的详解! 本篇内容不针对canvas文档对每个api进行逐个的详解! 重说三,好了,现在进 ...
- mysql时间戳的获取
时间戳函数:current_timestamp() 在此位置添加时间戳函数. 然后整体的写法就是下图这样: 根据当前时间戳更新有没有打钩将决定你的时间是什么时间(一个是数据完成写入的时间,一个时间戳回 ...
- MySQL (三)-- 字段属性、索引、关系、范式、逆规范化
1 字段属性 主键.唯一键和自增长. 1.1 主键 主键:primary key,一张表中只能有一个字段可以使用对应的键,用来唯一的约束该字段里面的数据,不能重复. 一张表只能有最多一个主键. 1.1 ...
- 第一周作业.四则运算生成器(基于python)
题目 从<构建之法>第一章的 "程序" 例子出发,像阿超那样,花二十分钟写一个能自动生成小学四则运算题目的命令行 "软件",满足以下需求: 除了整数 ...
- 团队作业八—第二次团队冲刺(Beta版本) 第 1 天
一.每个人的工作 (1) 昨天已完成的工作 由于是才刚开始冲刺,所以没有昨天的工作 (2) 今天计划完成的工作: 对界面的优化和一些细节的完善 (3) 工作中遇到的困难: 工作中出现了意见不一的情况 ...
- [BT5]信息收集1-2 Dnsmap
0.工具介绍 dnsmap is mainly meant to be used by pentesters during the information gathering/enumeration ...
- 201521123039 《java程序设计》第十周学习总结
1. 本周学习总结 2. 书面作业 本次PTA作业题集异常.多线程 finally 题目4-2 1.1 截图你的提交结果(出现学号) 1.2 4-2中finally中捕获异常需要注意什么? 总结:需要 ...
- 201521123113《Java程序设计》第10周学习总结
1. 本周学习总结 2. 书面作业 本次PTA作业题集异常.多线程 Q1.finally 题目4-2 1.1 截图你的提交结果(出现学号) 1.2 4-2中finally中捕获异常需要注意什么? fi ...