This commit is contained in:
@@ -31,26 +31,37 @@ jobs:
|
|||||||
# 步骤 2: 在管理机拉取最新代码并部署
|
# 步骤 2: 在管理机拉取最新代码并部署
|
||||||
- name: 拉取代码并执行部署
|
- name: 拉取代码并执行部署
|
||||||
run: |
|
run: |
|
||||||
ssh ${{ secrets.USERNAME }}@${{ secrets.HOST }} << 'EOF'
|
# 1. 在 Runner 上安装 sshpass
|
||||||
# 定义项目目录(管理机上的代码存放路径,需提前创建)
|
sudo apt-get update && sudo apt-get install -y sshpass
|
||||||
PROJECT_DIR="/home/bmy/gitea_actions"
|
|
||||||
|
# 2. 使用 sshpass 执行远程命令
|
||||||
|
# -o StrictHostKeyChecking=no: 自动接受未知的主机密钥,避免 "Host key verification failed" 错误
|
||||||
|
# sshpass -p '密码' ssh ...: 通过 sshpass 提供密码
|
||||||
|
# -T: 禁用伪终端分配,避免相关警告
|
||||||
|
sshpass -p '${{ secrets.PASSWORD }}' ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null ${{ secrets.USERNAME }}@${{ secrets.HOST }} << 'EOF'
|
||||||
|
# --- 以下为在管理机上执行的脚本 ---
|
||||||
|
|
||||||
|
# 定义项目目录(管理机上的代码存放路径)
|
||||||
|
PROJECT_DIR="/home/bmygitea_actions"
|
||||||
|
|
||||||
# 进入项目目录,若不存在则克隆仓库
|
# 进入项目目录,若不存在则克隆仓库
|
||||||
if [ ! -d "$PROJECT_DIR" ]; then
|
if [ ! -d "$PROJECT_DIR" ]; then
|
||||||
echo "项目目录不存在,克隆仓库..."
|
echo "项目目录不存在,克隆仓库..."
|
||||||
|
# 假设管理机已配置好 Gitea 的访问权限 (如部署密钥)
|
||||||
git clone ${{ gitea.repository }} $PROJECT_DIR
|
git clone ${{ gitea.repository }} $PROJECT_DIR
|
||||||
cd $PROJECT_DIR
|
cd $PROJECT_DIR
|
||||||
else
|
else
|
||||||
echo "拉取最新代码..."
|
echo "拉取最新代码..."
|
||||||
cd $PROJECT_DIR
|
cd $PROJECT_DIR
|
||||||
# 确保工作区干净(可选,根据需求调整)
|
|
||||||
git checkout main
|
git checkout main
|
||||||
git pull origin main
|
git pull origin main
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# 执行部署脚本(包含 Docker 构建和 Swarm 部署)
|
# 执行部署脚本
|
||||||
pwd
|
pwd
|
||||||
ls -al
|
ls
|
||||||
|
|
||||||
|
# --- 远程脚本结束 ---
|
||||||
EOF
|
EOF
|
||||||
# 步骤1:输出事件信息
|
# 步骤1:输出事件信息
|
||||||
- run: echo "🎉 该作业由 ${{ gitea.event_name }} 事件自动触发。"
|
- run: echo "🎉 该作业由 ${{ gitea.event_name }} 事件自动触发。"
|
||||||
|
|||||||
Reference in New Issue
Block a user