Add automated preview deployment configuration
Optional automated deployment job for preview environments. Requires SSH access to satware.ai server for direct deployment.
This commit is contained in:
@@ -0,0 +1,65 @@
|
|||||||
|
# 🚀 Automated Preview Deployment (Optional)
|
||||||
|
# Add this job to your .gitlab-ci.yml if you want automated preview deployment
|
||||||
|
|
||||||
|
deploy_preview_automated:
|
||||||
|
stage: deploy
|
||||||
|
image: alpine:latest
|
||||||
|
rules:
|
||||||
|
- if: $CI_COMMIT_REF_NAME =~ /^(feature|fix|blog|test|preview)\/.*/
|
||||||
|
before_script:
|
||||||
|
# Install SSH and rsync
|
||||||
|
- apk add --no-cache openssh-client rsync
|
||||||
|
|
||||||
|
# Setup SSH key
|
||||||
|
- eval $(ssh-agent -s)
|
||||||
|
- echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add -
|
||||||
|
- mkdir -p ~/.ssh
|
||||||
|
- chmod 700 ~/.ssh
|
||||||
|
- ssh-keyscan -H $DEPLOY_SERVER >> ~/.ssh/known_hosts
|
||||||
|
|
||||||
|
script:
|
||||||
|
# Extract clean branch name
|
||||||
|
- BRANCH_PATH=$(echo "${CI_COMMIT_REF_NAME}" | sed 's|feature/||g' | sed 's|fix/||g' | sed 's|blog/||g' | sed 's|[^a-zA-Z0-9-]|-|g' | tr '[:upper:]' '[:lower:]')
|
||||||
|
- PREVIEW_URL="${PREVIEW_BASE_URL}/${BRANCH_PATH}/"
|
||||||
|
|
||||||
|
# Deploy to server
|
||||||
|
- echo "🚀 Deploying preview to ${DEPLOY_SERVER}:${DEPLOY_PATH}/${BRANCH_PATH}/"
|
||||||
|
- rsync -avz --delete site/ ${DEPLOY_USER}@${DEPLOY_SERVER}:${DEPLOY_PATH}/${BRANCH_PATH}/
|
||||||
|
|
||||||
|
# Verify deployment
|
||||||
|
- echo "✅ Preview deployed successfully!"
|
||||||
|
- echo "📍 URL: ${PREVIEW_URL}"
|
||||||
|
|
||||||
|
# Optional: Send notification
|
||||||
|
- |
|
||||||
|
curl -X POST -H 'Content-type: application/json' \
|
||||||
|
--data "{\"text\":\"🔍 Preview deployed: ${PREVIEW_URL}\"}" \
|
||||||
|
"$SLACK_WEBHOOK_URL" || true
|
||||||
|
|
||||||
|
environment:
|
||||||
|
name: preview/${CI_COMMIT_REF_SLUG}
|
||||||
|
url: ${PREVIEW_BASE_URL}/${BRANCH_PATH}/
|
||||||
|
on_stop: cleanup_preview_automated
|
||||||
|
|
||||||
|
# 🧹 Automated Preview Cleanup
|
||||||
|
cleanup_preview_automated:
|
||||||
|
stage: cleanup
|
||||||
|
image: alpine:latest
|
||||||
|
rules:
|
||||||
|
- if: $CI_COMMIT_REF_NAME =~ /^(feature|fix|blog|test|preview)\/.*/
|
||||||
|
when: manual
|
||||||
|
before_script:
|
||||||
|
- apk add --no-cache openssh-client
|
||||||
|
- eval $(ssh-agent -s)
|
||||||
|
- echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add -
|
||||||
|
- mkdir -p ~/.ssh
|
||||||
|
- chmod 700 ~/.ssh
|
||||||
|
- ssh-keyscan -H $DEPLOY_SERVER >> ~/.ssh/known_hosts
|
||||||
|
script:
|
||||||
|
- BRANCH_PATH=$(echo "${CI_COMMIT_REF_NAME}" | sed 's|feature/||g' | sed 's|fix/||g' | sed 's|blog/||g' | sed 's|[^a-zA-Z0-9-]|-|g' | tr '[:upper:]' '[:lower:]')
|
||||||
|
- echo "🧹 Cleaning up preview: ${DEPLOY_PATH}/${BRANCH_PATH}/"
|
||||||
|
- ssh ${DEPLOY_USER}@${DEPLOY_SERVER} "rm -rf ${DEPLOY_PATH}/${BRANCH_PATH}/"
|
||||||
|
- echo "✅ Preview cleanup completed"
|
||||||
|
environment:
|
||||||
|
name: preview/${CI_COMMIT_REF_SLUG}
|
||||||
|
action: stop
|
||||||
Reference in New Issue
Block a user