Featured image of post Git&&obsidian自动化修改推送hugo博客

Git&&obsidian自动化修改推送hugo博客

服务器git自动化推送和obsidian的使用

前情提要

由于非常猪鼻的我之前一直是 vscode写博客加winSCP手动传输数据到服务器,博客推送和撰写效率十分低下,文章少还好说,现在一套流程走下来麻烦的我想扇自己一巴掌,所以搞了一套更好更方便的自动化流程来爱护我的hugo博客和身心健康,并且学习了一下obsidian的文章笔记撰写使用,下面给大家介绍一下方法

搭配脚本实现git自动化推送

服务器端

ssh密钥配置

Windows端
通常保存在C:\Users\用户名\.ssh中,没有的话自行创建 ssh-keygen -t rsa -b 4096并提取出id_rsa.pub文件中的公钥 然后我们到服务器端 然后测试一下 ssh -T 用户名@xxx.xxx.xxx.xxx,如果出现Welcome to GitLab, 用户名!或其他类似的成功信息,则说明连接成功

Linux端
操作类似,
先查看是否存在公钥ls ~/.ssh/,没有的话使用ssh-keygen -t rsa -b 4096生成公钥,其余于上述类似

创建和配置git用户

  • 创建git用户 sudo useradd -m git
  • 配置git用户
    • vim /etc/passwd 在其中找到git用户,修改/bin/bash为/usr/bin/git-shell(即你git-shell的位置)
    • sudo passwd git 设置git用户密码,如有需要

创建git仓库

  • 创建仓库文件夹
1
2
mkdir /home/repo
cd /home/repo
  • 初始化一个裸仓库
1
2
# nan0in27_site.git为仓库名称,尽量按你博客来修改比较好
git init --bare nan0in27_site.git
  • 创建git钩子
1
2
cd nan0in27_site.git/hooks
vim post-update

我输入的内容如下

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
#!/bin/bash
# 设置源仓库和目标目录
REPO_DIR="/home/repo/nan0in27_site.git"
PUBLIC_DIR="/home/public"

# 记录日志
echo "Post-update hook triggered at $(date)" >> /home/repo/post-update.log

# 拉取最新的远程内容
git -C $REPO_DIR fetch

# 将 Git 仓库中的内容拉取到目标目录
GIT_WORK_TREE=$PUBLIC_DIR git checkout -f

# 记录日志
echo "Files copied to $PUBLIC_DIR" >> /home/repo/post-update.log

权限和文件修改

  • 给post-update等文件添加执行权限
1
2
3
chmod +x post-update
sudo chmod 644 /home/repo/post-update.log
sudo chmod -R 755 /home/public # 这个根据你的实际情况修改,这个是我的博客根目录
  • 拥有者修改
1
2
chown -R git:git nan0in27_site.git
chown -R git:git /home/public

用户端

类似github的操作,在我们想要放仓库的地方打开git bash,然后输入

1
git clone git@服务器IP地址:/home/repo/nan0in27_site.git

脚本实现推送自动化

我在根目录下创建了一个deploy.s文件,内容如下

 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
#!/bin/bash

# 设置博客生成目录和目标仓库路径
HUGO_PUBLIC_DIR="/d/blog/nan0in_blog/nan0in27/public"
REPO_DIR="/d/blog/nan0in_blog/nan0in27/nan0in27_site"

# 生成 Hugo 静态文件
cd /d/blog/nan0in_blog/nan0in27  # 确保你在 Hugo 项目目录
hugo

# 复制 public 目录中的文件到 nan0in27_site 仓库
echo "Copying files from Hugo public directory to nan0in27_site..."
cp -r $HUGO_PUBLIC_DIR/* $REPO_DIR/

# 进入 nan0in27_site 仓库
cd $REPO_DIR

# 确保你在正确的 Git 仓库目录下
if [ -d ".git" ]; then
    # 添加所有更改的文件到 Git
    git add .

    # 提交更改
    git commit -m "Update site content"

    # 推送到远程仓库
    git push origin master
else
    echo "Error: Not a Git repository. Please check your repository configuration."
    exit 1
fi

alt text

然后我们就可以愉快的在git bash里使用./deploy.sh实现博客推送自动化了

Obsidian便利自动化博客撰写

暂时懒得写,之后会传

本博客已稳定运行
发表了30篇文章 · 总计6万7千字

浙ICP备2024137952号 『网站统计』

𝓌𝒶𝒾𝓉 𝒻ℴ𝓇 𝒶 𝒹ℯ𝓁𝒾𝓋ℯ𝓇𝒶𝓃𝒸ℯ
使用 Hugo 构建
主题 StackJimmy 设计
⬆️该页面访问量Loading...