利用宝塔面板实现 Gitea 代码自动推送

宝塔面板因其使用方便、功能强大的特点,积累了海量的用户基础,尤其对于管理服务器和部署网站应用,通过快速部署和可视化界面,极大地降低了配置门槛。

我日常习惯将本地代码直接映射到宝塔面板的网站目录,修改代码后可以在浏览器上即时预览效果,调试响应极其迅速。同时通过预设的计划任务,每天凌晨自动将服务器上的代码自动推送到 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 密钥」>「增加密钥」,将公钥文件内容粘贴到文本区域,完成后点击「增加密钥」。

利用宝塔面板实现 Gitea 代码自动推送

5、返回服务器,编辑 SSH 配置文件​,并添加主机配置。

vi ~/.ssh/config

Host git.kobin.cn                # 自定义别名
  HostName 10.0.100.7            # 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、登录宝塔面板,选择「计划任务」>「脚本库」>「自定义」,创建一个自定义脚本。

利用宝塔面板实现 Gitea 代码自动推送

8、复制以下脚本内容,并修改本地路径和仓库地址,完成后点击保存,并尝试第一次推送。

#!/bin/bash

# 配置本地路径和仓库地址
REPO_DIR="/www/wwwroot/website"
REPO_URL="git@git.domain.com:username/repositories.git"

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 main --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 main; 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 main
    git push -u -f origin main

    echo "仓库初始化完成!"
fi

echo "=== 操作完成 ==="
利用宝塔面板实现 Gitea 代码自动推送

9、推送成功后,如果需要添加计划任务,可以前往「计划任务」,将刚才的脚本内容添加到计划任务中,并设置执行周期。

利用宝塔面板实现 Gitea 代码自动推送
本文为原创文章,著作权归作者所有:来自「KOBIN 技术随笔」作者的原创作品,转载请标明出处。
利用宝塔面板实现 Gitea 代码自动推送
https://blog.kobin.cn/blog/system/s2/3341.html
(0)

相关文章

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

CAPTCHAis initialing...