惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Stack Overflow Blog
Stack Overflow Blog
T
Tor Project blog
Hacker News - Newest:
Hacker News - Newest: "LLM"
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
P
Palo Alto Networks Blog
T
The Exploit Database - CXSecurity.com
P
Privacy International News Feed
C
Cybersecurity and Infrastructure Security Agency CISA
MyScale Blog
MyScale Blog
D
DataBreaches.Net
I
Intezer
GbyAI
GbyAI
Jina AI
Jina AI
The GitHub Blog
The GitHub Blog
S
Security @ Cisco Blogs
C
Cyber Attacks, Cyber Crime and Cyber Security
NISL@THU
NISL@THU
Project Zero
Project Zero
博客园_首页
Martin Fowler
Martin Fowler
A
About on SuperTechFans
J
Java Code Geeks
AI
AI
WordPress大学
WordPress大学
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
L
LINUX DO - 热门话题
云风的 BLOG
云风的 BLOG
腾讯CDC
酷 壳 – CoolShell
酷 壳 – CoolShell
C
Cisco Blogs
L
LangChain Blog
Google Online Security Blog
Google Online Security Blog
AWS News Blog
AWS News Blog
Help Net Security
Help Net Security
Application and Cybersecurity Blog
Application and Cybersecurity Blog
D
Docker
N
Netflix TechBlog - Medium
Know Your Adversary
Know Your Adversary
D
Darknet – Hacking Tools, Hacker News & Cyber Security
S
Secure Thoughts
H
Heimdal Security Blog
Recent Commits to openclaw:main
Recent Commits to openclaw:main
O
OpenAI News
S
Security Affairs
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园 - 【当耐特】
雷峰网
雷峰网
V
Visual Studio Blog
T
Threat Research - Cisco Blogs

顾宇的博客

用 AI 重启生活 初始化 MacOS 关于我 再次见面,期待相遇 演讲和分享 如何通过政策红利获利?——海南发展(SZ.002163)交易复盘 2025年的总结 2024年的总结 2023年的总结 2022年的总结 《敏捷测试价值观、方法与实践》序 【翻译】函数式编程中的领域驱动设计 【翻译】通过跟踪技术债来改进你的开发实践 【翻译】不要把测试用例自动化 【翻译】持续部署 vs 持续交付 【翻译】测试替身 【翻译】做多少测试才足够 【翻译】蓝绿部署的起源 【翻译】持续部署 【翻译】作为演进式架构的微服务架构 【翻译】gRPC 的动机和设计原则 【翻译】分布式计算谬误 【翻译】微服务和分布式对象第一法则 采用 Multipass 管理本机虚拟 K8S 集群 博客主题升级到 Congo 2.0 【翻译】Terraform 最佳实践:模块组合 【翻译】Kubernetes 部署语言(Kubernetes Deployment Language) 通过 Vagrant 一键初始化 K8S 集群 2021年的总结 通过 Github Actions 部署 Mkdocs 文档 2020年的总结 2019年的总结 千人规模组织级 DevOps 演进的 9 个实践技巧 从技术雷达看 DevOps 的十年——容器技术与微服务 DevOps 模式 - 引入 DevOps 顾问 DevOps 模式 - 索引 DevOps 模式 - 定义你的DevOps 从技术雷达看 DevOps 的十年——基础设施即代码与云计算 DevOps 模式 - 采用模式语言讨论 DevOps 从星巴克店面运营学习 DevOps 从技术雷达看 DevOps 的十年——DevOps与持续交付 【翻译】微服务安全:所有应该被问到的问题 云原生下的 DevSecOps 实践 【翻译】软件定义交付宣言 微服务演进中的经验和反思 迟到的 2018 年终总结 成功微服务实施的组织演进 从第19期技术雷达看 DevOps 的发展趋势 成功微服务实施的技术演进 我们如何衡量微服务的成功? 关于四周四 AWS 架构工作坊的设计和实践 讨论微服务之前,你知道微服务的 4 个定义吗? 公有云(AWS)上的生产环境架构优化案例和迁移套路总结 公有云(AWS)上的生产环境性能分析案例 一怒之下,我又写了一个开源流量测试工具 采用 DevOps 故事落地 DevOps 测试驱动开发 Nginx 配置 云原生 DevOps 翻译-混沌工程的原则 Serverless 风格的微服务的持续交付 从最新一期技术雷达看 DevOps 的发展 关于 DevOps ,咱们聊的可能不是一回事 Serverless 风格的微服务的架构案例 提升微服务实施效率的 7 个步骤 微服务实施常被忽视的 5 个难点 你的 CI 在挖矿吗? DevOps前世今生 - 4. DevOps 的文化 DevOps发展的九个趋势 不要让你的持续集成服务器成为安全隐患 DevOps 前世今生 - 3. DevOps 的目标和核心 DevOps 前世今生 - 2. DevOps 矛盾从何而来 DevOps 前世今生 - 1. DevOps 编年史
博客迁移到了新的 Hugo 主题
顾宇 · 2021-12-11 · via 顾宇的博客
  1. 顾宇的博客/
  2. Blogs/
  3. 博客迁移到了新的 Hugo 主题/

你现在看到的主题就是我的博客最新的主题 Congo,这些天一直没更新博客的主要原因是一直在寻找一个简洁明快的博客主题,最后就它了!(不过说不定未来还会换)

于是我就花了半天时间把原来 Github Pages 上的博客迁移到了这个主题上,并采用了 Github Action 发布我的博客,以下是迁移步骤:

  1. 备份内容,并做一个全量删除提交
  2. 采用 Hugo 新建一个新的博客
  3. 安装 Congo 主题
  4. 采用 Github Actions 部署博客
  5. 覆盖配置,而不要修改
  6. 迁移旧的文章和图片

1. 备份内容,并做一个全量删除提交 #

一个博客的核心内容是图片和文章。这些内容在static目录和content目录下,把这些内容保存出来就好。

然后,通过 git rm -rf --ignore-unmatch *删除所有内容,并删除空的目录。

这时候创建一个删除提交,你就有之前删除内容的全量备份了。如果想恢复,只需要 git revert即可。

2. 采用 Hugo 新建一个新的博客 #

这时候你的目录是空的,你就可以执行hugo new site .重新建立一个站点了,这条命令默认会生成一个没有主题的空结构。

这个时候,你要提交一次,用于跟踪后续的主题和配置的修改。

3. 安装 Congo 主题 #

参考 https://jpanther.github.io/congo/docs/installation/ 的安装文档,里面有三种安装方式,分别是:

  1. 采用 Hugo (推荐)
  2. 采用 Git Submodule
  3. 下载静态文件

我采用了第三种方式下载了静态文件解压的方式来安装主题,简单粗暴,避免我想要更新时忘记一些配置,这样可以减少很多 git 或 hugo 的配置工作。

别忘了删除theme下面的exampleSite,节省一些空间。

这时候通过hugo server预览一下站点,看看主题是否正确加载,然后做一个提交。

4. 采用 Github Actions 部署博客 #

站点恢复的第一步是进行一次 push,并且发布站点。这时候我建议采用 Github Action 来自动化部署。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
name: github pages

on:
  push:
    branches:
      - main  # Set a branch to deploy
  pull_request:

jobs:
  deploy:
    runs-on: ubuntu-20.04
    steps:
      - uses: actions/checkout@v2
        with:
          submodules: true  # Fetch Hugo themes (true OR recursive)
          fetch-depth: 0    # Fetch all history for .GitInfo and .Lastmod

      - name: Setup Hugo
        uses: peaceiris/actions-hugo@v2
        with:
          hugo-version: 'latest'
          # extended: true

      - name: Build
        run: hugo --minify

      - name: Deploy
        uses: peaceiris/actions-gh-pages@v3
        if: github.ref == 'refs/heads/main'
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          publish_dir: ./public

提交后你就可以看到 Github Actions 里多了一个 Workflow,如下图所示:

Github Actions 执行部署任务

5. 修改 Github Pages 配置 #

  • github pages 默认推荐采用gh-pages分支来存放静态站点的内容。gh-pages.yml里的配置已经会帮你把生成的文件提交到gh-pages分支上。所以,要在代码库的 Settings 里的 Pages 里设置采用 gh-pages 分支发布你的站点。如下图所示:
Github Pages 配置界面
  • 这时候,如果你需要用自己的域名增加 CNAME 记录,你就要额外在 static目录下创建CNAME文件,里面只需要写入你的域名。并且在上图的配置中填入你的 CNAME。

6. 覆盖配置,而不要修改 #

congo 的配置都放在主题目录下的config/_default目录下,包含几个 toml 文件。每个 toml 文件都是根目录下的 config.toml 文件里的一个配置项及其子项。

根据最新版本 Hugo 的配置合并规则,你可以选择把主题内的配置合并到最终的配置中。Hugo 会先加载根目录的config.toml文件,然后会进入主题加载主题内的配置文件,最后合并成一个配置。

接下来我们要覆盖一些配置,我们把需要覆盖的配置全部复制到根目录的config.toml文件内。你可以参考我的配置文件

这里分享有几个配置中的坑:

采用 Profile 的布局需要新建 _index.md 文件 #

Congo 有三个布局:page、profile和custom(自定义)三种

我的主页就是 profile 模式,会显示作者的基本信息和头像。

如果要开启首页,需要在content文件夹下增加 _index.md文件。

开启 i18n 的中文名称 #

Hugo 没有简体中文(zh-cn)和繁体中文(zh-tw)的配置,统一只有 zh 配置。在主题的i18里有各种配置的中文配置。同时别忘了打开 Hugo 自身的hasCJKLanguage = true。否则,阅读时间和字数统计会不准确。

1
2
3
languageCode = 'zh'
defaultContentLanguage = 'zh'
hasCJKLanguage = true

在线编辑 #

这个是我很喜欢的一个功能,这样就可以点击博客标题下方的图标进入编辑模式,如下图所示:

编辑图标

点击这个图标默认会跳转到这篇文档的原始 markdown,这样当你在 Web 上提交之后,Github Actions 会自动帮你部署。不需要一定要有笔记本电脑在手边。

配置项如下:

1
2
3
[params.article]
  showEdit = true
  editURL = "https://github.com/wizardbyron/wizardbyron.github.io/tree/main/content"

注意,编辑的 URL 是 Github 上的content 目录,不要仅仅写 github 仓库地址,这个主题不会帮你补全。

7. 迁移旧的文章和图片 #

最后,将之前的博客文章和照片迁移到最新的目录下,在本地验证后再批量提交。Github Actions 会帮你部署新的站点。

这样,我的博客就迁移完了。

最后 #

静态站点工具很多,不同的语言都有自己的静态站点生成工具。所谓"写博客半天,找主题两天",最近找到了更轻量级的静态内容工具 mkdocs,未来我会分享这个更轻量级的工具。