免去打包烦恼,自动构建你的GitHub Pages|玩转GitHub Pages三部曲(二)

news2025/8/3 2:21:29

本文讲述了如何利用 GitHub Actions 来自动构建 GitHub Pages 项目,免去繁琐的手动构建再提交过程,让你专注于写作。


大家的点赞和互动是我更文的动力 /(ㄒoㄒ)/ 所以我决定发起一项活动,到三月三十一日统计,留言次数和赞赏次数最多的人各将获得赠书一本。

点击上方“后端开发技术”,选择“设为星标” ,优质资源及时送达

GitHub Actions 自动构建

之前的文章我们已经讲过了如何利用 GitHub Pages 快速搭建一个自己的博客,并且我对现有比较热门的几个静态网站生成框架进行了对比,结论是选择 Hugo 作为技术选型。具体内容不再赘述,请自行查阅。

97d56adbd8821f54414c476626c61fbe.jpeg

简单!这可能是最快速的个人博客搭建姿势!|原创


因为Hugo在发布到 GitHub之前需要自行本地编译打包,然后才能把打包好的源码 push 到远程仓库,这就显得很繁琐。于是有人问,可以不需要手动编译直接部署吗?

答案当然是有的!一切理论上可以偷懒的事情,都有程序做了,GitHub Actions 就解决了这个问题。持续集成由很多操作组成,比如抓取代码、运行测试、登录远程服务器,发布到第三方服务等等。GitHub 把这些操作就称为 Actions。

192e50690ce6c40e45167e46f0786592.png

配置 Actions

1.准备工作

  • 可以访问的 GitHub Pages

  • Git

  • 本地源码

  • Hugo 环境

如果你阅读了之前的文章,这些准备工作已经就绪。

2.创建 sub mdules

hugo 的主题( themes) 是通过 Git 的 sub modules 拉取的,在 Git Actions 会在自动处理过程中会依赖子项目,没有 sub modules 文件会导致构建失败。这就需要我们在下载本地主题的时候是用 Git 的子 moudle 来拉取的,举个例子。

# 创建项目
hugo new site quickstart 
# 拉取主题
git init
git submodule add https://github.com/theNewDynamic/gohugo-theme-ananke.git themes/ananke
# 添加主题到 配置文件中
echo theme = \"ananke\" >> config.toml


3.创建 yml 配置文件

官方默认推荐的是 Jekyll ,内核对其作了支持,会根据分支自动构建发布的,但是如果使用其他静态化网页框架就需要自己来使用 GitHub Actions 来实现,Actions 其实就是 GitHub 的 pipeline 版本,使用只需要一个配置文件 .github/workflows/xxx.yml,GitHub Actions 会默认读取并且解析。

这里我们创建一个文件my-pipeline.yml

83d7a867557836562e82bd7cd464b4f2.png

4.配置 yml 文件

这里有两个地方可能需要修改:一是构建的分支 branches,默认是main,二是域名,如果自定义域名需要修改cname。(通常情况下可以直接复制此文件使用)

name: my-pipeline

on:
  push:
    tags:
      - '*'
    branches:
      - main # 制定需要构建的分支

env:
  REGISTRY: ghcr.io
  IMAGE_NAME: ${{ github.repository }}

jobs:
  build:
    runs-on: ubuntu-latest
    concurrency:
      group: ${{ github.workflow }}-${{ github.ref }}

    steps:
      - name: checkout
        uses: actions/checkout@v2
        with:
          submodules: true  # Fetch Hugo themes (true OR recursive)
          fetch-depth: 0    # Fetch all history for .GitInfo and .Lastmod

      - name: setup hugo
        uses: peaceiris/actions-hugo@v2
        with:
          hugo-version: '0.92.0'
          extended: true

      - name: build
        #run: hugo --minify#
        run: hugo -D

      - name: deploy
        uses: peaceiris/actions-gh-pages@v3
        if: ${{ github.ref == 'refs/heads/main' }}
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          publish_dir: ./public
          # cname: xxx.com # 如果是自定义域名需要修改

保存好之后可以查看 Acitons 选项,如果配置有效的话可以看到已经正在执行的Workflow。

4a687ae289736fc4a68c45355a3eb840.png

5.选择 Pages 自动构建分支

当完成了以上步骤的配置之后,如果操作全部正确,GitHub 对应仓库中会出现名为gh-pages的分支。此时进入https://github.com/{你的名字}/{你的仓库}/settings/pages页面,也就是仓库的SettingsPages选项,选择部署的分支为gh-pages

c05a5ea86d189540b896152c437406fa.png

可能出现的问题:

没有 pages 功能:只有公开项目才有,私有 项目不支持 gh-pages 分支不存在:没有成功触发 action,成功触发,会自动生成分支 gh-pages,并将静态资源保存在 gh-pages 上 cname 一直被重置:.github/workflows/my-pipeline.yml 最后一行没有设置好


6.Actions 配置完成

到这里所有的配置都完成了!后续我们只要提交 markdown 文件专注于写文章即可,无需关注繁琐的源码构建和提交过程,Actions 会帮助你完成这一切。

如果发现提交的代码没有及时更新,可以刷新一下浏览器缓存,或者检查构建过程中是否有异常。

如有疑问欢迎留言。

如果对你有帮助,欢迎点赞、评论或分享,感谢阅读!

八股文总是忘?一张图牢记JVM内存结构|金三银四系列

2023-02-13

e404e1cfdeaa4319e0ccdc650d4bf2ff.jpeg

一文掌握,单机Redis、哨兵和Redis Cluster的搭建,建议收藏

2023-02-11

80e4138b9158c6522a46e1e47876add7.jpeg

MySQL事务ACID都知道,原理是什么?附面试题

2023-02-07

ccf85f11c173492bf6c4e65db27ce5ce.jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/367615.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CSDN新星计划/原力计划来喽,对此你有何期待

文章目录🌟 写在前面🌟 新星计划🌟 独自开🌟 原力计划🌟 横穿全年的计划🌟 写在最后🌟 写在前面 哈喽,大家好,我是几何心凉,这是一份全新的专栏,…

辛普森悖论

感谢原作者!原文传送门 以下是摘录: 1、什么是辛普森悖论? 辛普森悖论是 1951 年由 E.H. 辛普森提出的,简单来讲就是在分组比较中都占优势的一方,有的时候在总评中反而是失势的一方。指局部的结论和整体的结论完全相…

HashMap~

HashMap: HashMap是面试中经常被问到的一个内容,以下两个经常被问到的问题, Question1:底层数据结构,1.7和1.8有何不同? 答:1.7数组+链表,1.8数组+(链表|红…

k8s使用外部ca证书

PKI证书和要求Kubernetes 需要 PKI 证书才能进行基于 TLS 的身份验证。如果你是使用 kubeadm 安装的 Kubernetes, 则会自动生成集群所需的证书。你还可以生成自己的证书。 例如,不将私钥存储在 API 服务器上,可以让私钥更加安全。此页面说明了…

C++ 模板

1. 泛型编程实现一个通用的交换函数,使用函数重载虽然可以实现,但是有以 下几个不好的地方:1. 重载的函数仅仅是类型不同,代码复用率比较低,只要有新类型出现时,就需要用户自己增加对应的函数2. 代码的可维…

深度剖析数据在内存中的存储(下)(适合初学者)

上篇讲解了整形在内存中的存储方式,这篇文章就来继续讲解浮点数在内存中的存储方式。 上篇地址: (5条消息) 深度剖析数据在内存中的存储(上)_陈大大陈的博客-CSDN博客 目录: 3.浮点型在内存中的存储 3.1.浮点数的…

【Windows Server 2019】发布服务器 | 远程桌面服务的安装与配置 Ⅱ——配置RemoteAPP和访问

目录4. 配置RemoteAPP4.2 设置要发布的APP4.1 如何找到访问链接5. 访问发布的RemoteAPP关联博文4. 配置RemoteAPP 4.2 设置要发布的APP (1)返回【Server Manager】,在左侧的菜单栏中找到【Remote Desktop Services】。 (2&#…

jupyter notebook小技巧

1、.ipynb 文件转word文档 将 jupyter notebook(.ipynb 文件)转换为 word 文件(.docx)的最简单方法是使用 pandoc。 首先安装pip install pandoc, 安装后,在将 Jupyter notebook文件目录cmd 然后输入打开…

ChatGPT 的盈利潜力:我使用语言模型赚取第一笔钱的个人旅程

使用 Fiverr、Python ChatGPT 和数据科学赚钱的指南。众所周知,ChatGPT 是 12 月发生的互联网突破性事件,几乎每个人都跳过了使用 AI 赚钱的潮流。在本文中,我将分享我是如何使用 ChatGPT 赚到第一笔钱的。本文包括以下主题:回到基…

深入理解Golang 中的Context包

context.Context是Go语言中独特的设计,在其他编程语言中我们很少见到类似的概念。context.Context深度支持Golang的高并发。 1.Goroutine 和channel。 在理解context包之前,应该首先熟悉Goroutine和Channel,能加深对context的理解。 1.1 Goro…

苹果设计可变色Apple Watch表带,智能穿戴玩法多

苹果最新技术专利显示,苹果正在为 Apple Watch 设计一款可变色的表带,可以根据佩戴者所穿着的服装、所在的环境等自动改变颜色。据介绍,这款表带里的灯丝具有电致变色功能,可以通过施加不同的电压,来实现显示多种颜色或…

C++之类与对象(上)

目录 一、类的定义 二.类的访问限定及封装 1.访问限定 2.封装 三.类的作用域和实例化 2.类的实例化 四.类的对象大小的计算 1.类成员存储方式 2.结构体内存对齐规则 五.类成员函数的this指针 1.this指针的引出 2.this指针的特性 3.C语言和C实现Stack的对比 一、类的定义 class …

Linux的kdump分析

文章目录一 系统环境二 下载和安装kerner-debuginfo三 启动crash四 crash常用命令一 系统环境 进行kdump分析的主机是CentOS-7.9系统。 [rootcanway ~]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core) [rootcanway ~]# uname -r 3.10.0-1160.el7.x86_64检查…

智慧新零售网络解决方案,助力新零售企业数智化转型

随着数字化时代的不断发展,新零售连锁业务模式“线上线下”融合发展,数据、设备在逐渐增加,门店数量也会随着企业规模的扩大而增加,但由于传统网络架构不稳定、延时、容量小影响服务质量(QoS)、分支设备数量…

【java】Spring Cloud --Spring Cloud Alibaba 教程

文章目录Spring Cloud Alibaba是什么Spring Cloud AlibabaSpring Cloud Alibaba 组件Spring Cloud Alibaba 的应用场景Spring Cloud 两代实现组件对比Spring Cloud Alibaba 版本依赖Spring Cloud Alibaba 组件版本关系Spring Cloud Alibaba NacosNacos 的特性服务发现服务健康监…

写博客有哪些好用的工具和软件?

写博客有哪些好用的工具和软件? 在各种平台上写文章,要有一个好用的编辑器,使用简单方便、不用花很多时间排版、能预览效果等。此外,文章还需要配图片、动图和视频等,所以需要好用的截图软件、视频录制和剪辑软件。 …

ME1M 报表Layout调整

众所周知,SAP的许多报表都可以选择以ALV的格式输出,ALV格式界面友好,业务人员可以按照自己的需求去调整报表输出格式,同时也方便导出到本地文件。大多数报表的选择界面上都有一个字段scope of list, 将其改成ALV: 偏偏…

该学会是自己找bug了(vs调试技巧)

前言 🎈个人主页:🎈 :✨✨✨初阶牛✨✨✨ 🐻推荐专栏: 🍔🍟🌯 c语言初阶 🔑个人信条: 🌵知行合一 🍉本篇简介:>:介绍c语言初阶的最后一篇.有关调试的重要性. 金句分享…

Linux基本介绍与常用操作指令

参考链接: Linux面试必备20个常用命令_无 羡ღ的博客-CSDN博客_linux常用命令 1. Linux简介 Linux是一个支持多用户、多任务、多线程和多CPU的操作系统,特点是免费、稳定、高效, 一般运行在大型服务器上。 1.1 常用目录简介 /:根目…

【storybook】你需要一款能在独立环境下开发组件并生成可视化控件文档的框架吗?(一)

storybook介绍入门说说用法prop-types.stories.jsx介绍 你肯定用过ant-design或者elemenUI中的一款UI组件库, 你肯定打开过它们的官网, 你是否好奇过,页面上展示的案例, 你为啥可以操作,还能查看源码供你CV?它们是…