利用Travis IC实现Hexo博客自动化部署
1.Hexo博客的利与弊
Hexo中文
我就默认为看到这篇文章的人都比较了解Hexo博客,也都能够成功手动部署吧。所以第一部分推荐两篇文章一笔带过,让我们快速进入本文的重点内容。实在不知道也不要方先看一看下面推荐的这两篇文章。
手把手教你使用Hexo Github Pages搭建个人独立博客——令狐葱
Hexo github 打造个人博客——zdy0_2004
还有一个专栏:Hexo / 总共13篇——水寒
感谢以上文章原创作者的分享,推荐纯属自来水。看完这两篇文章后有没有觉得自己手里的Hexo博客非常神奇、非常好用了呢?其实我想说,这个时候的Hexo只是一个残废好吗?你想一想,玩这个博客系统的你一定是热爱技术的折腾客,比如小明有8台电脑,他要在8台电脑上都安装环境,而且部署还真是个磨人的小妖精,很可能会出现奇奇怪怪的问题。比如在刚接触Hexo不久的时候我干过这样一件纯事,配置文件_conffig.yml
中有这样一段代码:
language: cn
timezone: Asia/Shanghai
我就自作多情地把时区改成Beijing
了,之后就出现了无法部署的问题。好久以后一个机会看到别人的文章才明白这个时区是改不得的,醉的是,出错以后新手真的很难知道错误原因。所以如果不能跨终端写作、自动部署,Hexo的博客功能算什么呢?算残废,没错!
针对以上问题,我们今天就来交流一下利用Travis IC实现Hexo博客自动化部署,这样干的好处就是终于可以实现多终端发布博客文章而不用换一次电脑装一次环境了。
2.Travis IC解决问题
这里我们就暂时不介绍Travis IC了,感兴趣可以到文章后面了解一下,我们直接用它来解决问题。
2.1备份
Hexo博客源文件和Github Pages 仓库文件(生成的网站静态页文件)。若你更换了电脑,首先要把源文件拷贝到新电脑里,然后把GitHub Page的仓库clone到本地。最终本地要形成这样两个文件夹
2.2备份上传
将备份的文件上传到GitHub。由于Github Pages 仓库使我们刚刚拷贝下来的,所以不用管它,重点是源文件。这个时候你就用两种选择:第一种是常见的做法:在Github Pages 仓库直接新建分支,将源文件上传到分支当中。第二种是本文要介绍到的方法:直接新建仓库,将源文件上传到新仓库当中。其实这两种方法操作上可以说几乎完全一样,区别是方法二可以新建私有仓库,别人是看不到你的源文件的。
先不要着急作出选择,选择方法二你要清楚,Travis CI 的网站有两个,travis-ci.org 专门针对开源项目,Github 上所有的公开仓库都能够免费使用;travis-ci.com 针对私有及商业项目,新用户前 100 次构建是免费的,后面就要收费了。
也就是说,如果你不是GitHub Pro,那么还是选择第一种方法或者第二种方法设置公开仓库,且要在travis-ci.org中操作。
2.3登录 Travis CI 网站、
访问travis-ci.org 或者 travis-ci.com“Sign up with Github”使用自己的 Github 帐号登录。接下来到github就可以 到Applications 中找到 Travis CI 。点击congigure,给它我们备份好源文件仓库的访问权限。
2.4Travis CI基本配置
为了能够实现代码推送到 Github,需要给 Travis CI Github 的 Persional access tokens,在 settings- Developer settings 可以生成一个。给repo权限即可注意:生成的 token 只会显示一次,所以一定要及时保存下来,否则就只能删除重新创建了。
然后进入 Travis 中的项目设置界面,可以给具体的代码库进行设置,比如增加环境变量:在 Travis CI 中可以通过设置环境变量来传递一些不便于写在配置文件中的值(密码、密钥之类的),在这里我们设置 GH_TOKGH 环境变量分别用来传递 GitHub Personal Access Token 。注意:如果你在这里设置的环境变量名不是这两个,下文的.travis.yml配置的时候要与你的变量名对应。
最后还在 Travis 仓库配置界面more option--ssetting里面 环境变量Environment Variables进行配置token方便在构建文件中引用,NAME命名为GH_TOKGH,如下图
2.5配置.travis.yml
在博客的源码文件分支下添加.travis,yml配置文件,决定怎么执行构建任务。下面是.travis,yml的内容:
language: node_js
node_js: stablecache:apt: truedirectories:- node_modulesnotifications:email:recipients:- xxx@gmail.com #你的邮箱地址on_success: changeon_failure: always# turn off the clone of submodules for change the SSH to HTTPS in .gitmodules to avoid the error
git:submodules: falsebefore_install:- export TZ='Asia/Shanghai'- npm install hexo-cli -ginstall:- npm installscript:- hexo clean- hexo gafter_script:- cd ./public- git init- git config user.name "xxx"- git config user.email "xxx@gmail.com"- git add .- git commit -m "Update blog content by Travis CI"- git push --force --quiet "https://${GH_TOKEN}@${GH_REF}" master:masterbranches:only:- masterenv:global:# Github Pages- GH_REF: github.com/xxxr/xxx.github.io.git# Coding Pages- CD_REF: git.coding.net/xxxr/xxx.git
代码中另一个环境变量名GH_REF为 Github Pages 仓库地址`env`中有赋值。注意:xxx是你的GitHub用户名,xxx@gmail.com替换成你在GitHub的注册邮箱
2.5测试
网上流传着一种很常见的.travis.yml配置代码,你可以轻松搜索到,很多人在用,但在我这里却行不通。通过push本地代码到GitHub等30多秒看Travis CI的反应,这个过程如果总是报错的话……那是真的爽啊!
百折千回,慢慢尝试,也参考了不少大佬的代码最终在用上面的给出的代码成功18次!妥妥的18次,如果你也踩了坑,不要心急,请尝试修改、调整18次。
3.经验总结
3.1换电脑以后SSH key重新申请
3.1.1生成新的 SSH Key
$ ssh-keygen -t rsa -C "邮件地址@youremail.com"
如图所示:
然后要输入密码,如果为空的话提交项目时则不用输入。这个设置是防止别人往你的项目里提交内容。
Enter passphrase (empty for no passphrase):<输入加密串>
Enter same passphrase again:<再次输入加密串>
秘钥生成以后在你的C:Users你的用户名.ssh
下可以看到如下文件然后你可以复制id_rsa.pub
里的内容,或者在Git Bash里继续执行代码同样可以把秘钥复制到剪切板。
clip < ~/.ssh/id_rsa.pub
3.1.2在GitHub设置中添加key
登陆 GitHub 系统。点击右上角的 Account Settings--->SSH Public keys ---> add another public keys
3.1.3粘贴秘钥并保存
把你本地生成的密钥复制到里面( key 文本框中), 点击 add key
3.1.4测试
ssh -T git@GitHub.com
出现下图所示提示,证明秘钥配置成功!
3.2换电脑以后备份上传博客源文件
在进行步骤2.2备份上传
的时候,由于我是新换了电脑,能从仓库pull下来但无法push到仓库上去。
原因是没有对Git文件或文件夹进行申明,还是对Git不熟悉造成的,其实挺有一意思,总结这三板斧的步骤就是,先git init
初始化环境,然后选择要执行的文件范围,git add .
意思是全部选择,然后申明,最后选择推拉。具体说明请看下图。push成功是这个样子的:、
3.3Travis IC介绍
Travis IC=Travis Continuous Integration 意思是,在一个项目中,任何人对代码库的任何改动,都会触发 CI 服务器自动对项目进行构建,自动运行测试,自动编译,甚至自动部署到测试环境。这样做的好处就是,随时发现问题,随时修复。因为修复问题的成本随着时间的推移而增长,越早发现,修复成本越低。Travis CI 是在线托管的 CI 服务,用 Travis 来进行持续集成,不需要自己搭服务器。另外,GitHub推出了官方的自动编译项目——GitHub Actions,详情请参考下面这两篇文章了解:
GitHub Actions 入门教程——阮一峰
Github Actions:再次改变软件开发——编译青春
4.参考文章
Github 使用 Travis CI 实现 Hexo 博客自动部署——Michael翔
使用 Travis CI 实现 Hexo 博客自动部署——昔日的夕日(这篇文章部分地方有错误,要自行辨别)。
利用CI自动部署hexo博客——一步
使用Travis CI自动部署博客到github pages和coding pages——Akkuman
好的,到这里我们这篇交流文章就结束了。菜鸟的学习文章,不足之处还望各位大神斧正。
利用Travis IC实现Hexo博客自动化部署相关推荐
- 安装Hexo博客并部署到GitHub或云服务器(细节教程,越过各种坑)
前言 心血来潮买了云主机,浪费了几个月都没用,然后就学着搭建博客,对比了一下 WordPress 和 Hexo 之后,随性选择了以 Hexo 为框架搭建博客平台. 经过了几次的从零开始,遇到了各种各样 ...
- 利用Github Pages创建Hexo博客
前言 很多时候身为程序员我们都有搭建自己博客的想法,可是真的着手搭建时候,总觉得事情很繁琐(VPS.LNMP环境.php或者node.js框架.域名.cdn等)而懒得去搞,因此很容易就搁置了自己搭建博 ...
- 搭建hexo博客并部署到github上
hexo是由Node.js驱动的一款快速.简单且功能强大的博客框架,支持多线程,数百篇文章只需几秒即可生成.支持markdown编写文章,可以方便的生成静态网页托管在github上. 感觉不错. 前端 ...
- Hexo博客:部署与插件
2019独角兽企业重金招聘Python工程师标准>>> 同步自我的个人博客墨语的后花园,请多多指教. 在我两年前写的博客的搭建博客的简单步骤的这篇博文中,我简单的介绍的如何搭建一个基 ...
- Hexo博客系统部署教程 - 最全面的Hexo部署方法,交给你了~
原文地址:http://bili33.top/2019/09/07/hexo-deploy-guide/ 不常上CSDN,有问题请到我的博客的对应文章下面的评论区留言或者直接跟我QQ沟通,QQ在我的个 ...
- 从零搭建Hexo博客并部署阿里云服务器(奶妈级教学)
前言 前天刚买了个云主机,就开始学着搭博客了,参考了挺多大手的博客,最终还是选择使用Hexo来作为自己的博客框架.测试结束了,今天也将自己搭博客过程中踩过的坑做一个输出,希望对有想法要做自己的博客的同 ...
- 如何从零搭建一个hexo博客网站01
title: 如何从零搭建一个hexo博客网站01 #文章標題 categories: "Hexo教程" #文章分類目錄 可以省略 categories: "Hexo教程 ...
- Hexo瞎折腾系列(6) - 将博客同时部署到Github和Coding
前言 由于本人只是将Hexo博客同时部署到 Github 和 Coding.net ,所以这里只介绍怎么同时部署到这两个网站的pages. 之所以选择这两个网站,是因为国外用户可以访问 Github, ...
- Hexo个人免费博客(四) 部署到Coding.net
引言: 之前的博客我们已经完成了个人Hexo博客的搭建和配置,并且部署到Github上,具体过程可以参考我之前的博客<Hexo个人免费博客(一) 从零到发布Github>,但是国内访问速度 ...
- 使用Travis CI自动部署Hexo博客
自从使用GitHub Pages和Hexo来发布博客之后,不得不说方便了许多,只需要几个简单的命令博客就发布了.但在不断的使用中发现每次的发布操作也挺耗时的. 我一般的操作是将平时整理好的md文件放到 ...
最新文章
- Gson与FastJson比较
- Qt 4.7.4 完美动态编译发布动态调试,以及静态编译发布
- Windows 7 扩展玻璃效果(Aero Glass)
- Google、Stanford导师带出的AI人才,是你吗?
- 本周ASP.NET英文技术文章推荐[02/25 - 03/03]
- linux学习笔记-文件属性基本知识
- SQL注入攻击原理与几种防御方式
- vue引入企业微信JS-SDK;企业微信开发步骤;vue开发企业微信;企业微信侧边栏应用开发
- *16.5 shared_ptr使用场景、陷阱、性能分析与使用建议
- python输入一个人的名字_把一个人的名字分成名字和姓
- 309. Best Time to Buy and Sell Stock with Cooldown**
- 露天靶场建设方案,打靶设备和防弹墙作为主要工程建设
- Php一键转存微信文章,python如何导出微信公众号文章
- Linkis简单版安装教程
- 大数据挖掘技术在企业创新中的应用
- PROFINET 网络拓扑图是如何生成的?
- 将localhost换成自己电脑的ip的方法
- 如何清除百度云管家计算机图标,Win10此电脑中多了个百度云管家图标如何清除...
- 批量把pdf转换成cad转换器免费版教学
- php仿QQ等级太阳显示函数