天涯论坛

 找回密码
 立即注册
搜索
查看: 12|回复: 1

运用Hugo创立静态博客,并托管在Github Pages上

[复制链接]

2964

主题

144

回帖

9912万

积分

论坛元老

Rank: 8Rank: 8

积分
99129190
发表于 2024-10-3 05:24:42 | 显示全部楼层 |阅读模式

从netfily迁移到github pages

netfily被封

其实,早在3年前,我刚创立新博客的时候,便是托管在netfily上的,本博客的第1篇内容 《运用Hugo和Netlify创立静态博客,并托管在Github上》

https://www.zhangshengdong.com/post/hugo_and_netlify/ ,便是在写这件事。

火速,netfily的登陆因为用到了google的脚本,被大陆封了。只是针对像我这般的老用户,只是不可登录罢了,新文案依然能够自动从github仓库里同步发布,因此就没留意

可是两天前,我新写了一篇博客,本地hugo编译没问题,可是netfily却始终编译不成功。但即使翻墙,没法登录查看原由。只好起始思虑寻找新的托管网站。

运用github pages

在知乎上对比了一圈托管网站,发掘国内的大多要钱,设置繁杂。最方便运用的,好似便是github pages了。但这般一来,就了免费cdn,网页加载速度慢了许多。

github流水线

自动化流程

github pages最好是设置一个名为username.github.io的仓库。但很不巧的是,我的博客源码之前便是保留在我的blog仓库中。而github pages生成的二级域名,针对网站好似不太友好。因此只能设计一个自动化流程:

在源码blog仓库中,设置github action,自动编译静态网页;将编译出的public文件夹上传至新的BZ-coding组织的BZ-coding.github.io仓库;将BZ-coding.github.io仓库选取master分支自动发布github pages网页。

hugo github action

在blog仓新增自动编译hugo的github action:

# Sample workflow for building and deploying a Hugo site to GitHub Pages

name: Deploy Hugo site to Pages

on:

# Runs on pushes targeting the default branch

push:

branches: ["master"]

# Allows you to run this workflow manually from the Actions tab

workflow_dispatch:

# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages

permissions:

contents: read

pages: write

id-token: write

# Allow one concurrent deployment

concurrency:

group: "pages"

cancel-in-progress: true

# Default to bash

defaults:

run:

shell: bash

jobs:

# Build job

build:

runs-on: ubuntu-latest

env:

HUGO_VERSION: 0.102.3

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-64bit.deb \ && sudo dp公斤 -i ${{ runner.temp }}/hugo.deb

- name: Checkout

uses: actions/checkout@v3

with:

submodules: recursive

- name: Build with Hugo

run: |

echo "pwd is "

pwd

ls

hugo --minify --verbose

- name: Display

run: |

echo "github.workspace is ${{ github.workspace }}"

ls ${{ github.workspace }}

echo "github.workspace public is ${{ github.workspace }}/public"

ls ./public

- name: Deploy

uses: peaceiris/actions-gh-pages@v3

with:

deploy_key: ${{ secrets.ACTIONS_DEPLOY_KEY }} # 这儿的 ACTIONS_DEPLOY_KEY 则是上面设置 Private Key的变量名

external_repository: BZ-coding/BZ-coding.github.io # Pages 远程仓库

publish_dir: "./public"

keep_files: false # remove existing files

publish_branch: master # deploying

branch commit_message: ${{ github.event.head_commit.message }}

自动上传至网页发布仓

在上面脚本的最后,加入了把编译结果文件上传至另一个仓库的代码:

- name: Deploy

uses: peaceiris/actions-gh-pages@v3

with:

deploy_key: ${{ secrets.ACTIONS_DEPLOY_KEY }} # 这儿的 ACTIONS_DEPLOY_KEY 则是上面设置 Private Key的变量名

external_repository: BZ-coding/BZ-coding.github.io # Pages 远程仓库

publish_dir: "./public"

keep_files: false # remove existing files

publish_branch: master # deploying

branch commit_message: ${{ github.event.head_commit.message }}

其中,需要把目的账号里的ssh公钥,对应的私钥,配置在blog仓库的secrets里。

并且,这边的上传,此刻好似不可分成两个job,否则好似会public里为空。

配置自动发布网站和自定义域名

把网页发布仓

BZ-coding/BZ-coding.github.io,里的github pages配置成master的根目录。

而后在BZ-coding账号里验证zhangshengdong.com域名之后,就能够在github pages配置的自定义域名里配上www.zhangshengdong.com了。还能够强制打开https。

处理自定义域名自动消失的问题

然则随后发掘,每次网页代码更新后,BZ-coding.github.io的自定义域名就会消失。

经搜索,得知,要在生成的网站根目录里添加CNAME文件,文件内容就写你想自定义的域名就行,例如www.zhangshengdong.com 。





上一篇:Github Action协同Hexo连续集成博客
下一篇:举荐GitHub上开源的Java编写的博客项目
回复

使用道具 举报

3045

主题

3万

回帖

9606万

积分

论坛元老

Rank: 8Rank: 8

积分
96065860
发表于 2024-10-19 20:46:56 | 显示全部楼层
感谢楼主分享,祝愿外链论坛越办越好!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

站点统计|Archiver|手机版|小黑屋|天涯论坛 ( 非经营性网站 )|网站地图

GMT+8, 2024-11-22 16:44 , Processed in 0.126549 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.