ci: install SSH client in Alpine Linux for deployment

Fix CI failure caused by missing SSH client in node:20-alpine image.

Problem:
- Alpine Linux doesn't include SSH client by default
- This caused CI to fail with '/bin/sh: ssh: not found'

Solution:
- Install openssh-client and rsync packages using apk
- This enables SSH connections to production server

This should resolve the final CI failure and allow successful deployment.
This commit is contained in:
张翔
2026-03-30 11:31:56 +08:00
parent 3d6fd457c6
commit a314b5c370
+23 -21
View File
@@ -112,27 +112,29 @@ steps:
- dev
build-and-deploy:
image: *node_image
environment:
NODE_ENV: production
NEXT_TELEMETRY_DISABLED: 1
SSH_PRIVATE_KEY:
from_secret: ssh_private_key
depends_on:
- install-deps
- lint
- type-check
commands:
- echo "Building production artifacts"
- npm run build
- echo "Build completed"
- ls -la dist/
- echo "Deploying to production"
- mkdir -p ~/.ssh
- echo "$SSH_PRIVATE_KEY" > ~/.ssh/id_rsa
- chmod 600 ~/.ssh/id_rsa
- echo "Pre-deployment checks"
- ssh root@139.155.109.62 "echo 'Server connection OK'"
image: node:20-alpine
environment:
NODE_ENV: production
NEXT_TELEMETRY_DISABLED: 1
SSH_PRIVATE_KEY:
from_secret: ssh_private_key
depends_on:
- install-deps
- lint
- type-check
commands:
- echo "Installing SSH client"
- apk add --no-cache openssh-client rsync
- echo "Building production artifacts"
- npm run build
- echo "Build completed"
- ls -la dist/
- echo "Deploying to production"
- mkdir -p ~/.ssh
- echo "$SSH_PRIVATE_KEY" > ~/.ssh/id_rsa
- chmod 600 ~/.ssh/id_rsa
- echo "Pre-deployment checks"
- ssh root@139.155.109.62 "echo 'Server connection OK'"
- ssh root@139.155.109.62 "df -h | grep -E '/$|/home'"
- echo "Syncing build artifacts to production server"
- rsync -avz --delete dist/ root@139.155.109.62:/home/novalon/docker-app/novalon-website/dist/