diff --git a/.gitea/workflows/deploy-dev.yml b/.gitea/workflows/deploy-dev.yml index 2c79bb0..5b0aa2d 100644 --- a/.gitea/workflows/deploy-dev.yml +++ b/.gitea/workflows/deploy-dev.yml @@ -5,29 +5,19 @@ on: branches: - dev workflow_dispatch: - inputs: - skip_health_check: - description: 'Skip health check?' - required: false - default: 'false' - run_migrations: - description: 'Run database migrations?' - required: false - default: 'true' jobs: deploy: runs-on: ubuntu-latest container: image: catthehacker/ubuntu:act-latest - + steps: - name: Checkout code shell: sh run: | - git clone $GITHUB_SERVER_URL/$GITHUB_REPOSITORY.git /workspace/repo || true + git clone $GITHUB_SERVER_URL/$GITHUB_REPOSITORY.git /workspace/repo cd /workspace/repo - git fetch origin $GITHUB_REF_NAME git checkout $GITHUB_REF_NAME git pull origin $GITHUB_REF_NAME @@ -38,46 +28,64 @@ jobs: docker build -t merchbay_admin:dev . docker save merchbay_admin:dev | gzip > merchbay_admin_dev.tar.gz - - name: Setup SSH and Deploy + - name: Setup SSH shell: sh run: | mkdir -p ~/.ssh chmod 700 ~/.ssh - echo "$DEPLOY_SSH_KEY" > ~/.ssh/deploy_key - chmod 600 ~/.ssh/deploy_key - ssh-keygen -y -f ~/.ssh/deploy_key > /dev/null 2>&1 || { echo "Error: Invalid SSH key format"; exit 1; } - + + echo "${SSH_PRIVATE_KEY}" > ~/.ssh/id_ed25519 + chmod 600 ~/.ssh/id_ed25519 + + ssh-keyscan -H ${DEPLOY_HOST} >> ~/.ssh/known_hosts + env: + SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }} + DEPLOY_HOST: ${{ secrets.DEPLOY_HOST }} + + - name: Deploy to Server + shell: sh + run: | 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 + + scp -i ~/.ssh/id_ed25519 \ + merchbay_admin_dev.tar.gz docker-compose.yml \ + ${DEPLOY_USER}@${DEPLOY_HOST}:/tmp/ + + ssh -i ~/.ssh/id_ed25519 ${DEPLOY_USER}@${DEPLOY_HOST} << 'EOF' + set -e + + 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 - - # .env file should already exist on server with all secrets - # If it doesn't exist, deployment will fail (this is intentional for security) - + 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 traefik-public >/dev/null 2>&1 || \ + docker network create traefik-public + export DOMAIN=dev-admin.merchbay.app export APP_URL=https://dev-admin.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-admin.merchbay.app' - " + + echo "✅ Development deployment completed" + EOF env: - DEPLOY_SSH_KEY: ${{ secrets.DEPLOY_SSH_KEY }} DEPLOY_USER: ${{ secrets.DEPLOY_USER }} DEPLOY_HOST: ${{ secrets.DEPLOY_HOST }} @@ -85,4 +93,4 @@ jobs: shell: sh run: | sleep 10 - curl -f https://dev-admin.merchbay.app || exit 1 + curl -f https://dev-admin.merchbay.app