Files
Dashboard/.github/workflows/deploy.yml

85 lines
2.5 KiB
YAML

name: Deploy to Atlas Server
on:
push:
branches:
- main
workflow_dispatch:
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Deploy to Atlas Server
env:
ATLAS_HOST: ${{ secrets.ATLAS_HOST }}
ATLAS_USER: ${{ secrets.ATLAS_USER }}
ATLAS_SSH_KEY: ${{ secrets.ATLAS_SSH_KEY }}
run: |
# Setup SSH
mkdir -p ~/.ssh
echo "$ATLAS_SSH_KEY" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
ssh-keyscan -H $ATLAS_HOST >> ~/.ssh/known_hosts
# Deploy
ssh $ATLAS_USER@$ATLAS_HOST << 'EOF'
set -e
echo "📦 Starting deployment..."
# Navigate to deploy directory
mkdir -p /opt/dashboard
cd /opt/dashboard
# Clone or update repo
if [ -d .git ]; then
echo "🔄 Updating repository..."
git pull origin main
else
echo "🔄 Cloning repository..."
git clone https://github.com/mblanke/Dashboard.git .
fi
# Check .env.local exists
if [ ! -f .env.local ]; then
echo "❌ .env.local not found. Please create it on the server."
exit 1
fi
# Build and deploy
echo "🔨 Building Docker image..."
docker-compose build --no-cache
echo "🚀 Deploying container..."
docker-compose up -d
# Wait and verify
sleep 5
if docker-compose ps | grep -q "Up"; then
echo "✅ Deployment successful!"
docker-compose logs --tail=20 dashboard
else
echo "❌ Deployment failed"
docker-compose logs dashboard
exit 1
fi
EOF
- name: Notify deployment status
if: always()
uses: actions/github-script@v6
with:
script: |
const status = '${{ job.status }}';
const message = status === 'success'
? '✅ Dashboard deployed successfully to Atlas server (100.104.196.38:3001)'
: '❌ Dashboard deployment failed. Check logs for details.';
core.notice(message);