搭建个人博客系列--(4) 利用Github Actions自动构建博客
经过前面的系列文章的学习和实践,相信你已经成功的利用Hexo构建自己的博客并且部署到了Github上。
目前整个发布博客的流程是,用markdown文件写好博客,然后使用Hexo编译成html, 最后将public下的内容部署到github上。整个过程虽然不复杂,但每次都要重新在本地编译然后上传,多少有些繁琐。
这个时候我们可以寻求一种方法,实现博客自动编译和内容的部署,它就是 Github Actions。
什么是Github Actions?
GitHub Actions 是 GitHub 提供的 持续集成与持续部署(CI/CD)平台,允许开发者直接在 GitHub 仓库中自动化构建、测试、打包、发布代码,实现软件开发流程的自动化。通过定义 YAML 格式的配置文件(称为 Workflow),开发者可以定制化代码仓库的自动化工作流程,例如代码提交时自动运行测试、合并分支时自动部署到服务器等。
核心概念
Workflow(工作流)
一个 Workflow 是一个自动化流程,由一个或多个 Job 组成,通过 YAML 文件(.github/workflows/ 目录下)定义。
可以配置 Workflow 在特定事件(如代码推送、Pull Request 创建、Issue 评论等)触发,或按计划定期运行。
Job(任务)
- 一个 Job 是 Workflow 中的独立任务,包含一系列 Step,默认在一个虚拟机(Runner)上运行。
- Jobs 可以并行或按顺序执行,支持定义依赖关系(如 Job B 等待 Job A 完成)。
Step(步骤)
Step 是 Job 中的最小执行单元,可以是运行 Shell 命令(如 npm install)或调用 Action(预定义的功能模块)。
例如:拉取代码、安装依赖、运行测试、部署到服务器等。
Action(动作)
可复用的代码模块,用于完成特定功能(如检出代码、设置环境、发送通知等)。
GitHub Marketplace 提供大量公开 Actions(如 actions/checkout、actions/setup-node),开发者也可自定义 Actions。
举个例子
以下是一个简单的 Workflow 配置(.github/workflows/node.js.yml),用于在 Node.js 项目中执行测试:
name: Node.js CI
on: [push] # 当代码推送时触发
jobs:
build:
runs-on: ubuntu-latest # 使用 Ubuntu 最新版虚拟机
steps:
- name: Checkout code
uses: actions/checkout@v4 # 拉取代码到 Runner
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: 20 # 指定 Node.js 版本
- name: Install dependencies
run: npm install # 运行 Shell 命令安装依赖
- name: Run tests
run: npm test # 运行测试脚本
编写自动编译并部署博客脚本
如果需要实现博客的自动化部署,那么有两个步骤要走,一是在push新内容的时候编译,二是编译之后部署到Github pages上。
编译博客
在之前的内容中,我们知道编译markdown文件成html文件使用的命令是 hexo build
, 后来我们又将其写入到 package.json
里的scripts
中并取名为 build
, 那么在执行编译的时候可以使用 npm run build
来替代之前的命令。
下面我们开始来写自动化脚本,首先在根目录下新建一个./github/workflows/update-blogs.yml
文件,整体框架可以参考上面例子,因为使用的都是 Node 环境。
完成一个build操作,要执行的操作分4步骤
- 拉取代码
- 配置Node环境
- 安装依赖
- 执行编译操作
- 上传编译内容
name: automaticly update blogs
on:
branches:
- master # master分支
jobs:
build:
runs-on: ubuntu-latest # 使用 Ubuntu 最新版虚拟机
steps:
- name: Checkout code
uses: actions/checkout@v4 # 拉取代码到 Runner
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: 20 # 指定 Node.js 版本
- name: Install dependencies
run: |
npm install
npm install -g hexo-cli
- name: Run build
run: npm run build # 运行编译操作
- name: Upload Pages artifact
uses: actions/upload-pages-artifact@v3 # 上传public目录内容
with:
path: ./public
修改点:
不想任意分支提交都执行该操作,所以选择
master
分支有提交的时候执行。安装依赖依赖,需要在全局安装
hexo-cli
上传内容使用的是Github Actions 官方的一个专用 Action: actions/upload-pages-aartifact, 主要用于 将静态网站文件打包并上传为 GitHub Pages 部署所需的 “工件”。
部署博客
在成功编译博客之后,也是通过一个官方的Action来实现博客内容的部署
name: automaticly update blogs
on:
branches:
- master # master分支
jobs:
build:
...
# 部署博客
deploy:
needs: build # 依赖上一个build操作
permissions: # # 需授予 Pages 写入权限和生成部署令牌的权限
pages: write
id-token: write
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
steps: # 使用actions 部署
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
测试验证
编写完脚本之后,提交代码至 master
分支,在Github对应的仓库分支上可以看见已经有对应的workflow,如作者的脚本配置。
如果左侧出现刚才脚本的名称 automaticly update blogs
, 则说明已经配置成功了,可以通过提交内容到 master分支来检验脚本的执行情况。
写在最后
到目前为止,整个搭建个人博客系列文章已经实现了个人博客站点的搭建和自动化部署,相信此时的你也搭建好了自己的博客站点。
正如之前所说,博客站点最重要的就是价值输出,也就是要勤写内容。但是有时候,酒香也怕巷子深,如何让更多的人看到自己写的文章,增加个人影响力,这将是后面将要讨论的问题,请持续关注!
搭建个人博客系列--(4) 利用Github Actions自动构建博客的更多相关文章
- 利用 Github Actions 自动更新 docfx 文档
利用 Github Actions 自动更新 docfx 文档 Intro docfx 是微软出品一个 .NET API 文档框架,有一个理念是代码即文档,会根据项目代码自动生成 API 文档,即使没 ...
- 5 分钟教你快速掌握 GitHub Actions 自动部署博客
自从 GitHub 宣布 GitHub Actions 在平台上对所有开发人员和存储库可用以来,GitHub Actions 越来越受欢迎.很多第三方平台在生态系统中有速度等限制,将进一步推动开发人员 ...
- 用GitHub Actions自动部署Hexo
什么是 GitHub Actions ? GitHub Actions 是一个 CI/CD(持续集成/持续部署)工具,GitHub 于 2018 年 10 月推出,正式版于 2019 年 11 月正式 ...
- 如何使用 Github Actions 自动抓取每日必应壁纸?
如何白嫖 Github 服务器自动抓取必应搜索的每日壁纸呢? 如果你访问过必应搜索网站,那么你一定会被搜索页面的壁纸吸引,必应搜索的壁纸每日不同,自动更换,十分精美.这篇文章会介绍如何一步步分析出必应 ...
- docker微服务部署之:五、利用DockerMaven插件自动构建镜像
docker微服务部署之:四.安装docker.docker中安装mysql和jdk1.8.手动构建镜像.部署项目 在上一篇文章中,我们是手动构建镜像,即: 4.1.2.5.1.2.6.1.2中的将d ...
- GitHub + circleCI 自动构建/自动部署 应用
GitHub + circleCI 自动构建/自动部署, 这里略过了单元测试,以部署 laravel 应用为例子 比起 gitlab + ansible + genkins 操作起来节省了很多硬件资源 ...
- hexo配合github action 自动构建(多种形式)
已经使用HEXO正常构建GitHub页面 根据github action 给hexo配置自动部署github page 前往墨抒颖的个人网站查看纯净版 1. 为仓库设置访问密钥 第一步先生成密钥,打开 ...
- Github webhooks 自动部署博客文章,使用总结【含视频】
作者:小傅哥 博客:https://bugstack.cn 原文:https://mp.weixin.qq.com/s/VtTHUfyiITNSoGy052jkXQ 沉淀.分享.成长,让自己和他人都能 ...
- github page+jekyll构建博客的解决方案
想在github page上构建自己的博客,前几个星期就动手搞了起来,但由于自己对于前端这些东西不是很熟,所以断断续续的,直到今天才把所有东西都搞懂,而且构建出自己的github博客了. 最终效果,大 ...
- 基于 Github Actions 自动部署 Hexo 博客
前言 前不久使用了 Hexo 搭建独立博客,我是部署在我的腾讯云轻量应用服务器上的,每次都需要 hexo deploy 然后打包.上传.解压和刷新 CDN,非常麻烦.我的服务器配置也不高 2C2G 无 ...
随机推荐
- leetcode每日一题:转换二维数组
题目 2610. 转换二维数组 给你一个整数数组 nums .请你创建一个满足以下条件的二维数组: 二维数组应该 只 包含数组 nums 中的元素. 二维数组中的每一行都包含 不同 的整数. 二维数组 ...
- CentOS 7 部署 GLPI 系统及集成方案
一.系统环境准备 1. 安装必要依赖 # 更新系统sudo yum update -y # 安装EPEL仓库sudo yum install -y epel-release # 安装必要组件sudo ...
- Mono GC
1.虽然是stw但mark阶段可以concurrent 2.并行mark就需要写屏障 3.unity的gc也不是扫描整个堆内存 https://schani.wordpress.com/2012/12 ...
- day12“函数”进阶学习让你更上一层楼
函数进阶 多函数程序执⾏流程 拆包 递归 可变和不可变类型 多函数程序执⾏流程 共用全局变量 # 1. 定义全局变量 num = 0 def test1(): global num # 修改全局变量 ...
- python读取文件夹内所有图片名称,随机设置为桌面壁纸且把设置后的图片移到其他文件夹内的方法
关键词:读取文件夹.读取文件.操作系统.设置壁纸.移动文件 预期实现如下几个步骤 1.获取指定文件夹内所有图片名 2.随机取一张图片设置为壁纸 3.设置为壁纸的图片移动到另外一个文件夹中 第一步,获取 ...
- SAP HANA使用命令行快速导出导入
楔子 今天折腾了接近一下午,就为了使用SAP HANA自带的命令行工具来导出数据备份. SAP HANA(后续简称Hana)是内存数据库,性能这一方面上还真没怕过谁. 由于SAP HANA提供了Han ...
- fiddler的composer设计器
1.过程:点击composer,把要修改请求体的会话拖到composer空白处,composer出现请求方式,url,请求报文,请求体 2.在请求体中修改请求内容(比如删除号码),然后点击excute ...
- windows切换nodejs版本
卸载之前的nodejs 第一步:下载nvm并安装 (推荐使用nvm-setup.zip) https://github.com/coreybutler/nvm-windows/releases 第二步 ...
- 如何使用Streamlit快速创建仪表盘?
上文有快速带大家了解streamlit,因为工作需要,这两天尝试构建了仪表盘,也就是咱们常说的Dashboard,本篇文章将教你如何使用 Streamlit 快速创建一个简单的仪表盘. 前言 Stre ...
- 打造企业级AI文案助手:GPT-J+Flask全栈开发实战
一.智能文案革命的序幕:为什么需要AI文案助手? 在数字化营销时代,内容生产效率成为企业核心竞争力.据统计,营销人员平均每天需要撰写3.2篇文案,而传统人工创作存在三大痛点: 效率瓶颈:创意构思到成文 ...