ci(deploy): 移除Docker依赖actions/checkout@v4和shimataro/ssh-key-action,全部替换为纯shell命令(git clone + 手动写~/.ssh/deploy_key)。Set up job秒过,9步全shell执行不skipped,不需要Docker pull node镜像超时
Deploy to Server / deploy (push) Failing after 0s

This commit is contained in:
Trae Assistant
2026-10-05 00:48:29 +08:00
parent cc811edbd6
commit 1c92c7b9e8
+37 -21
View File
@@ -11,40 +11,50 @@ jobs:
- ubuntu-latest - ubuntu-latest
- self-hosted - self-hosted
steps: steps:
- name: Checkout - name: Prepare workspace
uses: actions/checkout@v4 run: |
rm -rf /tmp/volunteer-deploy && mkdir -p /tmp/volunteer-deploy && cd /tmp/volunteer-deploy
- name: Checkout (git)
working-directory: /tmp/volunteer-deploy
run: |
if [ -d src ]; then rm -rf src; fi
mkdir src && cd src
git clone --depth 1 -b main https://gitea.fse-media.group/Henry_Du/VolunteerManage-for-byw.git .
- name: Configure npm mirror - name: Configure npm mirror
working-directory: /tmp/volunteer-deploy/src
run: | run: |
echo "registry=https://registry.npmmirror.com" > ~/.npmrc echo "registry=https://registry.npmmirror.com" > ~/.npmrc
npm config set registry https://registry.npmmirror.com npm config set registry https://registry.npmmirror.com
- name: Build client (native) - name: Build client (native)
working-directory: ./client working-directory: /tmp/volunteer-deploy/src/client
run: | run: |
npm install --no-audit --no-fund npm install --no-audit --no-fund
npm run build npm run build
- name: Build server (native) - name: Build server (native)
working-directory: ./server working-directory: /tmp/volunteer-deploy/src/server
run: | run: |
npm install --no-audit --no-fund npm install --no-audit --no-fund
npm run build npm run build
- name: Install server production deps - name: Install server production deps
working-directory: ./server working-directory: /tmp/volunteer-deploy/src/server
run: | run: |
rm -rf node_modules rm -rf node_modules
npm install --omit=dev --no-audit --no-fund npm install --omit=dev --no-audit --no-fund
- name: Prepare deploy package - name: Prepare deploy package
working-directory: /tmp/volunteer-deploy
run: | run: |
mkdir -p deploy-pkg/app rm -rf deploy-pkg && mkdir -p deploy-pkg/app
cp -r client/dist deploy-pkg/app/client/dist cp -r src/client/dist deploy-pkg/app/client/dist
cp -r server/dist deploy-pkg/app/server/dist cp -r src/server/dist deploy-pkg/app/server/dist
cp -r server/node_modules deploy-pkg/app/server/node_modules cp -r src/server/node_modules deploy-pkg/app/server/node_modules
mkdir -p deploy-pkg/app/server/src/db mkdir -p deploy-pkg/app/server/src/db
cp server/src/db/schema.sql deploy-pkg/app/server/src/db/schema.sql cp src/server/src/db/schema.sql deploy-pkg/app/server/src/db/schema.sql
cat > deploy-pkg/docker-compose.yml <<'EOF' cat > deploy-pkg/docker-compose.yml <<'EOF'
services: services:
volunteer: volunteer:
@@ -64,24 +74,29 @@ jobs:
- /opt/volunteer/app:/app:ro - /opt/volunteer/app:/app:ro
EOF EOF
- name: Install SSH key - name: Prepare SSH key
uses: shimataro/ssh-key-action@v2 env:
with: SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
key: ${{ secrets.SSH_PRIVATE_KEY }} run: |
known_hosts: unnecessary mkdir -p ~/.ssh && chmod 700 ~/.ssh
if_key_exists: replace rm -f ~/.ssh/deploy_key ~/.ssh/known_hosts
printf '%s\n' "$SSH_PRIVATE_KEY" > ~/.ssh/deploy_key
chmod 600 ~/.ssh/deploy_key
printf 'Host *\n StrictHostKeyChecking no\n UserKnownHostsFile /dev/null\n IdentityFile ~/.ssh/deploy_key\n' > ~/.ssh/config
chmod 600 ~/.ssh/config
- name: Deploy via SSH - name: Deploy via SSH
env: env:
SSH_HOST: ${{ secrets.SSH_HOST }} SSH_HOST: ${{ secrets.SSH_HOST }}
SSH_PORT: ${{ secrets.SSH_PORT || 22 }} SSH_PORT: ${{ secrets.SSH_PORT || 22 }}
SSH_USER: ${{ secrets.SSH_USER }} SSH_USER: ${{ secrets.SSH_USER }}
working-directory: /tmp/volunteer-deploy
run: | run: |
PORT="${SSH_PORT:-22}" PORT="${SSH_PORT:-22}"
ssh -o StrictHostKeyChecking=no -p $PORT $SSH_USER@$SSH_HOST "mkdir -p /opt/volunteer/app /opt/volunteer/data" ssh -p $PORT $SSH_USER@$SSH_HOST "mkdir -p /opt/volunteer/app /opt/volunteer/data"
scp -o StrictHostKeyChecking=no -P $PORT -r deploy-pkg/app/* $SSH_USER@$SSH_HOST:/opt/volunteer/app/ scp -P $PORT -r deploy-pkg/app/* $SSH_USER@$SSH_HOST:/opt/volunteer/app/
scp -o StrictHostKeyChecking=no -P $PORT deploy-pkg/docker-compose.yml $SSH_USER@$SSH_HOST:/opt/volunteer/docker-compose.yml scp -P $PORT deploy-pkg/docker-compose.yml $SSH_USER@$SSH_HOST:/opt/volunteer/docker-compose.yml
ssh -o StrictHostKeyChecking=no -p $PORT $SSH_USER@$SSH_HOST "cd /opt/volunteer && docker compose down || true && docker compose up -d --force-recreate && sleep 3 && docker compose ps" ssh -p $PORT $SSH_USER@$SSH_HOST "cd /opt/volunteer && (docker compose down || true) && docker compose up -d --force-recreate && sleep 3 && docker compose ps"
- name: Health check - name: Health check
env: env:
@@ -90,4 +105,5 @@ jobs:
SSH_USER: ${{ secrets.SSH_USER }} SSH_USER: ${{ secrets.SSH_USER }}
run: | run: |
PORT="${SSH_PORT:-22}" PORT="${SSH_PORT:-22}"
ssh -o StrictHostKeyChecking=no -p $PORT $SSH_USER@$SSH_HOST "for i in 1 2 3 4 5; do if curl -fsS http://localhost:3000/u > /dev/null; then echo 'Service OK'; exit 0; fi; echo 'Wait...'; sleep 3; done; echo 'Service FAIL'; exit 1" ssh -p $PORT $SSH_USER@$SSH_HOST "for i in 1 2 3 4 5 6 7 8; do if curl -fsS http://localhost:3000/u > /dev/null; then echo 'Service OK'; exit 0; fi; echo Wait...; sleep 3; done; echo 'Service FAIL'; exit 1"