利用宝塔面板实现 Gitea 代码自动推送 2025/06/27 00:36 • Linux • 阅读 337 宝塔面板因其使用方便、功能强大的特点,积累了海量的用户基础,尤其对于管理服务器和部署网站应用,通过快速部署和可视化界面,极大地降低了配置门槛。 我日常习惯将本地代码直接映射到宝塔面板的网站目录,修改代码后可以在浏览器上即时预览效果,调试响应极其迅速。同时通过预设的计划任务,每天凌晨自动将服务器上的代码自动推送到 Gitea 代码仓库。 诚然,这种「野路子」在专业开发者眼中并不符合规范流程,但对于个人开发者的小项目,它确实显著提升了本地开发的调试效率,同时为代码增添了一层可靠的备份保障。 本篇文章介绍了如何利用宝塔面板的计划任务,定时向你的 Gitea 仓库推送代码,为你的个人开发流程添加一份保险。 操作步骤 1、通过 SSH 访问服务器底层,输入以下代码安装 Git 。 yum install -y git 2、配置 Git 的全局用户信息。 # 配置全局 Git 信息 git config --global user.name "kobin" git config --global user.email "chen@kobin.cn" git config --global push.default simple # 检查配置信息 git config --list # 清除全局配置(仅用于备注,无需执行) git config --global --unset user.name git config --global --unset user.email rm -f ~/.gitconfig 3、生成一个 SSH 密钥对。 ssh-keygen -t ed25519 -f ~/.ssh/git_key -N "" chmod 600 ~/.ssh/git_key chmod 644 ~/.ssh/git_key.pub # 查看公钥文件内容 cat ~/.ssh/git_key.pub 4、登录 Gitea 控制台,点击右上角的头像,选择「设置」>「SSH / GPG 密钥」>「管理 SSH 密钥」>「增加密钥」,将公钥文件内容粘贴到文本区域,完成后点击「增加密钥」。 5、返回服务器,编辑 SSH 配置文件,并添加主机配置。 vi ~/.ssh/config Host git.kobin.cn # 自定义别名 HostName 192.168.1.100 # Gitea 服务器 IP 地址 User git # 登录用户名,不可修改 Port 22 # SSH 端口号 IdentityFile ~/.ssh/git_key # 指定使用的私钥文件路径 IdentitiesOnly yes # 使用指定的密钥认证 6、测试 SSH 连接。 ssh -T git@git.kobin.cn # 成功认证响应 Hi there, kobin! You've successfully authenticated with the key named ****, but Gitea does not provide shell access. If this is unexpected, please log in with password and setup Gitea under another user. 7、登录宝塔面板,选择「计划任务」>「脚本库」>「自定义」,创建一个自定义脚本。 8、复制以下脚本内容,并修改本地路径和仓库地址,完成后点击保存,并尝试第一次推送。 当前工作流仅配置了服务器代码定时推送至 Gitea 仓库(单向同步),没有拉取操作,请确保所有推送操作由当前已安装有宝塔面板的服务器完成。如果通过其他设备推送新提交,或直接在 Gitea 网页修改代码,将导致代码版本分叉或丢失! #!/bin/bash # 仓库本地路径 REPO_DIR="/www/wwwroot/website" # 远程仓库URL REPO_URL="git@git.kobin.cn:username/repositories.git" # Git操作分支名称 BRANCH="main" echo "=== Gitea 仓库同步脚本 ===" echo "目录: $REPO_DIR" echo "时间: $(date +'%Y-%m-%d %H:%M:%S')" # 进入仓库目录 cd "$REPO_DIR" || { echo "错误:无法进入目录 $REPO_DIR" exit 1 } # 判断是否存在Git仓库 if [ -d ".git" ]; then echo "检测到Git仓库,准备执行日常更新" # 1. 拉取最新更改 echo "→ 拉取远程更新" git pull origin "$BRANCH" --quiet 2> /dev/null || { echo "注意: 当前是独立工作状态(无远程分支或无法连接)" } # 2. 检查是否有未提交的更改 if git diff-index --quiet HEAD --; then echo "当前无更改需要提交" echo "=== 同步完成(无任何变更) ===" exit 0 fi # 3. 显示变更摘要 echo "→ 检测到以下变更:" git status --short # 4. 添加所有更改 echo "→ 添加所有更改到暂存区" git add . git add -u # 5. 创建提交 COMMIT_MSG="内容更新 $(date +'%Y-%m-%d %H:%M:%S')" echo "→ 创建提交: \"$COMMIT_MSG\"" git commit -m "$COMMIT_MSG" # 6. 推送到远程仓库 echo "→ 推送到远程仓库" if git push origin "$BRANCH"; then echo "推送成功!" # 获取最新提交ID LATEST_COMMIT=$(git rev-parse --short HEAD) echo "提交ID: $LATEST_COMMIT" echo "仓库URL: ${REPO_URL/git@/https://}" | sed 's|:kobin/|/kobin/|' else echo "推送失败!" exit 1 fi echo "日常更新完成!" else echo "未检测到Git仓库,执行初始化" # 清理和重新初始化仓库 echo "→ 初始化新仓库" git init # 自定义忽略规则 echo "→ 配置忽略规则" cat << 'EOF' > .gitignore *.ini *.htaccess *.log *.env *.bak *.tmp Thumbs.db .DS_Store /@eaDir/ EOF echo -e "\n=== 当前忽略规则 ===\n" cat .gitignore echo -e "\n=================\n" # 添加所有文件 echo "→ 添加所有文件到暂存区" git add . > /dev/null # 创建首次提交 echo "→ 创建初始提交" git commit -m "初始提交 $(date +'%Y-%m-%d %H:%M')" # 设置远程仓库 echo "→ 设置远程仓库" git remote add origin "$REPO_URL" # 创建并推送主分支 echo "→ 创建并推送主分支" git branch -M "$BRANCH" git push -u -f origin "$BRANCH" echo "仓库初始化完成!" fi echo "=== 操作完成 ===" 9、推送成功后,如果需要添加计划任务,可以前往「计划任务」,将刚才的脚本内容添加到计划任务中,并设置执行周期。 本文为原创文章,著作权归作者所有:来自「KOBIN 技术随笔」作者的原创作品,转载请标明出处。利用宝塔面板实现 Gitea 代码自动推送https://blog.kobin.cn/blog/system/s2/3341.html GiteaLinux宝塔面板 赞 (0) 0 2 生成海报 发表回复 您的电子邮箱地址不会被公开。 必填项已用 * 标注*昵称: *邮箱: 网址: 记住昵称、邮箱和网址,下次评论免输入 提交 CAPTCHAis initialing... 评论列表(2条) 萧瑟 2025/06/27 09:10 不如你搞个在Gitea上钩子,代码每次提交,更新你宝塔网站目录的代码 回复 KOBIN 2025/06/27 09:42 @萧瑟:最开始的设想确实是您说的这个方法,尝试了后感觉每次一点微小的代码改动都要 push 会有点繁琐,另外我对版本控制的要求没有那么高,所以就选择了一个相对简单的方案。 回复