63 lines
1.4 KiB
YAML
63 lines
1.4 KiB
YAML
stages:
|
|
- build
|
|
- deploy
|
|
|
|
variables:
|
|
CACHE_KEY: "node-modules-${CI_COMMIT_REF_SLUG}"
|
|
BUILD_DIR: "dist"
|
|
|
|
cache:
|
|
key: $CACHE_KEY_ALRAHMA
|
|
paths:
|
|
- node_modules/
|
|
policy: pull-push
|
|
|
|
# Build stage
|
|
build:
|
|
stage: build
|
|
image: node:20-alpine
|
|
script:
|
|
- echo "Installing dependencies..."
|
|
- npm ci
|
|
- echo "Building project..."
|
|
- npm run build
|
|
- echo "Build completed!"
|
|
artifacts:
|
|
paths:
|
|
- $BUILD_DIR_ALRAHMA/
|
|
expire_in: 1 hour
|
|
only:
|
|
- develop
|
|
|
|
# Deploy to shared hosting via FTP
|
|
deploy:
|
|
stage: deploy
|
|
image: alpine:latest
|
|
before_script:
|
|
- apk add --no-cache openssh-client sshpass rsync
|
|
script:
|
|
- echo "Starting deployment to $SSH_HOST_ALRAHMA on port $SSH_PORT_ALRAHMA..."
|
|
- |
|
|
if sshpass -p "$SSH_PASSWORD_ALRAHMA" rsync -avz --delete \
|
|
-e "ssh -p $SSH_PORT_ALRAHMA -o StrictHostKeyChecking=no" \
|
|
--exclude='.htaccess' \
|
|
--exclude='.env' \
|
|
--exclude='.git' \
|
|
$BUILD_DIR_ALRAHMA/ $SSH_USER_ALRAHMA@$SSH_HOST_ALRAHMA:$SSH_TARGET_DIR_ALRAHMA/; then
|
|
echo "✅ Deployment successful!"
|
|
echo "🌐 Website: $PRODUCTION_URL_ALRAHMA"
|
|
else
|
|
echo "❌ Deployment failed!"
|
|
exit 1
|
|
fi
|
|
environment:
|
|
name: production
|
|
url: $PRODUCTION_URL_ALRAHMA
|
|
only:
|
|
- develop
|
|
when: manual
|
|
retry:
|
|
max: 2
|
|
when:
|
|
- runner_system_failure
|
|
- stuck_or_timeout_failure |