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
Deploy to Server / deploy (push) Failing after 0s
This commit is contained in:
+37
-21
@@ -11,40 +11,50 @@ jobs:
|
||||
- ubuntu-latest
|
||||
- self-hosted
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
- name: Prepare workspace
|
||||
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
|
||||
working-directory: /tmp/volunteer-deploy/src
|
||||
run: |
|
||||
echo "registry=https://registry.npmmirror.com" > ~/.npmrc
|
||||
npm config set registry https://registry.npmmirror.com
|
||||
|
||||
- name: Build client (native)
|
||||
working-directory: ./client
|
||||
working-directory: /tmp/volunteer-deploy/src/client
|
||||
run: |
|
||||
npm install --no-audit --no-fund
|
||||
npm run build
|
||||
|
||||
- name: Build server (native)
|
||||
working-directory: ./server
|
||||
working-directory: /tmp/volunteer-deploy/src/server
|
||||
run: |
|
||||
npm install --no-audit --no-fund
|
||||
npm run build
|
||||
|
||||
- name: Install server production deps
|
||||
working-directory: ./server
|
||||
working-directory: /tmp/volunteer-deploy/src/server
|
||||
run: |
|
||||
rm -rf node_modules
|
||||
npm install --omit=dev --no-audit --no-fund
|
||||
|
||||
- name: Prepare deploy package
|
||||
working-directory: /tmp/volunteer-deploy
|
||||
run: |
|
||||
mkdir -p deploy-pkg/app
|
||||
cp -r client/dist deploy-pkg/app/client/dist
|
||||
cp -r server/dist deploy-pkg/app/server/dist
|
||||
cp -r server/node_modules deploy-pkg/app/server/node_modules
|
||||
rm -rf deploy-pkg && mkdir -p deploy-pkg/app
|
||||
cp -r src/client/dist deploy-pkg/app/client/dist
|
||||
cp -r src/server/dist deploy-pkg/app/server/dist
|
||||
cp -r src/server/node_modules deploy-pkg/app/server/node_modules
|
||||
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'
|
||||
services:
|
||||
volunteer:
|
||||
@@ -64,24 +74,29 @@ jobs:
|
||||
- /opt/volunteer/app:/app:ro
|
||||
EOF
|
||||
|
||||
- name: Install SSH key
|
||||
uses: shimataro/ssh-key-action@v2
|
||||
with:
|
||||
key: ${{ secrets.SSH_PRIVATE_KEY }}
|
||||
known_hosts: unnecessary
|
||||
if_key_exists: replace
|
||||
- name: Prepare SSH key
|
||||
env:
|
||||
SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
|
||||
run: |
|
||||
mkdir -p ~/.ssh && chmod 700 ~/.ssh
|
||||
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
|
||||
env:
|
||||
SSH_HOST: ${{ secrets.SSH_HOST }}
|
||||
SSH_PORT: ${{ secrets.SSH_PORT || 22 }}
|
||||
SSH_USER: ${{ secrets.SSH_USER }}
|
||||
working-directory: /tmp/volunteer-deploy
|
||||
run: |
|
||||
PORT="${SSH_PORT:-22}"
|
||||
ssh -o StrictHostKeyChecking=no -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 -o StrictHostKeyChecking=no -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 "mkdir -p /opt/volunteer/app /opt/volunteer/data"
|
||||
scp -P $PORT -r deploy-pkg/app/* $SSH_USER@$SSH_HOST:/opt/volunteer/app/
|
||||
scp -P $PORT deploy-pkg/docker-compose.yml $SSH_USER@$SSH_HOST:/opt/volunteer/docker-compose.yml
|
||||
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
|
||||
env:
|
||||
@@ -90,4 +105,5 @@ jobs:
|
||||
SSH_USER: ${{ secrets.SSH_USER }}
|
||||
run: |
|
||||
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"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user