diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index 3406a42..785e3c2 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -32,6 +32,10 @@ jobs: - name: Setup SSH and Deploy shell: sh + env: + DEPLOY_SSH_KEY: ${{ secrets.DEPLOY_SSH_KEY }} + DEPLOY_USER: ${{ secrets.DEPLOY_USER }} + DEPLOY_HOST: ${{ secrets.DEPLOY_HOST }} run: | mkdir -p ~/.ssh chmod 700 ~/.ssh @@ -42,49 +46,43 @@ jobs: cd /workspace/repo scp -o StrictHostKeyChecking=no -i ~/.ssh/deploy_key merchbay_admin.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' - mkdir -p \$DEPLOY_DIR - cd /tmp - docker load < merchbay_admin.tar.gz - - echo 'Removing old merchbay_admin images' - docker images | grep merchbay_admin | grep -v "\$(docker images merchbay_admin:latest -q)" | awk '{print \$3}' | xargs -r docker rmi -f || true - - cp docker-compose.yml \$DEPLOY_DIR/ - cd \$DEPLOY_DIR - - # .env file should already exist on server with all required variables - # Required: DB_*, IMAGES_DIRECTORY, PRODUCTION_PRIVATE_SERVER - # If it doesn't exist, deployment will fail (this is intentional for security) - - docker compose down || true - docker image prune -f - docker network inspect traefik-public >/dev/null 2>&1 || docker network create traefik-public - docker network inspect crew-app-net >/dev/null 2>&1 || docker network create crew-app-net - export DOMAIN=admin.merchbay.app - export APP_URL=https://admin.merchbay.app - docker compose up -d - sleep 10 - docker compose exec -T app php artisan config:cache - docker compose exec -T app php artisan route:cache - rm -f /tmp/merchbay_admin.tar.gz /tmp/docker-compose.yml - - echo 'Aggressive Docker cleanup to reclaim space' - docker image prune -af --filter "until=24h" || true - docker container prune -f || true - docker volume prune -f || true - docker builder prune -af --filter "until=48h" || true - echo 'Docker space usage:' - docker system df - - echo 'Production deployment completed successfully!' - echo 'Application available at: https://admin.merchbay.app' - " - env: - DEPLOY_SSH_KEY: ${{ secrets.DEPLOY_SSH_KEY }} - DEPLOY_USER: ${{ secrets.DEPLOY_USER }} - DEPLOY_HOST: ${{ secrets.DEPLOY_HOST }} + ssh -o StrictHostKeyChecking=no -i ~/.ssh/deploy_key "$DEPLOY_USER@$DEPLOY_HOST" 'bash -s' << 'ENDSSH' + set -e + DEPLOY_DIR="/var/www/merchbay_admin" + mkdir -p "$DEPLOY_DIR" + cd /tmp + docker load < merchbay_admin.tar.gz + + echo "Removing old merchbay_admin images" + CURRENT_IMAGE=$(docker images merchbay_admin:latest -q) + docker images | grep merchbay_admin | grep -v "$CURRENT_IMAGE" | awk '{print $3}' | xargs -r docker rmi -f || true + + cp docker-compose.yml "$DEPLOY_DIR/" + cd "$DEPLOY_DIR" + + docker compose down || true + docker image prune -f + docker network inspect traefik-public >/dev/null 2>&1 || docker network create traefik-public + docker network inspect crew-app-net >/dev/null 2>&1 || docker network create crew-app-net + export DOMAIN=admin.merchbay.app + export APP_URL=https://admin.merchbay.app + docker compose up -d + sleep 10 + docker compose exec -T app php artisan config:cache + docker compose exec -T app php artisan route:cache + rm -f /tmp/merchbay_admin.tar.gz /tmp/docker-compose.yml + + echo "Aggressive Docker cleanup to reclaim space" + docker image prune -af --filter "until=24h" || true + docker container prune -f || true + docker volume prune -f || true + docker builder prune -af --filter "until=48h" || true + echo "Docker space usage:" + docker system df + + echo "Production deployment completed successfully!" + echo "Application available at: https://admin.merchbay.app" + ENDSSH - name: Health Check shell: sh