fix(ci): refactor SSH deployment to manual ssh/scp (aligned with klz-2026)
Some checks failed
Build & Deploy / 🔍 Prepare Environment (push) Successful in 5s
Build & Deploy / 🧪 QA (push) Successful in 1m13s
Build & Deploy / 🏗️ Build (push) Successful in 4m47s
Build & Deploy / 🚀 Deploy (push) Failing after 6s
Build & Deploy / 🔔 Notifications (push) Successful in 2s
Some checks failed
Build & Deploy / 🔍 Prepare Environment (push) Successful in 5s
Build & Deploy / 🧪 QA (push) Successful in 1m13s
Build & Deploy / 🏗️ Build (push) Successful in 4m47s
Build & Deploy / 🚀 Deploy (push) Failing after 6s
Build & Deploy / 🔔 Notifications (push) Successful in 2s
This commit is contained in:
@@ -157,42 +157,57 @@ jobs:
|
|||||||
container:
|
container:
|
||||||
image: catthehacker/ubuntu:act-latest
|
image: catthehacker/ubuntu:act-latest
|
||||||
steps:
|
steps:
|
||||||
- name: 🚀 Deploy via SSH
|
- name: Checkout repository
|
||||||
uses: appleboy/ssh-action@master
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
host: ${{ secrets.SSH_HOST }}
|
fetch-depth: 1
|
||||||
username: root
|
|
||||||
key: ${{ secrets.SSH_PRIVATE_KEY }}
|
- name: 🚀 Deploy via SSH
|
||||||
script: |
|
shell: bash
|
||||||
|
run: |
|
||||||
|
echo "Deploying to alpha.mintel.me"
|
||||||
|
|
||||||
|
mkdir -p ~/.ssh
|
||||||
|
echo "${{ secrets.ALPHA_SSH_KEY }}" > ~/.ssh/id_ed25519
|
||||||
|
chmod 600 ~/.ssh/id_ed25519
|
||||||
|
ssh-keyscan -H alpha.mintel.me >> ~/.ssh/known_hosts 2>/dev/null
|
||||||
|
|
||||||
|
# Generate Environment File
|
||||||
|
cat > .env.deploy << EOF
|
||||||
|
IMAGE_TAG=${{ needs.prepare.outputs.image_tag }}
|
||||||
|
TRAEFIK_HOST=${{ needs.prepare.outputs.traefik_host }}
|
||||||
|
PROJECT_NAME=${{ needs.prepare.outputs.project_name }}
|
||||||
|
NEXT_PUBLIC_BASE_URL=${{ needs.prepare.outputs.next_public_base_url }}
|
||||||
|
|
||||||
|
# Directus
|
||||||
|
DIRECTUS_URL=${{ needs.prepare.outputs.directus_url }}
|
||||||
|
DIRECTUS_HOST=${{ needs.prepare.outputs.directus_host }}
|
||||||
|
DIRECTUS_API_TOKEN=${{ secrets.DIRECTUS_API_TOKEN }}
|
||||||
|
DIRECTUS_ADMIN_EMAIL=${{ secrets.DIRECTUS_ADMIN_EMAIL || 'admin@mintel.me' }}
|
||||||
|
DIRECTUS_ADMIN_PASSWORD=${{ secrets.DIRECTUS_ADMIN_PASSWORD }}
|
||||||
|
DIRECTUS_DB_NAME=${{ secrets.DIRECTUS_DB_NAME || 'directus' }}
|
||||||
|
DIRECTUS_DB_USER=${{ secrets.DIRECTUS_DB_USER || 'directus' }}
|
||||||
|
DIRECTUS_DB_PASSWORD=${{ secrets.DIRECTUS_DB_PASSWORD }}
|
||||||
|
DIRECTUS_KEY=${{ secrets.DIRECTUS_KEY }}
|
||||||
|
DIRECTUS_SECRET=${{ secrets.DIRECTUS_SECRET }}
|
||||||
|
EOF
|
||||||
|
|
||||||
|
APP_DIR="/home/deploy/sites/mb-grid-solutions.com"
|
||||||
|
ssh -o StrictHostKeyChecking=accept-new root@alpha.mintel.me "mkdir -p $APP_DIR"
|
||||||
|
|
||||||
|
scp -o StrictHostKeyChecking=accept-new .env.deploy root@alpha.mintel.me:$APP_DIR/${{ needs.prepare.outputs.env_file }}
|
||||||
|
scp -o StrictHostKeyChecking=accept-new docker-compose.yml root@alpha.mintel.me:$APP_DIR/docker-compose.yml
|
||||||
|
|
||||||
|
ssh -o StrictHostKeyChecking=accept-new root@alpha.mintel.me bash << 'EOF'
|
||||||
|
set -e
|
||||||
APP_DIR="/home/deploy/sites/mb-grid-solutions.com"
|
APP_DIR="/home/deploy/sites/mb-grid-solutions.com"
|
||||||
mkdir -p $APP_DIR
|
|
||||||
cd $APP_DIR
|
cd $APP_DIR
|
||||||
|
|
||||||
# Update Environment
|
|
||||||
cat > ${{ needs.prepare.outputs.env_file }} << EOF
|
|
||||||
IMAGE_TAG=${{ needs.prepare.outputs.image_tag }}
|
|
||||||
TRAEFIK_HOST=${{ needs.prepare.outputs.traefik_host }}
|
|
||||||
PROJECT_NAME=${{ needs.prepare.outputs.project_name }}
|
|
||||||
NEXT_PUBLIC_BASE_URL=${{ needs.prepare.outputs.next_public_base_url }}
|
|
||||||
|
|
||||||
# Directus
|
|
||||||
DIRECTUS_URL=${{ needs.prepare.outputs.directus_url }}
|
|
||||||
DIRECTUS_HOST=${{ needs.prepare.outputs.directus_host }}
|
|
||||||
DIRECTUS_API_TOKEN=${{ secrets.DIRECTUS_API_TOKEN }}
|
|
||||||
DIRECTUS_ADMIN_EMAIL=${{ secrets.DIRECTUS_ADMIN_EMAIL || 'admin@mintel.me' }}
|
|
||||||
DIRECTUS_ADMIN_PASSWORD=${{ secrets.DIRECTUS_ADMIN_PASSWORD }}
|
|
||||||
DIRECTUS_DB_NAME=${{ secrets.DIRECTUS_DB_NAME || 'directus' }}
|
|
||||||
DIRECTUS_DB_USER=${{ secrets.DIRECTUS_DB_USER || 'directus' }}
|
|
||||||
DIRECTUS_DB_PASSWORD=${{ secrets.DIRECTUS_DB_PASSWORD }}
|
|
||||||
DIRECTUS_KEY=${{ secrets.DIRECTUS_KEY }}
|
|
||||||
DIRECTUS_SECRET=${{ secrets.DIRECTUS_SECRET }}
|
|
||||||
EOF
|
|
||||||
|
|
||||||
# Sync docker-compose
|
|
||||||
echo "${{ secrets.REGISTRY_PASS }}" | docker login registry.infra.mintel.me -u "${{ secrets.REGISTRY_USER }}" --password-stdin
|
echo "${{ secrets.REGISTRY_PASS }}" | docker login registry.infra.mintel.me -u "${{ secrets.REGISTRY_USER }}" --password-stdin
|
||||||
docker compose -p "${{ needs.prepare.outputs.project_name }}" --env-file ${{ needs.prepare.outputs.env_file }} pull
|
docker compose -p "${{ needs.prepare.outputs.project_name }}" --env-file ${{ needs.prepare.outputs.env_file }} pull
|
||||||
docker compose -p "${{ needs.prepare.outputs.project_name }}" --env-file ${{ needs.prepare.outputs.env_file }} up -d --remove-orphans
|
docker compose -p "${{ needs.prepare.outputs.project_name }}" --env-file ${{ needs.prepare.outputs.env_file }} up -d --remove-orphans
|
||||||
docker system prune -f --filter "until=24h"
|
docker system prune -f --filter "until=24h"
|
||||||
|
EOF
|
||||||
|
|
||||||
notifications:
|
notifications:
|
||||||
name: 🔔 Notifications
|
name: 🔔 Notifications
|
||||||
|
|||||||
Reference in New Issue
Block a user