因为要来回倒腾自己写的机器人脚本,所以不如自建一个 git 仓库,每次写完脚本 push 到仓库,仓库那边触发钩子,自动热更新,岂不美哉!
参考文章:在自己服务器搭建git仓库 - 简书 (jianshu.com)
因为网上讲的很模糊,我在此说明一下
我在腾讯云有 Cent OS 的Linux服务器,下面统称 “远端”
我本机在用的 MacBook ,下面统称 “本地”
服务器 IP 统一替换
配置Git
因为我已经安装过 Git 了,现在只需要创建 Git 用户,具体步骤(远端):
# 添加 git 用户
groupadd git
useradd git -g git
# 给 git 设置密码
passwd git
初始化仓库
随便选择一个位置作为 Git 仓库,我的操作:
cd /CQHTTP
mkdir git_repo
chown git:git git_repo/
cd git_repo
git init --bare koishi.git
> Initialized empty Git repository in /CQHTTP/git_repo/koishi.git/
chown -R git:git /home/git # 把 home/git 所属用户改为git
chown -R git:git koishi.git # 把仓库所属用户改为git
查看一下…
[root@VM-0-16-centos git_repo]# pwd
/CQHTTP/git_repo
[root@VM-0-16-centos git_repo]# ls
koishi.git
创建证书
这部操作可以让你每次 push 都不需要输入密码(可以不做)
我参考的文章写的不好,踩了很多坑,下面讲我的做法:
在本地生成公钥
随便找个位置执行它,会在 ~/.ssh 中生成私钥公钥(id_rsa、id_rsa.pub)
ssh-keygen -t rsa # 敲三次回车
cat ~/.ssh/id_rsa.pub
> ssh-rsa
> xxxxxxxxxxxxxxxx
# 把上面复制,等下要用到
登录到刚刚创建的用户
我创建的用户叫 git, 所以切到本地去登录 git 这个账号
ssh git@{{server}}
> Last login: Sat Oct 30 10:15:10 2021 from 112.7.45.62
ssh-keygen -t rsa # 敲三次回车
ssh-keygen -t rsa
主要是为了方便创建ssh文件夹,当然你也可以手动创建(给700权限):
touch .ssh/authorized_keys
chmod 600 .ssh/authorized_keys
将本地复制的公钥粘贴到authorized_keys
,这个文件是用来记录客户端的公钥(如果有多个,一行一个)
vim .ssh/authorized_keys
克隆仓库到本地
git clone git@{{server}}:/CQHTTP/git_repo/koishi.git # 克隆仓库
cd project
git pull
git push
如果配置了证书,现在 pull,push 应该是不要密码的。
编写远端仓库钩子命令
参考文章:(36条消息) 仓库钩子实现自动构建_我有一个梦想-CSDN博客
这是我的post-receive
#!/bin/sh
GIT_REPO=/CQHTTP/git_repo/koishi.git
TMP_GIT_CLONE=/CQHTTP/git_repo/temp_koishi
ORIGIN=/CQHTTP/koishi
rm -rf ${TMP_GIT_CLONE}
git clone $GIT_REPO $TMP_GIT_CLONE
rm -rf ${ORIGIN}
cp -r ${TMP_GIT_CLONE}/plugin ${ORIGIN}
记得要把 .sample
后缀删了才行
效果
本地编辑代码上传后自动 HMR