From 459f99e8049e020ae138f29cdcd22356cd0f828f Mon Sep 17 00:00:00 2001 From: "ethan.chen" Date: Wed, 7 Jan 2026 14:06:12 +0800 Subject: [PATCH] feat: Add Gitea Actions workflows and setup documentation for deployment --- .gitea/workflows/README.md | 18 +++ .gitea/workflows/deploy-simple.yml | 62 ++++++++ .gitea/workflows/deploy.yml | 41 +++++ .gitignore | 3 + GITEA_ACTIONS_SETUP.md | 237 +++++++++++++++++++++++++++++ 5 files changed, 361 insertions(+) create mode 100644 .gitea/workflows/README.md create mode 100644 .gitea/workflows/deploy-simple.yml create mode 100644 .gitea/workflows/deploy.yml create mode 100644 GITEA_ACTIONS_SETUP.md diff --git a/.gitea/workflows/README.md b/.gitea/workflows/README.md new file mode 100644 index 0000000..61622ed --- /dev/null +++ b/.gitea/workflows/README.md @@ -0,0 +1,18 @@ +# Gitea Actions 工作流 + +本目录包含 Gitea Actions 工作流配置文件。 + +## 文件说明 + +- `deploy.yml` - 基础部署工作流 +- `deploy-simple.yml` - 简化版部署工作流(推荐使用) + +## 使用说明 + +1. 确保已安装并运行 Act Runner +2. 在 Gitea 仓库中配置 Secrets +3. 更新工作流中的项目路径 +4. 推送代码或手动触发工作流 + +详细配置请参考 `GITEA_ACTIONS_SETUP.md` + diff --git a/.gitea/workflows/deploy-simple.yml b/.gitea/workflows/deploy-simple.yml new file mode 100644 index 0000000..3c2d6fd --- /dev/null +++ b/.gitea/workflows/deploy-simple.yml @@ -0,0 +1,62 @@ +name: Deploy to Server (Simple) + +on: + push: + branches: + - main + - master + workflow_dispatch: + +jobs: + deploy: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Deploy to server via SSH + env: + SSH_KEY: ${{ secrets.SERVER_SSH_KEY }} + SSH_USER: ${{ secrets.SERVER_USERNAME }} + SSH_HOST: ${{ secrets.SERVER_HOST }} + run: | + # Setup SSH + mkdir -p ~/.ssh + echo "$SSH_KEY" > ~/.ssh/deploy_key + chmod 600 ~/.ssh/deploy_key + + # Add host to known_hosts (optional, for security) + ssh-keyscan -H "$SSH_HOST" >> ~/.ssh/known_hosts 2>/dev/null || true + + # Deploy + ssh -i ~/.ssh/deploy_key \ + -o StrictHostKeyChecking=no \ + -o UserKnownHostsFile=~/.ssh/known_hosts \ + "$SSH_USER@$SSH_HOST" << 'ENDSSH' + set -e + echo "Starting deployment..." + + # Navigate to project directory (update this path) + cd /opt/cloud-mcp || { + echo "Error: Project directory not found" + exit 1 + } + + # Pull latest code + echo "Pulling latest code..." + git fetch origin + git checkout main || git checkout master + git pull origin main || git pull origin master + + # Run deployment script + echo "Running deployment script..." + chmod +x deploy-gitea.sh + ./deploy-gitea.sh + + echo "Deployment completed!" + ENDSSH + + # Cleanup + rm -f ~/.ssh/deploy_key + diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml new file mode 100644 index 0000000..c3a6c16 --- /dev/null +++ b/.gitea/workflows/deploy.yml @@ -0,0 +1,41 @@ +name: Deploy to Server + +on: + push: + branches: + - main + - master + workflow_dispatch: + +jobs: + deploy: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Setup SSH + run: | + mkdir -p ~/.ssh + echo "${{ secrets.SERVER_SSH_KEY }}" > ~/.ssh/deploy_key + chmod 600 ~/.ssh/deploy_key + ssh-keyscan -H ${{ secrets.SERVER_HOST }} >> ~/.ssh/known_hosts 2>/dev/null || true + + - name: Deploy to server + run: | + ssh -i ~/.ssh/deploy_key \ + -o StrictHostKeyChecking=no \ + -o UserKnownHostsFile=~/.ssh/known_hosts \ + ${{ secrets.SERVER_USERNAME }}@${{ secrets.SERVER_HOST }} << 'ENDSSH' + set -e + cd /opt/cloud-mcp || cd /path/to/cloud-mcp + git pull origin main || git pull origin master + ./deploy-gitea.sh + ENDSSH + + - name: Cleanup + if: always() + run: | + rm -f ~/.ssh/deploy_key + diff --git a/.gitignore b/.gitignore index 6c673e3..f45bad2 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,6 @@ data/ deploy.log *.log +# Gitea Actions +.gitea/workflows/*.yml.bak + diff --git a/GITEA_ACTIONS_SETUP.md b/GITEA_ACTIONS_SETUP.md new file mode 100644 index 0000000..9607cd6 --- /dev/null +++ b/GITEA_ACTIONS_SETUP.md @@ -0,0 +1,237 @@ +# Gitea Actions 部署配置指南 + +## 前置要求 + +### 1. 确保 Gitea Actions 已启用 + +在 Gitea 管理员设置中: +- 进入 **Site Administration** → **Actions** +- 确保 **Actions** 功能已启用 +- 检查 `app.ini` 配置: + +```ini +[actions] +ENABLED = true +``` + +### 2. 安装并运行 Act Runner + +Act Runner 是 Gitea Actions 的执行器,需要在服务器上运行。 + +#### 下载 Act Runner + +```bash +# 在服务器上执行 +cd /tmp +wget https://gitea.com/gitea/act_runner/releases/download/v0.2.6/act_runner-linux-amd64 +chmod +x act_runner-linux-amd64 +sudo mv act_runner-linux-amd64 /usr/local/bin/act_runner +``` + +#### 注册 Runner + +```bash +# 在服务器上执行 +act_runner register \ + --instance \ + --token \ + --name my-runner \ + --labels ubuntu-latest:docker://node:20-bullseye +``` + +**获取 Runner Token**: +1. 进入 Gitea:**Site Administration** → **Actions** → **Runners** +2. 点击 **New Runner** +3. 复制显示的 Token + +#### 运行 Runner + +```bash +# 作为服务运行(推荐) +sudo tee /etc/systemd/system/gitea-act-runner.service > /dev/null <