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

推荐订阅源

AI
AI
TaoSecurity Blog
TaoSecurity Blog
H
Heimdal Security Blog
Help Net Security
Help Net Security
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Microsoft Azure Blog
Microsoft Azure Blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Google DeepMind News
Google DeepMind News
爱范儿
爱范儿
The Cloudflare Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
人人都是产品经理
人人都是产品经理
大猫的无限游戏
大猫的无限游戏
N
News | PayPal Newsroom
V2EX - 技术
V2EX - 技术
博客园 - 【当耐特】
D
Darknet – Hacking Tools, Hacker News & Cyber Security
S
Secure Thoughts
C
CERT Recently Published Vulnerability Notes
罗磊的独立博客
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
P
Privacy & Cybersecurity Law Blog
有赞技术团队
有赞技术团队
S
Schneier on Security
S
SegmentFault 最新的问题
Google Online Security Blog
Google Online Security Blog
H
Hacker News: Front Page
The Last Watchdog
The Last Watchdog
Schneier on Security
Schneier on Security
PCI Perspectives
PCI Perspectives
IT之家
IT之家
Project Zero
Project Zero
博客园 - 司徒正美
P
Privacy International News Feed
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Jina AI
Jina AI
Security Latest
Security Latest
Hacker News - Newest:
Hacker News - Newest: "LLM"
腾讯CDC
C
CXSECURITY Database RSS Feed - CXSecurity.com
阮一峰的网络日志
阮一峰的网络日志
C
Check Point Blog
aimingoo的专栏
aimingoo的专栏
V
Vulnerabilities – Threatpost
W
WeLiveSecurity
NISL@THU
NISL@THU
Webroot Blog
Webroot Blog
N
Netflix TechBlog - Medium
L
Lohrmann on Cybersecurity

梓言堂 - Yuk's Blog

使用Obsidian优雅地写Hugo博客文章 魔改PaperMod主题和博客改动 Android 提取boot.img 并安装Magisk Android抓包和中间人攻击实现HTTP数据拦截篡改 脚本助手:云手机上跑脚本的好伙伴 Caddy搭建Typecho并用脚本监控重启 Sony Xperia XZ1(G8342)强刷笔记 Android软件数据备份以及管理优化 记一次使用Crontab的错误排查 以更低的价格购买和续费域名 使用AirtestIDE和iOS-Tagent实现iOS端自动化测试 Python虚拟环境大杂烩
从Wordpress迁移到Hexo,我都做了些什么
Yuk · 2023-01-12 · via 梓言堂 - Yuk's Blog

前言

目前主流的博客大体分成动态博客和静态博客,相比于动态博客,静态博客基本不需要维护,也不依赖数据库等工具,降低了风险。有着众多免费部署的方案,成本低。

但也有其不便之处,像后台管理等没有动态博客方便,一些需求需要借助于其他平台实现,例如评论功能等。

迁移的契机是学习了下GitHub Actions,可以很方便的实现持续集成和部署(CI/CD),况且自己购买的VPS搭建WordPress下来访问速度并不满意。

过了这么多年,当年使用过一段时间的Hexo仍然流行,咱就接着用这个静态框架吧。

迁移数据

官方文档写的清楚了 从WordPress迁移

# 安装hexo-migrator-wordpress插件
$ npm install hexo-migrator-wordpress --save
# 迁移所有文章,<source>是WordPress导出的文件路径,(“Tools” → “Export” → “WordPress”)
$ hexo migrate wordpress <source>

手工审阅所有生成的markdown文件,检查其中是否有错误。

利用Github Actions实现持续集成和部署(CI/CD)

Github Actions介绍

大家知道,持续集成由很多操作组成,比如抓取代码、运行测试、登录远程服务器,发布到第三方服务等等。GitHub 把这些操作就称为 actions。

很多操作在不同项目里面是类似的,完全可以共享。GitHub 注意到了这一点,想出了一个很妙的点子,允许开发者把每个操作写成独立的脚本文件,存放到代码仓库,使得其他开发者可以引用。

如果你需要某个 action,不必自己写复杂的脚本,直接引用他人写好的 action 即可,整个持续集成过程,就变成了一个 actions 的组合。这就是 GitHub Actions 最特别的地方。

阮一峰 GitHub Actions 入门教程 这里只引用了个介绍,具体语法教程文中也有,感兴趣的也可以学习下。

以前我们都是在本地环境下用hexo g && hexo s 来生成和启动博客的,效果满意后hexo dpublish文件夹pushGithub Pages的仓库里来实现博客的更新。

这种方法因为只上传了本地生成好的静态网页文件,不能追踪博客框架自身配置代码文件,本地环境迁移麻烦,临时换一台设备更新博客就捉急了。

使用Github Actions后,我们只需要将博客整个项目代码上传,它将自动调用hexo g生成静态文件并部署,实现了整个项目的追踪。

具体使用

这里我们会用到两个仓库。 一个私人仓库blog-source,用来存储整个博客项目代码的。 一个公开仓库github-name.github.io,用来存储生成的静态文件,github-name就是你Github用户名,这里我就是Yuk-0v0.github.io

首先本地项目根目录中创建.github/workflows/hexo-deploy.yml文件。

# .github/workflows/hexo-deploy.yml
name: hexo deploy

# main分支push的时候触发
on:
  push:
    branches:
      - main
  
jobs:
  build:
    # 配置运行环境,这里用的是ubuntu
    name: Build on node ${{ matrix.node_version }} and ${{ matrix.os }}
    runs-on: ubuntu-latest
    strategy:
      matrix:
        os: [ubuntu-latest]
        node_version: [12.x]
        
    # 拉取本项目代码
    steps:
    - name: Checkout
      uses: actions/checkout@v2
        
    # 安装Node.js
    - name: Use Node.js ${{ matrix.node_version }}
      uses: actions/setup-node@v1
      with:
        node-version: ${{ matrix.node_version }}
    
    # 使用缓存依赖,加快速度
    - name: Cache NPM dependencies
      uses: actions/cache@v2
      with:
        path: node_modules
        key: ${{ runner.OS }}-npm-cache
        restore-keys: |
          ${{ runner.OS }}-npm-cache
                    
    # 安装依赖
    - name: Install dependencies
      run: |
        npm install
                
    # hexo clean和hexo generate
    - name: Clean and generate hexo
      run: |
        npm run clean
        npm run build
                
    # 将生成好的./public部署到公开仓库
    - name: Deploy
      uses: peaceiris/actions-gh-pages@v3
      with:
        deploy_key: ${{ secrets.ACTIONS_DEPLOY_KEY }}
        # 这里改成你自己的公开仓库
        external_repository: Yuk-0v0/Yuk-0v0.github.io
        publish_branch: main  
        publish_dir: ./public

接着使用ssh-keygen -o生成公开仓库的部署密钥,具体怎么生成key,可以参考 生成 SSH 公钥,讲的很清楚。

然后分别在私人仓库的secrets中放入私钥,命名为ACTIONS_DEPLOY_KEY。

Secrets_key

在公开仓库中添加公钥,名字随意。

Deploy_key

这下就都配置好了,将整个项目提交到私人仓库中看看效果

# 本地项目根目录下
git init
git add .
git commit -m "first commit"
git branch -M main
# 改成你自己的私人仓库链接
git remote add origin https://github.com/Yuk-0v0/blog-source.git
git push -u origin main

不出意外GitHub Actions运行成功且你访问Yuk-0v0.github.io就能看到博客页面了

Github Actions

其他较为重要的操作

最后成果:

成果展示