利用Travis IC实现Hexo博客自动化部署

1.Hexo博客的利与弊

Hexo中文html

我就默认为看到这篇文章的人都比较了解Hexo博客,也都可以成功手动部署吧。因此第一部分推荐两篇文章一笔带过,让咱们快速进入本文的重点内容。实在不知道也不要方先看一看下面推荐的这两篇文章。node

手把手教你使用Hexo + Github Pages搭建我的独立博客——令狐葱git

Hexo + github 打造我的博客——zdy0_2004github

还有一个专栏: Hexo / 总共13篇——水寒npm

感谢以上文章原创做者的分享,推荐纯属自来水。看完这两篇文章后有没有以为本身手里的Hexo博客很是神奇、很是好用了呢?其实我想说,这个时候的Hexo只是一个残废好吗?你想想,玩这个博客系统的你必定是热爱技术的折腾客,好比小明有8台电脑,他要在8台电脑上都安装环境,并且部署还真是个磨人的小妖精,极可能会出现奇奇怪怪的问题。好比在刚接触Hexo不久的时候我干过这样一件纯事,配置文件_conffig.yml中有这样一段代码:segmentfault

language: cn
timezone: Asia/Shanghai

我就自做多情地把时区改为Beijing了,以后就出现了没法部署的问题。很久之后一个机会看到别人的文章才明白这个时区是改不得的,醉的是,出错之后新手真的很难知道错误缘由。因此若是不能跨终端写做、自动部署,Hexo的博客功能算什么呢?算残废,没错!服务器

针对以上问题,咱们今天就来交流一下利用Travis IC实现Hexo博客自动化部署,这样干的好处就是终于能够实现多终端发布博客文章而不用换一次电脑装一次环境了。hexo

2.Travis IC解决问题

这里咱们就暂时不介绍Travis IC了,感兴趣能够到文章后面了解一下,咱们直接用它来解决问题。ssh

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: stable

cache:
    apt: true
    directories:
        - node_modules

notifications:
    email:
        recipients:
            - xxx@gmail.com #你的邮箱地址
        on_success: change
        on_failure: always

# turn off the clone of submodules for change the SSH to HTTPS in .gitmodules to avoid the error
git:
  submodules: false
        
before_install:
    - export TZ='Asia/Shanghai'
    - npm install hexo-cli -g

install:
    - npm install

script:
    - hexo clean
    - hexo g

after_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:master

branches:
    only:
        - master

env:
    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

好的,到这里咱们这篇交流文章就结束了。菜鸟的学习文章,不足之处还望各位大神斧正。

相关文章
相关标签/搜索