# # 工作流名称 # 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' # # --- 以下为在管理机上执行的脚本 --- # # 定义项目目录(管理机上的代码存放路径) # PROJECT_DIR="/home/bmy/gitea_actions" # # 进入项目目录,若不存在则克隆仓库 # if [ ! -d "$PROJECT_DIR" ]; then # echo "项目目录不存在,克隆仓库..." # # 假设管理机已配置好 Gitea 的访问权限 (如部署密钥) # 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 }}。"