Github Actions 是 Github 推出的自动化构建工具,一般来说,CI / CD (持续集成 / 持续部署)都需要自己的计算资源,但 Github Actions 提供免费的计算资源,这是它的优势之一,用户只用操心 workflow 文件,不用关心环境相关的琐碎,便可部署 CI / CD,加速了流程。


博客除草计划正在进行中,最近在准备新主题 Candelas, 为了方便预览,打算使用 Github Actions 自动部署新主题的 demo 到 Github Pages。

Github Actions

在 GitHub Actions 中,一次执行过程被称为一个 workflow,一个 workflow 中可以有一个或者多个 job,job 又由 step 组成,step 中可以执行 action,就是一条条命令,更多入门的东西可参考阮老师的这篇文章。

GitHub Pages Deploy Action

Github Actions 提供一个 Actions 市场,这是它另一个优势,可以复用别人提供的 action,减少编写 workflow 文件工作量。我在 Candelas 项目的 Actions 中使用市场中的 GitHub Pages Deploy Action 来部署 hexo 博客资源到 Github Pages。

- name: Init Github pagesrun: |mv ./candelas/.git $GITHUB_WORKSPACEmv ./candelas ./hexo-theme-unit-test/themescd ./hexo-theme-unit-testnpx hexo cleannpx hexo config theme candelasnpx hexo new page categoriescp ./themes/candelas/.github/resources/categories.md ./source/categories/index.mdnpx hexo generatemv ./public $GITHUB_WORKSPACE
- name: Deployuses: JamesIves/github-pages-deploy-action@3.1.5with:ACCESS_TOKEN: ${{ secrets.ACCESS_TOKEN }}BRANCH: gh-pagesFOLDER: public

上面是与 GitHub Pages Deploy Action 相关的 steps,前一步是准备 Github Pages 相关的静态资源,后一步是借助 GitHub Pages Deploy Action 一步部署静态资源至 gh-pages 分支,简单快捷。

在使用 GitHub Pages Deploy Action 之前,也是需要一些准备工作的,过程中,我遇到了两个问题。第一个报错\##[error]There was an error initializing the repository: Error: The process 'git' failed with exit code 128,因为当前仓库是 Candelas 主题,我便将其移动至 Hexo 博客的 themes 文件夹下,以便 Hexo 生成静态资源,这也就把当前仓库的 .git 文件夹也给移动走了,GitHub Pages Deploy Action 误以为这是一个空的仓库,尝试对其初始化,结果出现了问题,抛出这个错误。我的解决方法是 mv ./candelas/.git $GITHUB_WORKSPACE,在移动当前仓库之前,先把 .git 文件夹移动至工作区。

当我尝试 FOLDER: ./hexo-theme-unit-test/public 来指定 GitHub Pages Deploy Action 部署的静态资源文件目标路径时,发现 GitHub Pages Deploy Action 并不支持以 /./ 开头的路径。这时就需要 mv ./public $GITHUB_WORKSPACE,在前一个 step 中将目标文件夹移动至工作区路径下。默认的环境变量 $GITHUB_WORKSPACE 变量指向工作区,在每个 step 开始,当前路径都会回到此路径,也就是说在 Deploy step 中当前路径不会受到前一个 step 中路径跳转的影响,可以直接访问到 public 文件夹。

一番体验下来,Github Actions 还是蛮好上手的,有很多可复用的 action,降低了门槛,要说缺点的话,就是调试的时候,很费精力,考验耐心。

参考资料

  • GitHub Actions 入门教程
原文链接:https://dukeluo.me/2020/04/14/blog-clean-plan-2.html

博客除草计划(二):GitHub Pages Deploy Action 部署 hexo 博客相关推荐

  1. [小题大做] Github + Jenkins 实现自动化部署 hexo 博客静态文件

    使用jenkins来部署hexo简直就是小题大做,但是偶尔这样小题大做还真有折腾的乐趣 背景 jianyujianyu.com之前是使用typecho做博客的. 原因很简单,wordpress太重,h ...

  2. 在win10子系统ubuntu平台下使用jekyll和github pages搭建自己的静态博客网站

    前言 总喜欢在自己闲得无聊的时候,折腾一些东西.最近喜欢上了markdown的方便简洁,就想借助jekyll和github pages来搭建一个静态博客网站,然后只需要跟平时写代码一样,上传自己的.m ...

  3. 使用Hexo在GitHub Pages上搭建部署免费的个人博客网站(上:GitHub搭建)——最详细全面解读教程(没有之一)

    标签:Hexo GitHub使用技巧 博客 网站搭建 点击此处,浏览效果更好 版权声明:本文为博主 @残灯飞雪 的原创文章,欢迎转载,传播知识.著作权归作者所有,商业转载请联系作者获得授权,非商业转载 ...

  4. 如何用 windows+github搭建一个优美的hexo博客

    如何用 windows+github搭建一个优美的hexo博客 1.Hexo简单介绍 Hexo 是一个快速.简洁且高效的博客框架.Hexo 使用 Markdown(或其他渲染引擎)解析文章,在几秒内, ...

  5. 使用Travis CI自动部署Hexo博客

    自从使用GitHub Pages和Hexo来发布博客之后,不得不说方便了许多,只需要几个简单的命令博客就发布了.但在不断的使用中发现每次的发布操作也挺耗时的. 我一般的操作是将平时整理好的md文件放到 ...

  6. 腾讯云部署hexo博客系统

    腾讯云部署hexo博客系统 1. 云服务器端配置 git 1. 安装依赖库和编译工具 安装依赖库: yum install curl-devel expat-devel gettext-devel o ...

  7. 用TravisCI持续集成自动部署Hexo博客的个人实践

    优秀的程序员都是不用持续集成的 前几天我面试了一个码农,连续几个专业问题他都没答上来. 尴尬之余,我问它:「你没有什么理想吗?你现在最渴望的事情是什么?」 码农转悠着大眼睛,不假思索道:「做一个持续集 ...

  8. 在gitcafe上部署hexo博客方法介绍

    最近闲着无聊,突发想搞一个自己的博客.于是就有了这个blog.在搭建的过程中也出了许多的问题,不过最后还是搭建完成了.现在我把我搭建的过程记录下来,作为备忘和分享. 0x00 首先是我自己机子的环境介 ...

  9. 用hexo+github pages+独立域名搭建个人博客

    摘要 用hexo建立博客这个教程,查阅了很多资料,自己倒腾了两三个小时弄好了. 现在简单记录下,以便不时之需.欢迎来我的博客 https://www.heson10.com 基本环境 Window10 ...

最新文章

  1. javascript原理_JavaScript程序包管理器工作原理简介
  2. pythonpandas函数详解_对pandas中Series的map函数详解
  3. python 装饰器 参数-python装饰器参数那些事_接受参数的装饰器
  4. CentOS 安装 VMware Tools 详细方法
  5. 多线程:Executor、Sleep、Deamon、Yeild
  6. 拜托!不要再问我是否了解多线程了好吗
  7. 2021 第三封拒信 来自牛津大学自主智能机器和系统 Autonomous Intelligent Machines and Systems
  8. modelsim的do文件
  9. Java并发编程之阻塞队列
  10. Python学习笔记:微积分计算
  11. 人生规划:20岁到60岁我该干什么
  12. LeetCode ---8. String to Integer (atoi)
  13. 计算机二级vb上机操作题库,全国计算机等级考试 二级VB 上机题库精简版 考试必备,...
  14. HBase安装配置及测试
  15. IE改善七大手法| ECRS工时分析软件
  16. vs2008 sp1下载中
  17. URL rewrite
  18. steam插件_Steam是如何了解一款游戏的?看了这篇文章会让你豁然开朗!
  19. 统计素数并求和python_C语言实现的统计素数并求和代码分享
  20. js实现椭圆轨迹_利用js实现div画椭圆曲线运动特效代码

热门文章

  1. **Java满汉全席中的坏味道**
  2. c ++函数功能查询器_C ++ 17新功能和技巧
  3. 2022年二级注册建筑师《场地设计》同步练习题及答案
  4. html input change,input与change事件区别
  5. 在线实现万能文件转换
  6. 【windows编程之对话框】对话框原理,对话框的创建
  7. 2021-11-06 正则表达式总结
  8. 星梦缘陈彦妃_《星梦缘》中的爆炸头“陈彦妃”:作为女艺人的她不得不说太全能...
  9. 【不是拷贝】rabbitmq安装延迟队列插件rabbitmq_delayed_message_exchange
  10. C语言实现字符的归一化,(5条消息)归一化方法总结