From 1609408059bf73d61c5c258e2079f10f0ef6d71b Mon Sep 17 00:00:00 2001 From: terry Date: Sat, 16 May 2026 08:27:27 +0000 Subject: [PATCH] ci: add deploy workflow --- .gitea/workflows/deploy.yml | 67 +++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 .gitea/workflows/deploy.yml diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml new file mode 100644 index 0000000..266bf7a --- /dev/null +++ b/.gitea/workflows/deploy.yml @@ -0,0 +1,67 @@ +name: Deploy to Frontend Servers + +on: + push: + branches: + - main + +jobs: + deploy: + runs-on: self-hosted + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Install dependencies + run: npm ci + + - name: Build + run: npm run build + env: + VITE_API_URL: https://api.ark-library.com + VITE_DISABLE_ADMIN: "true" + + - name: Setup SSH key + run: | + mkdir -p ~/.ssh + echo "${{ secrets.DEPLOY_KEY }}" > ~/.ssh/deploy_key + chmod 600 ~/.ssh/deploy_key + ssh-keyscan -H ${{ secrets.FRONTEND_1_HOST }} >> ~/.ssh/known_hosts 2>/dev/null + ssh-keyscan -H ${{ secrets.FRONTEND_2_HOST }} >> ~/.ssh/known_hosts 2>/dev/null + + - name: Deploy to both servers + run: | + deploy_to() { + local HOST=$1 + echo ">>> 部署到 $HOST" + rsync -avz --delete \ + -e "ssh -i ~/.ssh/deploy_key -o StrictHostKeyChecking=no" \ + dist/ \ + ec2-user@${HOST}:/var/www/ark-library/ + echo ">>> $HOST 部署完成" + } + deploy_to "${{ secrets.FRONTEND_1_HOST }}" & + deploy_to "${{ secrets.FRONTEND_2_HOST }}" & + wait + echo "=== 两台都部署完成 ===" + + - name: Verify both servers match + run: | + SUM1=$(ssh -i ~/.ssh/deploy_key -o StrictHostKeyChecking=no \ + ec2-user@${{ secrets.FRONTEND_1_HOST }} \ + "sha256sum /var/www/ark-library/index.html | awk '{print \$1}'") + SUM2=$(ssh -i ~/.ssh/deploy_key -o StrictHostKeyChecking=no \ + ec2-user@${{ secrets.FRONTEND_2_HOST }} \ + "sha256sum /var/www/ark-library/index.html | awk '{print \$1}'") + echo "frontend-1: $SUM1" + echo "frontend-2: $SUM2" + if [ "$SUM1" != "$SUM2" ]; then + echo "ERROR: 两台 index.html 不一样!" + exit 1 + fi + echo "✓ 两台 checksum 一致,部署成功。" + + - name: Cleanup SSH key + if: always() + run: rm -f ~/.ssh/deploy_key