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

news/2024/3/29 17:57:21/文章来源:https://blog.csdn.net/sinat_32873711/article/details/129192912

本文讲述了如何利用 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-pipelineon:push:tags:- '*'branches:- main # 制定需要构建的分支env:REGISTRY: ghcr.ioIMAGE_NAME: ${{ github.repository }}jobs:build:runs-on: ubuntu-latestconcurrency:group: ${{ github.workflow }}-${{ github.ref }}steps:- name: checkoutuses: actions/checkout@v2with:submodules: true  # Fetch Hugo themes (true OR recursive)fetch-depth: 0    # Fetch all history for .GitInfo and .Lastmod- name: setup hugouses: peaceiris/actions-hugo@v2with:hugo-version: '0.92.0'extended: true- name: build#run: hugo --minify#run: hugo -D- name: deployuses: peaceiris/actions-gh-pages@v3if: ${{ 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.luyixian.cn/news_show_73505.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

selenium基本操作

爬虫与反爬虫之间的斗争爬虫:对某个网站数据或图片感兴趣,开始抓取网站信息;网站:请求次数频繁,并且访问ip固定,user_agent也是python,开始限制访问;爬虫:通过设置user_a…

ifconfig不显示ipv4地址,ifconfig eth0 192.168.5.9失败

ifconfig eth0 192.168.5.9设置ip地址后,通过ifconfig仍然没有ipv4地址: 一、 执行ifup eth0启动eth0: ifconfig、ifup、ifdown :这三个命令的用途都是启动网络接口,不过,ifup 与 ifdown 仅就 /etc/sysconfig/network-…

【数据存储】浮点型在内存中的存储

目录 一、存储现象 二、IEEE标准规范 1.存储 2.读取 三、举例验证 1.存储 2.读取 浮点型存储的标准是IEEE(电气电子工程师学会)754制定的。 一、存储现象 浮点数由于其有小数点的特殊性,有很多浮点数是不能精确存储的,如&#…

阅读HAL源码之重点总结

HAL封装中有如下特点(自己总结的): 特定外设要设置的参数组成一个结构体; 特定外设所有寄存器组成一个结构体; 地址基本都是通过宏来定义的,定义了各外设的起始地址,也就是对应寄存器结构体的地…

优秀外贸业务员必备的业务技能

2023年的春天,可谓是外贸企业三年寒冬后的第一个春天。外贸行业离不开的就是优秀的外贸业务员,那么一个优秀的外贸业务员需要有哪些必备的技能呢?跟着我一起来看看吧!一、电话开发客户能力首先,要知道,声音…

【unittest学习】unittest框架主要功能

1.认识unittest在 Python 中有诸多单元测试框架,如 doctest、unittest、pytest、nose 等,Python 2.1 及其以后的版本已经将 unittest 作为一个标准模块放入 Python 开发包中。2.认识单元测试不用单元测试框架能写单元测试吗?答案是肯定的。单…

华为OD机试题,用 Java 解【最小施肥机能效】问题

最近更新的博客 华为OD机试 - 猴子爬山 | 机试题算法思路 【2023】华为OD机试 - 分糖果(Java) | 机试题算法思路 【2023】华为OD机试 - 非严格递增连续数字序列 | 机试题算法思路 【2023】华为OD机试 - 消消乐游戏(Java) | 机试题算法思路 【2023】华为OD机试 - 组成最大数…

无线通信时代的新技术----信标( Beacon)

随着IT技术的发展,无线通信技术也在不断发展。 现已根据预期用途开发了各种无线通信技术,例如 NFC、WIFI、Bluetooth和 RFID。 车辆内部结构的复杂化和数字化,车载通信网络技术的重要性也越来越高。 一个典型的例子是远程信息处理。 远程信息…

ESP32 Arduino EspNow点对点双向通讯

ESP32 Arduino EspNow点对点双向通讯✨本案例分别采用esp32和esp32C3之间点对点单播无线通讯方式。 🌿esp32开发板 🌾esp32c3开发板 🔧所需库(需要自行导入到Arduino IDE library文件夹中,无法在IDE 管理库界面搜索下载到该库)&am…

git cherry-pick could not apply fb2cde669...问题解决

最近多个分支修复bug,在使用git cherry-pick进行小功能合并时经常会出现类似could not apply fb2cde669...的错误。具体如下图:具体原因是cherry-pick指定的commit内容中和当前分支有冲突导致的。具体解决分以下步骤:1:首先使用gi…

京东前端二面必会vue面试题(持续更新中)

说一下Vue的生命周期 Vue 实例有⼀个完整的⽣命周期,也就是从开始创建、初始化数据、编译模版、挂载Dom -> 渲染、更新 -> 渲染、卸载 等⼀系列过程,称这是Vue的⽣命周期。 beforeCreate(创建前):数据观测和初…

spring(六)--------spring的扫描机制

spring的扫描一般可以通过两种方式: 测试类: Component public class Scan_A {PostConstructpublic void init(){System.out.println("-----------Scan_A");}} 1)、ComponentSscan注解 public class ComponentScanTest {public…

前端JS调用grpc服务(cpp)

参考文献:https://blog.csdn.net/qq_45634989/article/details/128151766依赖文件:protoc-v3-20.1.exe grpc_cpp_plugin.exe // 生成cpp中间文件protoc-gen-grpc-web.exe // 生成js中间文件grpcwebproxy-v0.13.0-win64 1.4.0.exe // 负责代理的端口映射新…

运营级手机直播平台源码 短视频直播带货APP源码

短视频直播带货APP源码 全开源原生直播APP源码 前端:原生APP 安卓端:Java 苹果端:OC 后台:PHP 数据库:Mysql 技术框架:Thinkphp5.1 系统特色功能包括:礼物系统;提现方式&#…

WAF:ModSecurity on Nginx(15)

预备知识 Nginx概述 Nginx ("engine x") 是一个高性能的HTTP和 反向代理 服务器,也是一个 IMAP/POP3/SMTP服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代…

指针的进阶【上篇】

文章目录📀1.字符指针📀2.指针数组📀3.数组指针💿3.1.数组指针的定义💿3.2. &数组名VS数组名💿3.3.数组指针的使用📀1.字符指针 int main() {char ch w;char* pc &ch;// pc就是字符指…

智慧物联网系统源码:一个用于数据的收集、处理、可视化、设备管理、设备预警、报警的平台

项目简介: 一个用于数据的收集、处理、可视化、设备管理、设备预警、报警的平台,通过平台将所有设备连接起来,为上层应用提供设备的管理、数据收集、远程控制等核心物联网功能。 支持支持远程对设备进行实时监控、故障排查、远程控制&#…

PPP点到点协议认证之PAP认证

PPP点到点协议认证之PAP认证 需求 如图配置接口的IP地址将R1配置为认证端,用户名和密码是 huawei/hcie ,使用的认证方式是pap确保R1和R2之间可以互相ping通 拓扑图 配置思路 确保接口使用协议是PPP确保接口的IP地址配置正确在R1 的端口上&#xff0c…

Pycharm远程服务器常见问题

2023年02月23日 问题描述&#xff1a;Pycharm远程服务器跑代码时&#xff0c;不小心把Pycharm关掉了&#xff0c;但服务器代码还在运行&#xff1f; 解决办法&#xff1a;kill进程 先用watch -n 0.5 nvidia_smi查看进程&#xff0c;然后kill -9 <进程> 1、nvidia-smi…

ip公司和soc公司是什么?

IP 公司和 SoC 公司都是半导体行业的重要组成部分&#xff0c;但它们的角色和职责略有不同。IP&#xff08;Intellectual Property&#xff09;公司主要提供可重用的知识产权组件&#xff0c;也称为 IP 核或 IP 模块&#xff0c;这些组件可以在设计芯片的过程中被集成到芯片中。…