Refactor deployment workflows to enhance SSH handling and streamline Docker image deployment
Some checks failed
Deploy Development / deploy (push) Failing after 2s
Some checks failed
Deploy Development / deploy (push) Failing after 2s
This commit is contained in:
@@ -13,37 +13,64 @@ jobs:
|
||||
steps:
|
||||
- name: Checkout code
|
||||
run: |
|
||||
#!/bin/sh
|
||||
git clone $GITHUB_SERVER_URL/$GITHUB_REPOSITORY.git /workspace/repo || true
|
||||
cd /workspace/repo
|
||||
git fetch origin $GITHUB_REF_NAME
|
||||
git checkout $GITHUB_REF_NAME
|
||||
git pull origin $GITHUB_REF_NAME
|
||||
|
||||
- name: Setup SSH Key
|
||||
- name: Build Docker Image
|
||||
run: |
|
||||
cd /workspace/repo
|
||||
docker build -t merchbay_admin:dev .
|
||||
docker save merchbay_admin:dev | gzip > merchbay_admin_dev.tar.gz
|
||||
|
||||
- name: Setup SSH and Deploy
|
||||
run: |
|
||||
#!/bin/sh
|
||||
mkdir -p ~/.ssh
|
||||
printf '%s' "$DEPLOY_SSH_KEY" > ~/.ssh/deploy_key
|
||||
chmod 600 ~/.ssh/deploy_key
|
||||
env:
|
||||
DEPLOY_SSH_KEY: ${{ secrets.DEPLOY_SSH_KEY }}
|
||||
|
||||
- name: Transfer Files to Development Server
|
||||
run: |
|
||||
#!/bin/sh
|
||||
|
||||
cd /workspace/repo
|
||||
scp -o StrictHostKeyChecking=no -i ~/.ssh/deploy_key merchbay_admin_dev.tar.gz docker-compose.yml "$DEPLOY_USER@$DEPLOY_HOST:/tmp/"
|
||||
|
||||
ssh -o StrictHostKeyChecking=no -i ~/.ssh/deploy_key "$DEPLOY_USER@$DEPLOY_HOST" "
|
||||
DEPLOY_DIR='/var/www/merchbay_admin_dev'
|
||||
mkdir -p \$DEPLOY_DIR
|
||||
cd /tmp
|
||||
docker load < merchbay_admin_dev.tar.gz
|
||||
cp docker-compose.yml \$DEPLOY_DIR/
|
||||
cd \$DEPLOY_DIR
|
||||
|
||||
cat > .env <<'ENVEOF'
|
||||
APP_ENV=staging
|
||||
APP_DEBUG=false
|
||||
APP_URL=https://dev.merchbay.app
|
||||
DB_HOST=$DEV_DB_HOST
|
||||
DB_PORT=${DEV_DB_PORT:-3306}
|
||||
DB_DATABASE=$DEV_DB_DATABASE
|
||||
DB_USERNAME=$DEV_DB_USERNAME
|
||||
DB_PASSWORD=$DEV_DB_PASSWORD
|
||||
DOMAIN=dev.merchbay.app
|
||||
ENVEOF
|
||||
|
||||
docker compose down || true
|
||||
docker image prune -f
|
||||
docker network inspect traefik-public >/dev/null 2>&1 || docker network create traefik-public
|
||||
export DOMAIN=dev.merchbay.app
|
||||
export APP_URL=https://dev.merchbay.app
|
||||
docker compose up -d
|
||||
sleep 10
|
||||
docker compose exec -T app php artisan migrate --force
|
||||
docker compose exec -T app php artisan config:cache
|
||||
docker compose exec -T app php artisan route:cache
|
||||
docker compose exec -T app php artisan view:cache
|
||||
rm -f /tmp/merchbay_admin_dev.tar.gz /tmp/docker-compose.yml
|
||||
echo 'Development deployment completed successfully!'
|
||||
echo 'Application available at: https://dev.merchbay.app'
|
||||
"
|
||||
env:
|
||||
DEPLOY_USER: ${{ secrets.DEPLOY_USER }}
|
||||
DEPLOY_HOST: ${{ secrets.DEPLOY_HOST }}
|
||||
|
||||
- name: Deploy to Development Server
|
||||
run: |
|
||||
#!/bin/sh
|
||||
ssh -o StrictHostKeyChecking=no -i ~/.ssh/deploy_key "$DEPLOY_USER@$DEPLOY_HOST" << 'ENDSSH'
|
||||
#!/bin/sh
|
||||
env:
|
||||
DEPLOY_SSH_KEY: ${{ secrets.DEPLOY_SSH_KEY }}
|
||||
DEPLOY_USER: ${{ secrets.DEPLOY_USER }}
|
||||
DEPLOY_HOST: ${{ secrets.DEPLOY_HOST }}
|
||||
DEV_DB_HOST: ${{ secrets.DEV_DB_HOST }}
|
||||
@@ -51,71 +78,8 @@ jobs:
|
||||
DEV_DB_DATABASE: ${{ secrets.DEV_DB_DATABASE }}
|
||||
DEV_DB_USERNAME: ${{ secrets.DEV_DB_USERNAME }}
|
||||
DEV_DB_PASSWORD: ${{ secrets.DEV_DB_PASSWORD }}
|
||||
# Set deployment directory for dev
|
||||
DEPLOY_DIR="/var/www/merchbay_admin_dev"
|
||||
|
||||
# Create deployment directory if it doesn't exist
|
||||
mkdir -p $DEPLOY_DIR
|
||||
|
||||
# Load the Docker image
|
||||
cd /tmp
|
||||
docker load < merchbay_admin_dev.tar.gz
|
||||
|
||||
# Copy docker-compose.yml to deployment directory
|
||||
cp docker-compose.yml $DEPLOY_DIR/
|
||||
|
||||
# Navigate to deployment directory
|
||||
cd $DEPLOY_DIR
|
||||
|
||||
# Update environment file for dev
|
||||
cat > .env << EOF
|
||||
APP_ENV=staging
|
||||
APP_DEBUG=false
|
||||
APP_URL=https://dev.merchbay.app
|
||||
DB_HOST=${{ secrets.DEV_DB_HOST }}
|
||||
DB_PORT=${{ secrets.DEV_DB_PORT || 3306 }}
|
||||
DB_DATABASE=${{ secrets.DEV_DB_DATABASE }}
|
||||
DB_USERNAME=${{ secrets.DEV_DB_USERNAME }}
|
||||
DB_PASSWORD=${{ secrets.DEV_DB_PASSWORD }}
|
||||
DOMAIN=dev.merchbay.app
|
||||
EOF
|
||||
|
||||
# Stop existing container
|
||||
docker compose down || true
|
||||
|
||||
# Remove old image
|
||||
docker image prune -f
|
||||
|
||||
# Ensure Traefik network exists
|
||||
docker network inspect traefik-public >/dev/null 2>&1 || docker network create traefik-public
|
||||
|
||||
# Update docker-compose for dev
|
||||
export DOMAIN=dev.merchbay.app
|
||||
export APP_URL=https://dev.merchbay.app
|
||||
|
||||
# Start the application
|
||||
docker compose up -d
|
||||
|
||||
# Wait for container to be ready
|
||||
sleep 10
|
||||
|
||||
# Run migrations
|
||||
docker compose exec -T app php artisan migrate --force
|
||||
|
||||
# Clear and cache configuration
|
||||
docker compose exec -T app php artisan config:cache
|
||||
docker compose exec -T app php artisan route:cache
|
||||
docker compose exec -T app php artisan view:cache
|
||||
|
||||
# Cleanup
|
||||
rm -f /tmp/merchbay_admin_dev.tar.gz /tmp/docker-compose.yml
|
||||
|
||||
echo "Development deployment completed successfully!"
|
||||
echo "Application available at: https://dev.merchbay.app"
|
||||
ENDSSH
|
||||
|
||||
- name: Health Check
|
||||
run: |
|
||||
#!/bin/sh
|
||||
sleep 10
|
||||
curl -f https://dev.merchbay.app || exit 1
|
||||
|
||||
Reference in New Issue
Block a user