热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用TravisCI自动部署Hexo

本文转载于个人博客Lenote鉴于使用Hexo部署网站的繁琐性,便利用软件开发中的持续集成工具TravisCI来帮助完成这一繁杂过程。TravisCICI是Continuous

本文转载于个人博客 Lenote

鉴于使用Hexo部署网站的繁琐性,便利用软件开发中的持续集成工具Travis CI来帮助完成这一繁杂过程。

Travis CI


CI是Continuous Integration的缩写,持续集成之意。

持续集成是一种软件开发实践,每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。

Continuous Integration

Travis CI 是目前新兴的开源持续集成构建项目,用来构建托管在GitHub上的代码。它提供了多种编程语言的支持,包括Ruby,Javascript,Java,Scala,PHP,Haskell和Erlang在内的多种语言。许多知名的开源项目使用它来在每次提交的时候进行构建测试,比如Ruby on Rails,Ruby和Node.js。

Travis CI是在软件开发领域中的一个在线的,分布式的持续集成服务,用来构建及测试在GitHub托管的代码。这个软件的代码同时也是开源的,可以在GitHub上下载到,尽管开发者当前并不推荐在闭源项目中单独使用它。

工作原理


当我们每次进行push等动作时,Travis CI 会自动检测我们的提交,然后根据配置文件,搭建虚拟主机来运行测试,构建等指令。在这里,就是运行hexo g d等命令来自动生成、部署静态网页。

Travis CI

Travis CI 官方文档:https://docs.travis-ci.com/

具体配置


Hexo 搭建

这里使用Hexo+Next+GitHub Pages组合示范过程,具体过程不再赘述。网站源码放到Hexo分支,博客的静态文件部署到master分支。

hexo源代码

设置 Travis CI

登陆 Travis CI,使用 GitHub 账户登录,它会自动关联 GitHub 上的仓库。点击右上角用户查看 GitHub 仓库,并选择要启动的项目,这里选择yourname/yourname.github.io

点击设置按钮,进入设置选项,开启相关服务,Build only if .travis.yml is present:指只在有.travis.yml时改变了才构建;Build pushes:push 完分支后开始构建。

设置

访问仓库是需要权限的,下面配置权限信息。

配置 Acess Token

登陆GitHub,进入设置界面,在Personal access tokens页面下点击右上角的Generate new token按钮会生成新的token,随后输入密码,取个名字,勾选一些权限

Personal access tokens

拷贝 token 并在 Travis CI 页面中配置Environment Variables

Environment Variables

Travis CI 已获得仓库权限,现在可以给它相关操作指令了。

配置 .travis.yml

.travis.yml 内容如下:

language: node_js  #设置语言

node_js: stable #设置相应的版本

install:
- npm install #安装hexo及插件

script:
- hexo cl #清除
- hexo g #生成

after_script:
- cd ./public
- git init
- git config user.name "yourname" #修改name
- git config user.email "your email" #修改email
- git add .
- git commit -m "update"
- git push --force --quiet "https://${GH_TOKEN}@${GH_REF}" master:master #GH_TOKEN是在Travis中配置token的名称

branches:
only:
- hexo #只监测hexo分支,hexo是我的分支的名称,可根据自己情况设置
env:
global:
- GH_REF: github.com/yourname/yourname.github.io.git #设置GH_REF,注意更改yourname

.travis.yml 配置完成后,还需要注意一个问题,即 Travis 在创建虚拟机后,如何利用npm install安装 Hexo 及其依赖文件。进行过本地部署的话就不难发现,我们所需要的依赖文件会自动添加到 package.json 列表中,因此 package.json 文件不可少。

package.json

配置Hexo时还会生成node_modules文件夹,这是 Hexo 及其依赖包的位置,它和 package.json 文件列表是对应的。因此 node_modules 文件夹不需要 push 远程仓库,CI平台的虚拟机会自己创建的。

另外注意这些文件的格式,尤其是.yml的格式,稍有偏差就有可能出问题。

Push 到 GitHub

在_posts目录下新建文章并 push 分支,登陆 Travis CI 即可发现已经检测到分支变化并开始构建,其中job log记录了构建的过程。

hexo deployer

自动部署完成,打开网页查看效果

post

参考资料

  • Hexo 自动部署到 Github
  • 手把手教你使用Travis CI自动部署你的Hexo博客到Github上
  • 使用 travis-ci 自动部署 hexo 博客

推荐阅读
  • 通过将常用的外部命令集成到VSCode中,可以提高开发效率。本文介绍如何在VSCode中配置和使用自定义的外部命令,从而简化命令执行过程。 ... [详细]
  • 应用链时代,详解 Avalanche 与 Cosmos 的差异 ... [详细]
  • 本文将详细介绍如何注册码云账号、配置SSH公钥、安装必要的开发工具,并逐步讲解如何下载、编译 HarmonyOS 2.0 源码。通过本文,您将能够顺利完成 HarmonyOS 2.0 的环境搭建和源码编译。 ... [详细]
  • 在软件开发过程中,经常需要将多个项目或模块进行集成和调试,尤其是当项目依赖于第三方开源库(如Cordova、CocoaPods)时。本文介绍了如何在Xcode中高效地进行多项目联合调试,分享了一些实用的技巧和最佳实践,帮助开发者解决常见的调试难题,提高开发效率。 ... [详细]
  • 浏览器作为我们日常不可或缺的软件工具,其背后的运作机制却鲜为人知。本文将深入探讨浏览器内核及其版本的演变历程,帮助读者更好地理解这一关键技术组件,揭示其内部运作的奥秘。 ... [详细]
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • 在 CentOS 6.4 上安装 QT5 并启动 Qt Creator 时,可能会遇到缺少 GLIBCXX_3.4.15 的问题。这是由于系统中的 libstdc++.so.6 版本过低。本文将详细介绍如何通过更新 GCC 版本来解决这一问题。 ... [详细]
  • Flutter 2.* 路由管理详解
    本文详细介绍了 Flutter 2.* 中的路由管理机制,包括路由的基本概念、MaterialPageRoute 的使用、Navigator 的操作方法、路由传值、命名路由及其注册、路由钩子等。 ... [详细]
  • com.sun.javadoc.PackageDoc.exceptions()方法的使用及代码示例 ... [详细]
  • 解决Only fullscreen opaque activities can request orientation错误的方法
    本文介绍了在使用PictureSelectorLight第三方框架时遇到的Only fullscreen opaque activities can request orientation错误,并提供了一种有效的解决方案。 ... [详细]
  • 本文介绍如何使用线段树解决洛谷 P1531 我讨厌它问题,重点在于单点更新和区间查询最大值。 ... [详细]
  • 解决Bootstrap DataTable Ajax请求重复问题
    在最近的一个项目中,我们使用了JQuery DataTable进行数据展示,虽然使用起来非常方便,但在测试过程中发现了一个问题:当查询条件改变时,有时查询结果的数据不正确。通过FireBug调试发现,点击搜索按钮时,会发送两次Ajax请求,一次是原条件的请求,一次是新条件的请求。 ... [详细]
  • 基于Linux开源VOIP系统LinPhone[四]
    ****************************************************************************************** ... [详细]
  • 在 CentOS 7 系统中安装 Scrapy 时遇到了一些挑战。尽管 Scrapy 在 Ubuntu 上安装简便,但在 CentOS 7 上需要额外的配置和步骤。本文总结了常见问题及其解决方案,帮助用户顺利安装并使用 Scrapy 进行网络爬虫开发。 ... [详细]
  • C++ 异步编程中获取线程执行结果的方法与技巧及其在前端开发中的应用探讨
    本文探讨了C++异步编程中获取线程执行结果的方法与技巧,并深入分析了这些技术在前端开发中的应用。通过对比不同的异步编程模型,本文详细介绍了如何高效地处理多线程任务,确保程序的稳定性和性能。同时,文章还结合实际案例,展示了这些方法在前端异步编程中的具体实现和优化策略。 ... [详细]
author-avatar
fewtewtewt
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有