配置Github Pages工作流和自定义域名

星期六, 5月 11, 2024 | 2分钟阅读 | 更新于 星期六, 5月 11, 2024

@

最近基于Hugo框架做了静态个人网站,使用github pages,搭配cloudflare免费版计划提供的一键CDN加速。一天之内完成了设计+开发+部署。也遇到了一些小问题,在此记录一下问题的具体情况以及解决的方法。

Hugo端的配置

相关文档已经很细致,安装和其他的一些细节不在此赘述。

  • 首先,基于ananke主题进行了小范围的修改,我的做法是将theme作为git的子模块(submodule),然后将theme目录下的布局目录(layout)复制到根目录下,然后在这里进行布局的修改,避免直接修改主题的源代码(因为直接修改主题的源代码会带来变动,在git树下会看到额外仓库的改动非常不舒服)。

  • 其次添加一些自定义的css和字体,用到了预处理语言sass(写起来会更舒服一点),如何编译、处理(合并)sass文件并引入到博客里。

引入样式:

<!-- 这里的意思是 读取 /assets目录下的 子目录/css下的所有scss文件编译合并为custom.css,然后压缩印上指纹 -->
{{ $style := resources.Match "css/**.scss" | resources.Concat "custom.css" | toCSS | minify | fingerprint }}
<link rel="stylesheet" href="{{ $style.Permalink }}" integrity="{{ $style.Data.Integrity }}" media="screen">

使用自定义字体:

  <style>
    @font-face {
      font-family: "GoodHood";
      src: url("/font/GoodHood.otf");
    }
  </style>

如果需要引入js文件参考上述处理css文件的做法。

Github端的配置

首先增加一个workflow:/.github/workflows/flow.yml:

# Sample workflow for building and deploying a Hugo site to GitHub Pages
name: Deploy Hugo site to Pages
on:
  push:
    branches:
      - main
  workflow_dispatch:
permissions:
  contents: read
  pages: write
  id-token: write
concurrency:
  group: "pages"
  cancel-in-progress: false

defaults:
  run:
    shell: bash

jobs:
  # Build job
  build:
    runs-on: ubuntu-latest
    env:
      HUGO_VERSION: 0.115.1
    steps:
      - name: Install Hugo CLI
        run: |
          wget -O ${{ runner.temp }}/hugo.deb https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.deb \
          && sudo dpkg -i ${{ runner.temp }}/hugo.deb                    
      - name: Install Dart Sass
        run: sudo snap install dart-sass
      - name: Checkout
        uses: actions/checkout@v3
        with:
          submodules: recursive
          fetch-depth: 0
      - name: Setup Pages
        id: pages
        uses: actions/configure-pages@v3
      - name: Install Node.js dependencies
        run: "[[ -f package-lock.json || -f npm-shrinkwrap.json ]] && npm ci || true"
      - name: Build with Hugo
        env:
          # For maximum backward compatibility with Hugo modules
          HUGO_ENVIRONMENT: production
          HUGO_ENV: production
        run: |
          hugo \
            --gc \
            --minify \
            --baseURL "${{ steps.pages.outputs.base_url }}/"                    
      - name: Upload artifact
        uses: actions/upload-pages-artifact@v1
        with:
          path: ./public
  # Deployment job
  deploy:
    environment:
      name: github-pages
      url: ${{ steps.deployment.outputs.page_url }}
    runs-on: ubuntu-latest
    needs: build
    steps:
      - name: Deploy to GitHub Pages
        id: deployment
        uses: actions/deploy-pages@v2

这样每次提交代码就能看到后续跟着一个action在执行了。

其次需要修改Workflow permissions,在路径settings/Actions/General下,设置为 这个配置:

图片

然后等待构建完成,打开https://{username}.github.io/{registryname}/即可访问博客了。

配置自定义域名

我这里选择增加两个DNS记录:A记录和CNAME记录。比如我要设置的域名是:jebben.cn;我的github用户名是anderlaw。

  • A:@:185.199.111.153(githubIP)
  • CNAME:www.jebben.cn:anderlaw.github.io

增加完毕后,一般至少需要等待几个小时,所以弄完明天再来看看github page页面上的域名检查是否正常,通过了就表示设置成功了。

© 2016 - 2025 Jebben 开发日志&网络随笔

🌱 Powered by Hugo with theme Dream.

关于博主

自我介绍

大家好,我是 Jabin,一名拥有 8 年工作经验的前端工程师。我是一个自学成才的开发者,通过不断学习和实践,积累了丰富的 web 端开发经验以及在 B 端后台管理、监控和 C 端教育、媒体类项目方面的丰富经验。

关于我的技能

我精通多种前端技术,包括但不限于:

  • JavaScript 和 TypeScript:我熟练掌握 JavaScript 和 TypeScript,能够利用它们构建出色的前端应用程序。
  • CSS:我对 CSS 有深入的理解,能够编写出美观、响应式的样式。
  • 前端框架:我熟练使用 Angular、React、Vue 和 Next.js 等前端框架,能够根据项目需求灵活选择并应用合适的技术栈。
  • 前端工具:我熟悉 webpack、Vite 等常用的前端打包工具,以及框架配套的 CLI 工具,能够高效地进行项目开发和部署。
  • 后端技术:我了解服务端语言 Java 和 Node.js,并能够与后端开发人员紧密合作,实现完整的应用程序。
  • 数据库和操作系统:我熟悉 SQL 数据库和 Linux 操作系统的常见操作和命令,能够进行数据库管理和服务器配置。

我的项目经验

我曾主导多个从零到一的项目,参与过数百万 UV 项目的开发,具有丰富的项目开发与团队合作经验。

我对技术充满热情,喜欢钻研新技术和解决复杂的技术问题。我还积极参与开源社区,贡献自己的力量,与各地的开发者共同探索和分享技术前沿。

结语

我是一个对技术认真负责、可靠可靠的人,热爱挑战和创新。我希望通过我的个人网站,与更多志同道合的人分享我的经验和见解,共同推动前端技术的发展和进步。

欢迎来到我的个人网站,期待与您的交流和合作!