github gitee blog Gridea

Gridea + github + gitee 搭建个人博客

Posted on 2022-03-15,5 min read
封面图

本博客由使用 Gridea 创建,记录一下搭建过程,主要介绍如何同步到 github 和 gitee。

为什么选择 Gridea

现在主流的静态博客有Jekyll、Hugo、Hexo,之所以选择Gridea,两个原因:

  1. 简单实用,自带客户端,直接下载一个桌面程序安装,配置、预览、同步,就搞定了。
  2. 有评论功能,只需要简单配置就能加上评论功能。有了评价,博客才有了灵魂。

如何安装

安装的事情太简单了,不想重复,浪费时间。按照参考的链接很容易就上手了。以下只分享一些比较特别的内容。

同步到github

由于国内众所周知的原因,访问github有一定概率的困难。使用 Gridea 的客户端即使测试连接成功,同步文件到 github 上也是经常性失败的。

同步文件到 github 有两种方法:

  1. 找梯子翻出去,免费的不好用,收费的,嗯,不舍得
  2. 使用 Github Destop 同步。没搞清楚为什么 Gridea 同步失败,而使用 Github Destop 同步成功的概率非常大。

如何使用 Destop 同步,可参考 关于同步那些事(国内 github 和 gitee)

大致步骤是:

  1. 删除 output 目录下所有文件
  2. 使用 Destop 克隆 github 项目到 output 目录
  3. 在Gridea中点同步,生成文件到 output 目录
  4. 使用 Destop 同步到 github

同步到gitee

Gridea 本身不支持gitee,需要自己手动同步,为了简化步骤,写成一个脚本,一键同步到 gitee。
主要参考的文章是 采用 Gitee Pages + Gridea + 批处理 搭建个人主页 (win10)

以下分享几段完整的代码。

gitee_init.bat

在站点源文件路径(我的目录是 C:\Users\Administrator\Documents\Gridea)下,创建一个gitee_init.bat,用于初始化 gitee 项目的目录。

cd /d %~dp0

:: 清空,删除再创建目录
rd output_gitee
md output_gitee

:: 进入目录,初始化目录,拉取项目文件
cd output_gitee
git init
git remote add origin https://gitee.com/qinwanlin/qinwanlin.git
git fetch  
git reset --hard origin/master
git branch --set-upstream-to=origin/master master

pause

replace.py

因为需要把所有文件中的 github 的域名替换为 gitee 的域名,所以写了一个 python 的脚本,最后编译为 exe 备用。创建一个replace.py的文件。

import os
import sys

path = '.\output_gitee'
ori = 'qinwanlin.github.io'
tar = 'qinwanlin.gitee.io'

def get_filelist(dir):
    filelist = []
    for home, dirs, files in os.walk(path):
        dirs[:] = [d for d in dirs if not d[0] == '.']
        print(home + " : " + str(dirs))
        for filename in files:
            # 文件名列表,包含完整路径
            filelist.append(os.path.join(home, filename))
    return filelist

def replace(file_path, old_str, new_str):
    try:
        f = open(file_path,'r+',encoding='utf-8')
        alltext = f.read().replace(old_str, new_str)
        f.seek(0)
        f.truncate()
        f.write(alltext)
        f.close()
        print("replace success: " + file_path)
    except Exception as e:
        print("replace error  : " + file_path)

if __name__ == "__main__":
    if len(sys.argv) < 4 :
        print("replace dir github_url gitee_url \n")
        exit()

    path = sys.argv[1]
    ori = sys.argv[2]
    tar = sys.argv[3]

    print(path)
    print(ori)
    print(tar)

    filelist = get_filelist(dir)
    print("file count = " + str(len(filelist)))
    try:
        for file in filelist:
            replace(file, ori, tar)
    except Exception as e:
        print(str(e))

gitee_push.bat

再创建一个 gitee_push.bat 的文件,以后同步文件,就需要点运行一下就可以了。

cd /d %~dp0

:: 拷贝文件
xcopy .\output .\output_gitee /e/c/y

:: 替换地址
replace.exe .\output_gitee qinwanlin.github.io qinwanlin.gitee.io

:: 替换Client ID
replace.exe .\output_gitee 0e579c516c3dcxxxxxxxxxxx d2c9e0edd275537086391bcd1975f92b7db79ffa69yyyyyyyyyyyyy

:: 替换Client Secret
replace.exe .\output_gitee c45605c3d9d96dbf3dab0xxxxxxxxx 2aa3a353f7363fc1e1afacb07871c4dfd7ad88969d942yyyyyyyyyyyyyyyyyy

:: 同步到gitee
cd output_gitee
git add . 
git commit -m "Gridea push"
git push -u origin master

echo "请到gitee上点更新pages"

pause

主题

本博客使用的主题是 Concise https://www.jianshu.com/p/78e3ee0d8781,并做了小部分修改。

参考

  1. Gitee pages 官方指导 https://gitee.com/help/articles/4136#article-header0
  2. Gridea 官方文档 https://gridea.dev/docs/
  3. Gridea 上手教程 https://zhuanlan.zhihu.com/p/71681116
  4. 在 Gridea 中配置 Gitalk 评论系统 https://wherelse.cc/post/config-gitalk-in-the-gridea/
  5. Hexo 接入码云评论系统 https://blog.csdn.net/adobeid/article/details/82261930

下一篇: Hello Gridea→

loading...