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

这篇具有很好参考价值的文章主要介绍了通过 Github workflows CI/CD 自动化部署 Github Pages hugo 免费博客。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

通过 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,并且使用自定义域名。
    通过 Github workflows CI/CD 自动化部署 Github Pages hugo 免费博客
  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 仓库,具体使用文档地址是 checkout
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 要换成你自己的仓库名文章来源地址https://www.toymoban.com/news/detail-469183.html

  • 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

到了这里,关于通过 Github workflows CI/CD 自动化部署 Github Pages hugo 免费博客的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • CI/CD:GitLab-CI 自动化集成/部署 JAVA微服务的应用合集

    日常开发中,每次代码编写完成后,都需要手动打包,并且上传服务器,无论本地打包的时间或者上传文件到服务器都需要花费大量的时间来完成,都是重复的并且毫无意义,应该将时间花费在更有价值的时间上;所以编写这篇文章,将自己收集、搭建、测试的步骤或经验汇

    2024年02月08日
    浏览(41)
  • 《DevOps企业级CI/CD实战》:一站式掌握DevOps核心方法论,实现高效自动化部署

    DevOps是一组实践,由人、工具和文化理念组成。DevOps的核心是实现软件开发团队和IT运维团队之间的流程自动化。自2018年起,笔者参与了大型企业中多个项目的DevOps项目实施和改进,从中积累了丰富的实践经验。于是将实践思考与开发经验整理成一本书分享给同路人共同学习

    2024年04月14日
    浏览(58)
  • 微服务 & 云原生:基于 Gogs + Drone 实现 CI/CD 自动化

    以一个简单的前后端项目来说,分别编写前后端的 Dockerfile 文件并构建镜像,然后编写 docker-compose.yml 构建部署,启动运行。每次代码变更后都需重新手动打包、构建、推送。 一个简单的例子: 前端: 项目名:kubemanagement-web 技术栈:Vue 后端: 项目名:kubemanagement 技术栈:

    2024年02月13日
    浏览(35)
  • 在 CI/CD流水线中运行自动化单元测试的4个原因

    目录 什么是单元测试? C#中的单元测试示例 我需要在CI/CD 流水线中运行自动化测试吗? 开发人员代码验证反馈循环 预验证 步步为营 减少“另一个开发人员写了这段代码”的问题 单元测试 什么是单元测试? 单元测试是一小段代码,用于测试应用程序编写的代码的逻辑。单

    2024年02月16日
    浏览(69)
  • 基于Docker构建CI/CD工具链(七)使用Jmeter进行自动化压测

    上一篇文章中,我们详细介绍了构建 Apifox Cli 的 Docker 镜像的步骤,并通过简单的示例演示了如何利用 GitLab 的 CI/CD 功能,将构建好的镜像利用在自动化测试作业中。在今天的文章中,我们将重点讨论如何构建 JMeter 的 Docker 镜像,并演示如何在 GitLab 的 CI/CD 作业中利用该镜像

    2024年04月16日
    浏览(48)
  • 通过 Postman+Newman+Jenkins 进行接口自动化测试和进一步实现 CI

    目录 前言: Postman 部分 Collection 或者说测试集的建立 Postman 使用详解 测试工具 mock server Newman 的安装和使用 newman 的使用 对 SSL 的支持 newman 第三版以后(目前已经是 4.3.1)可以支持通过 CLI 选项来支持 SSL 对 newman 配置代理:通过对 Postman 的 request 环境变量进行设置来完成代

    2024年02月16日
    浏览(40)
  • uni-app 微信小程序CI机器人自动化部署方案

    1. 微信公众平台上,在开发设置里面小程序代码,将上传代码的服务IP地址填充下,生成一个上传秘钥下载下来 2. 将下载的秘钥文件放在uni-cli 项目的根目录下 3. npm 微信官方的miniprogram-ci模块 4. 把上面的代码写到一个js 文件放在项目根目录下 5. 在package.json里面写好打包和启

    2024年02月15日
    浏览(48)
  • Github 自动化部署

    官方地址 点击进入 注册/登录 .githubworkflows 固定不变 develop.yml 文件名自定义 变量解释 secrets 是定义在github中的变量 通过 secerts.变量名 来取值 steps steps 是github action的 create_release 是上一个步骤的 id outputs.upload_url 是上一个步骤的返回结果 仓库地址:https://github.com/yi-

    2024年02月03日
    浏览(41)
  • Github 自动化部署到GitHub Pages

    前言 github仓库示例: automated-deployment 1.准备工作 新建仓库 新建项目 配置 vite.config.ts 部署应用包时的基本URL,例:vue-cli 5.x 配置 publicPath 推送到远程仓库 2.配置 GitHub Token 点击 Settings - Actions - General 找到 Workflow permissions,选中第一项并保存 工作流默认是没有推送代码的权限,

    2024年02月05日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包