通过 Github workflows CI/CD 自动化部署 Github Pages hugo 免费博客

news2024/11/23 7:26:55

通过 Github workflows CI/CD 自动化部署 Github Pages hugo 免费博客

文章博客地址:https://blog.taoluyuan.com/posts/github-workflows/

Github Workflows 介绍

GitHub Actions 介绍

  • GitHub 文档:https://docs.github.com/zh/actions/learn-github-actions/understanding-github-actions
  • 官方介绍:GitHub Actions 是一种持续集成和持续交付 (CI/CD) 平台,可用于自动执行生成、测试和部署管道。 您可以创建工作流程来构建和测试存储库的每个拉取请求,或将合并的拉取请求部署到生产环境

流程及原理介绍

  • 本文主要介绍使用GitHub Actions 来实现自动化部署博客网站 ,静态网站生成使用的是Hugo,部署使用的是Github pages,并且使用自定义域名。
  1. 本地写hugo-blog 博客,hugo-blog 是一个hugo的博客模板,使用hugo new site hugo-blog命令创建,可以在里面写markdown文件
  2. 写好后推送到github hugo-blog 仓库,触发github actions ci/cd,执行hugo命令生成静态网站,并且推送到github-pages 仓库
  3. github-pages 仓库接收到推送后,会自动部署到github pages,公网可以通过 github pages 域名 访问,也可以通过CNAME配置自定义域名访问

Github Pages 介绍

  • Github Pages 是一个静态网站托管服务,可以通过github pages 托管静态网站,并且可以通过自定义域名访问
  • 创建github pages 仓库,仓库名必须是username.github.io格式,username是你的github用户名,仓库名必须是这个,否则无法部署成功 访问地址就是 https://username.github.io
  • 自定义域名访问,例如www.abc.com,在域名服务商添加CNAME记录,指向username.github.io, 然后在github pages 仓库设置中添加自定义域名, 这样通过www.abc.com 就能访问github pages
  • 下面的 Actions 部分会介绍如何自动化部署到github pages,并且配置自定义域名

Hugo 介绍

  • Hugo 是一个静态网站生成器,可以通过markdown文件生成静态网站,官网:https://gohugo.io/
  • 写好markdown文件后,执行hugo命令,在public目录生成静态网站,然后 将public目录推送到github pages 仓库
  • github actions工作流 就是通过hugo命令生成静态网站,并且推送到github pages 仓库

使用 Github Actions 自动化部署

创建 Github Actions

在github 仓库中(hugo-blog)创建.github/workflows目录,并且在目录中创建deploy.yml文件,文件名可以自定义,但是后缀必须是yml,例如deploy.yml,这样就创建了一个github actions,并且会自动执行,下面介绍我的deploy.yml文件

name: deploy

on:
    push:
    workflow_dispatch:
jobs:
    build:
        runs-on: ubuntu-latest
        steps:
            - name: Checkout
              uses: actions/checkout@v2
              with:
                  submodules: true
                  fetch-depth: 0

            - name: Setup Hugo
              uses: peaceiris/actions-hugo@v2
              with:
                  hugo-version: "latest"

            - name: Build Web
              run: hugo

            - name: Deploy Web
              uses: peaceiris/actions-gh-pages@v3
              with:
                  PERSONAL_TOKEN: ${{ secrets.BLOG_TOKEN }}
                  EXTERNAL_REPOSITORY: webws/webws.github.io
                  PUBLISH_BRANCH: master
                  PUBLISH_DIR: ./public
                  commit_message: ${{ github.event.head_commit.message }}
                  cname: ${{ secrets.DOMAIN }}

上面 GitHub Actions配置文件用于自动部署Hugo博客到我的 GitHub Pages。以下是每个步骤的功能和解释:

步骤1:Checkout

此步骤使用 actions/checkout 插件来检出 GitHub 仓库,具体使用文档地址是 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8llNKDNw-1685421845358)(null)]
submodules: true 参数用于同时检出子模块,fetch-depth: 0 用于完整地检出所有历史记录。

步骤2:Setup Hugo

此步骤使用 peaceiris/actions-hugo 插件来安装最新版本的 Hugo。

- name: Setup Hugo
  uses: peaceiris/actions-hugo@v2
  with:
    hugo-version: "latest"

步骤3:Build Web

此步骤在运行时调用 Hugo 构建静态网站,并在 public 目录中生成静态html文件

- name: Build Web
  run: hugo

步骤4:Deploy Web

此步骤使用 peaceiris/actions-gh-pages 插件将静态网站部署到 GitHub Pages 上。

- name: Deploy Web
  uses: peaceiris/actions-gh-pages@v3
  with:
    PERSONAL_TOKEN: ${{ secrets.BLOG_TOKEN }}
    EXTERNAL_REPOSITORY: webws/webws.github.io
    PUBLISH_BRANCH: master
    PUBLISH_DIR: ./public
    commit_message: ${{ github.event.head_commit.message }}
    cname: ${{ secrets.DOMAIN }}

参数的含义:

  • PERSONAL_TOKEN: GitHub Personal Access Tokens 用于访问 GitHub 仓库,需要 到[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Aw7AxQxq-1685421847201)(null)] ,添加权限 并将Token存储在仓库的 Secrets 中以供 Workflow 使用
  • EXTERNAL_REPOSITORY: 部署到的 GitHub Pages 仓库,webws/webws.github.io 是我的github pages 仓库,需要修改为你的github pages 仓库
  • PUBLISH_BRANCH: 要在其上部署站点的分支名称(通常为master)。
  • PUBLISH_DIR: hugo 静态html文件目录。(在此例中,Hugo 输出位于 ./public 目录中)。
  • commit_message: 提交更改时使用的提交消息,从上游分支获取。
  • cname: 自定义域名,CNAME记录,我自己的是 blog.taoluyuan.com,需要修改为你的自定义域名,如果没有,可以删除这个参数,使用默认的github pages域名也访问 webws.github.io

设置 Secrets 变量,对应 yml 文件中的 PERSONAL_TOKEN 和 DOMAIN ,具体设置 在 仓库中(hugo-blog) 的 Settings -> secrets and variables->actions 中,hugo-blog 要换成你自己的仓库名

  • BLOG_TOKEN: GitHub Personal Access Token。
  • DOMAIN: 你的自定义域名。

触发 Github Actions

  • 在github 仓库中(hugo-blog)创建.md文件,并且提交到github,这样就会触发github actions,自动部署到github pages 仓库,并且可以通过自定义域名访问了
  • 可以通过 仓库中 Actions 标签查看部署状态

访问 Github Pages

  1. 通过github pages域名访问, https://webws.github.io,因为我设置了自定义域名,所以这个域名会自动跳转到 https://blog.taoluyuan.com
  2. 通过自定义域名访问, https://blog.taoluyuan.com

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

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

相关文章

相机的畸变矫正与opencv代码说明

相机的畸变矫正与opencv代码说明 简介鱼眼模型的畸变校正针孔模型的畸变校正 简介 图像算法中会经常用到摄像机的畸变校正,有必要总结分析OpenCV中畸变校正方法,其中包括普通针孔相机模型和鱼眼相机模型fisheye两种畸变校正方法。普通相机模型畸变校正函…

机器人专业讲师与科技的转型思考

2023年以前,编程需要学习各种语法,现在只需要提示词。 未来还需要编程老师吗?需求一定越来越少。 “ Prompting TurtleSim from ChatGPT ” https://github.com/mhubii/chatgpt_turtlesim The demo lets ChatGPT call into ROS services …

左孩子右兄弟路径之谜

题目 对于一棵多叉树,我们可以通过 “左孩子右兄弟” 表示法,将其转化成一棵二叉树。 如果我们认为每个结点的子结点是无序的,那么得到的二叉树可能不唯一。 换句话说,每个结点可以选任意子结点作为左孩子,并按任意顺序…

开源版社区团购系统源码 含小程序完整前后端+搭建教程+私有化部署

分享一个社区团购系统源码,源码开源可自由二开,含小程序完整前后端和详细的搭建教程,可私有化部署终身使用,功能界面diy团长供应商拼团秒杀优惠券菜谱积分群接龙充值预售配送等功能。 系统功能一览: 1、商品&#xf…

企业级应用:检测服务是否正常运行

1.说明: 在公司日常小项目中,会遇到一些小需求,比如:检测服务是否正常运行。 当一个经验不是很足的项目经理,让你写一个接口,然后检测服务是否正常运行啦。 然后你说阿里云有自动检测的接口,…

一文说明ROS中URDF和SRDF分别是什么

文章目录 前言一、功能作用说明URDFSRDF 二、样例文件说明URDF文件例子SRDF文件例子 总结 前言 URDF全称为Unified Robot Description Format,中文可以翻译为“统一机器人描述格式”。与计算机文件中的.txt文本格式、.jpg图像格式等类似,URDF是一种基于…

浅谈TCP IP协议(二)IP地址

上一节大致了解TCP/IP协议栈是个啥东西,依旧是雾里看花的状态,有很多时候学一门新知识时,开头总是很急躁,无从下手,刚学会一点儿,却发现连点皮毛都不算,成就感太低,所以任何时候学习…

JavaScript 中的 Window.open() 用法详解

文章目录 1 方法介绍2 参数说明3 使用示例3.1 当前窗口中打开网页3.2 新窗口中打开网页3.3 在独立窗口中打开一个指定大小和位置的网页 1 方法介绍 window.open() 方法是 JavaScript 中的一个内置方法,用于在浏览器中打开一个新的窗口或标签页。 这个方法的语法是…

《五》 Git 中的标签和分支

标签 tag: Git 可以给仓库中某一次 commit 的提交打上标签。对于重大的版本经常会打上一个标签来表示它的重要性。 创建标签: git tag【tag 名称】:创建标签。 查看标签: git tag:查看标签。 推送标签到远程仓库…

【计算机视觉 | 目标检测】arxiv 计算机视觉关于目标检测的学术速递(5月30日论文合集)

文章目录 一、检测相关(16篇)1.1 Contextual Object Detection with Multimodal Large Language Models1.2 Towards minimizing efforts for Morphing Attacks -- Deep embeddings for morphing pair selection and improved Morphing Attack Detection1.3 Mining Negative Tem…

Pytorch CIFAR10图像分类 ShuffleNet篇

Pytorch CIFAR10图像分类 ShuffleNet篇 文章目录 Pytorch CIFAR10图像分类 ShuffleNet篇4. 定义网络(ShuffleNet)Channel Shuffle网络单元 Shuffle UnitShuffleNet 网络结构summary查看网络测试和定义网络 5. 定义损失函数和优化器6. 训练及可视化&#…

「教程」微信小程序获取经纬度查询天气预警信息

使用天气预警API 可以帮助人们及时获取和了解天气预警信息,以便采取相应的措施来保护自身和财产。天气预警通常是由气象部门或相关机构发布的,用于提醒公众可能出现的极端天气或自然灾害,如暴雨、洪水、台风、暴风雪、雷暴、高温、低温、霜冻…

LNMT架构之LNMT与nginx动静分离

LNMT架构之LNMT与nginx动静分离 目录 一、实验前提环境配置 (一)关闭防火墙,安装本地yum (二)部署tomcat (三)部署Mariadb (四)部署nginx 二、动静分离 步骤一&a…

Django实现接口自动化平台(二)认证授权【持续更新中】

上一章: Django实现接口自动化平台(一)日志功能【持续更新中】_做测试的喵酱的博客-CSDN博客 下一章: 一、认证与授权配置 1、认证:获取权限的方式 2、授权:通过认证之后,可以获取哪些权限 …

【大数据分析】Hbase的基本原理

目录 Hbase 架构ClientZooKeeperMasterRegionServerHRegionStoreMemStoreStoreFileHFileHLog Hbase数据模型关于数据模型的其他概念Name SpaceTableRowColumnTime StampCell Hbase 架构 Client (1).META.表,记录了用户所有表拆分出来的 Regi…

ESP32设备驱动-TMP006 红外热电堆传感器驱动

TMP006 红外热电堆传感器驱动 文章目录 TMP006 红外热电堆传感器驱动1、TMP006介绍2、硬件准备3、软件准备4、驱动实现1、TMP006介绍 Texas Instruments 的 TMP006 是一系列温度传感器中的第一款,无需接触物体即可测量物体的温度。 它使用非常灵敏的热电堆来测量从物体表面发…

怎么给视频配音?视频配音软件有哪些?

视频配音在日常生活中被广泛应用,比如在电影解说、游戏解说、纪录片视频等领域,可以帮助创作者更好地表达自己的视频内容,提高视频的吸引力和感染力。很多小伙伴也想学习怎么给视频配音,但不清楚视频配音教程哪个好?没…

解密服务性能利器:Pyroscope让你的应用飞起来

开发人员通常需要查看生产应用程序中的性能瓶颈以确定问题的原因。为此,您通常需要可以通过日志和代码工具收集的信息。不幸的是,这种方法通常耗时,并且不能提供有关潜在问题的足够详细信息。 一种现代且更先进的方法是应用和使用分析技术和工…

Camunda如何利于性能指标优化流程性能

Camunda 提供了一系列性能指标,以帮助用户评估和优化其业务流程的性能。以下是 Camunda 提供的一些常见性能指标: 1、流程执行时间(Process Execution Time):指从流程实例启动到完成的时间。 2、流程实例数&#xff…

共同成长 合力致远,就在2023亚马逊云科技合作伙伴峰会

在云计算蓬勃发展的今天,在推动业务发展、实现共赢的过程中,价值成就,是亚马逊云科技对合作伙伴自始至终的承诺。为助力合作伙伴成就价值,共建成长路径,2023亚马逊云科技合作伙伴峰会将于6月27日在上海世博中心重磅启幕…