在之前的文章中,我们介绍了如何利用Gitea Actions实现MkDocs更新自动构建。对于一些项目,尤其是脚本型语言项目,我们往往只需要在代码提交后自动更新本地仓库即可。
本文将介绍如何通过Gitea Actions实现代码提交后自动拉取(pull)到本地,以保持本地与远程仓库的同步。
本文采用 SSH 方式进行连接,并通过指定私钥实现免密登录。若使用其他方式,请根据实际需求调整配置。
✅ 准备工作
在开始之前,请确保以下环境与配置已就绪:
🔐 设置SSH免密访问
在实际操作中,我们可能会遇到这样的问题:
在命令行中直接执行git pull一切正常,但当通过act_runner执行相同命令时却卡住不动。
原因在于:runner 无法访问当前 SSH 会话中的密钥。因此,我们需要为 Runner 单独生成一对 SSH 密钥。
ssh-keygen -t ed25519 -f ~/.ssh/id_gitea_runner -C "Gitea Runner Key" -N ""
生成密钥后,进入 Gitea:
点击头像 → 设置 → SSH / GPG 密钥 → 管理 SSH 密钥
在“增加密钥”界面中,将公钥(id_gitea_runner.pub)的内容复制进去,并填写必要信息。

完成后,可通过以下命令测试连接:
ssh -i ~/.ssh/id_gitea_runner -T git@<您的gitea实例地址>
若出现以下提示,则说明 SSH 已配置成功:
Hi <user>! You've successfully authenticated...
请记下刚生成的私钥路径,稍后在配置 Actions 时将用到。
🔑 配置Actions密钥
进入目标仓库的:设置 → Actions → 密钥
点击 添加密钥,填写以下内容:
| 名称 | 值 |
DEPLOY_PATH | 您仓库目录的位置 |
DEPLOY_SSH_COMMAND | ssh -i ~/.ssh/id_gitea_runner -o StrictHostKeyChecking=no -o BatchMode=yes |

🛠️ 配置 Gitea Actions 工作流
在仓库根目录下创建或编辑 .gitea/workflows/auto-deploy.yml 文件,内容如下:
name: Auto Deploy
on:
push:
branches:
- main # 更换为您需要的分支名称
paths:
- "**"
- "!.gitignore" # 忽略.gitignore
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Deploy code
env:
DEPLOY_PATH: ${{ secrets.DEPLOY_PATH }}
GIT_SSH_COMMAND: ${{ secrets.DEPLOY_SSH_COMMAND }} # 指定SSH命令以免密
run: |
echo "🚀 Starting deployment to $DEPLOY_PATH"
cd "$DEPLOY_PATH"
# 检查是不是 git 仓库
if [ ! -d ".git" ]; then
echo "❌ $DEPLOY_PATH is not a git repository"
exit 1
fi
# 拉取最新代码
git fetch origin main --quiet
git reset --hard origin/main --quiet
echo "✅ Deployment completed at $(date)"
🎯 运行结果
完成以上配置后,每当你向仓库提交新代码时,
Gitea Actions 会自动触发部署流程:
- 使用配置好的 SSH 免密访问
- 自动执行
git fetch与git reset - 同步本地仓库代码至最新状态
至此,代码与 Gitea 仓库内容实现自动同步。
心情表态
+1
+1
+1
+1
+1
+1

近期评论