All checks were successful
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 57s
95 lines
3.5 KiB
YAML
95 lines
3.5 KiB
YAML
# 工作流名称
|
||
name: Gitea Actions Demo
|
||
|
||
# 运行名称:在Gitea界面中显示的具体运行名称,支持动态变量
|
||
run-name: ${{ gitea.actor }} 正在测试 Gitea Actions 🚀
|
||
|
||
# 触发条件:当发生push事件时触发
|
||
on: [push]
|
||
|
||
# 作业定义
|
||
jobs:
|
||
# 作业名称:探索Gitea Actions
|
||
Explore-Gitea-Actions:
|
||
# 运行环境:在ubuntu-latest标签的runner上运行
|
||
runs-on: ubuntu-latest
|
||
|
||
# 步骤序列
|
||
steps:
|
||
- name: 执行远程 SSH 命令(密码认证)
|
||
uses: appleboy/ssh-action@v1
|
||
with:
|
||
host: ${{ secrets.HOST }}
|
||
username: ${{ secrets.USERNAME }}
|
||
password: ${{ secrets.PASSWORD }}
|
||
port: ${{ secrets.PORT }}
|
||
script: |
|
||
pwd
|
||
cd /home/bmy/app-product
|
||
ls -al
|
||
|
||
# 步骤 2: 在管理机拉取最新代码并部署
|
||
- name: 拉取代码并执行部署
|
||
run: |
|
||
# 1. 在 Runner 上安装 sshpass
|
||
sudo apt-get update && sudo apt-get install -y sshpass
|
||
|
||
# 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'
|
||
# --- 以下为在管理机上执行的脚本 ---
|
||
ssh -T git@git.bmycode.help
|
||
ip addr show
|
||
|
||
|
||
# 定义项目目录(管理机上的代码存放路径)
|
||
PROJECT_DIR="/home/bmy/gitea_actions"
|
||
|
||
# 进入项目目录,若不存在则克隆仓库
|
||
if [ ! -d "$PROJECT_DIR" ]; then
|
||
echo "项目目录不存在,克隆仓库..."
|
||
# 假设管理机已配置好 Gitea 的访问权限 (如部署密钥)
|
||
# git@git.bmycode.help:bmy/gitea_actions.git
|
||
git clone git@git.bmycode.help:${{ gitea.repository }}.git $PROJECT_DIR
|
||
cd $PROJECT_DIR
|
||
else
|
||
echo "拉取最新代码..."
|
||
cd $PROJECT_DIR
|
||
git checkout main
|
||
git pull origin main
|
||
fi
|
||
|
||
# 执行部署脚本
|
||
pwd
|
||
ls
|
||
|
||
# --- 远程脚本结束 ---
|
||
EOF
|
||
# 步骤1:输出事件信息
|
||
- run: echo "🎉 该作业由 ${{ gitea.event_name }} 事件自动触发。"
|
||
|
||
# 步骤2:输出运行环境信息
|
||
- run: echo "🐧 该作业现在正在Gitea托管的 ${{ runner.os }} 服务器上运行!"
|
||
|
||
# 步骤3:输出分支和仓库信息
|
||
- run: echo "🔎 您的分支名称是 ${{ gitea.ref }},您的仓库是 ${{ gitea.repository }}。"
|
||
|
||
# 步骤4:检出仓库代码(具有名称的步骤)
|
||
- name: 检出仓库代码
|
||
uses: actions/checkout@v4
|
||
|
||
# 步骤5:输出克隆完成信息
|
||
- run: echo "💡 ${{ gitea.repository }} 仓库已克隆到runner。"
|
||
|
||
# 步骤6:准备测试提示
|
||
- run: echo "🖥️ 工作流现已准备好在runner上测试您的代码。"
|
||
|
||
# 步骤7:列出仓库文件(多行命令)
|
||
- name: 列出仓库中的文件
|
||
run: |
|
||
ls ${{ gitea.workspace }}
|
||
|
||
# 步骤8:输出作业状态
|
||
- run: echo "🍏 此作业的状态是 ${{ job.status }}。" |