diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index d63307f..050e12e 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -7,14 +7,23 @@ on: jobs: deploy: - runs-on: ubuntu-latest # ← FIX: Offizieller Runner mit Docker vorinstalliert + runs-on: docker steps: # --- Checkout --- - name: Checkout repo - uses: actions/checkout@v4 # ← Update auf v4 + uses: actions/checkout@v3 - # --- Login to registry --- + # --- Tools --- + - name: Install tools + run: | + apt-get update + apt-get install -y \ + docker.io \ + openssh-client \ + rsync + + # --- Docker registry login --- - name: Login to registry env: REGISTRY_USER: ${{ secrets.REGISTRY_USER }} @@ -27,35 +36,30 @@ jobs: # --- Build image --- - name: Build image run: | - echo "Starting Docker build" docker build \ - -t registry.infra.mintel.me/mintel/mb-grid-solutions:latest . - echo "Docker build completed" - docker images registry.infra.mintel.me/mintel/mb-grid-solutions:latest --format "Built image ID: {{.ID}}" + --pull \ + -t registry.infra.mintel.me/mintel/mb-grid-solutions.com:latest . # --- Push image --- - name: Push image run: | - echo "Starting Docker push" - docker push registry.infra.mintel.me/mintel/mb-grid-solutions:latest - echo "Docker push completed" + docker push registry.infra.mintel.me/mintel/mb-grid-solutions.com:latest # --- SSH setup --- - name: Setup SSH run: | mkdir -p ~/.ssh - echo "${{ secrets.ALPHA_SSH_KEY }}" > ~/.ssh/id_ed25519 + printf "%s\n" "${{ secrets.ALPHA_SSH_KEY }}" > ~/.ssh/id_ed25519 chmod 600 ~/.ssh/id_ed25519 ssh-keyscan -H alpha.mintel.me >> ~/.ssh/known_hosts # --- Sync files --- - name: Sync files to server run: | - echo "Starting file sync to server" - tar czf - docker-compose.y*ml | \ - ssh -i ~/.ssh/id_ed25519 -o StrictHostKeyChecking=no -o IPQoS=0x00 -o ConnectTimeout=30 deploy@alpha.mintel.me \ - "mkdir -p /home/deploy/sites/mb-grid-solutions/ && tar xzvf - -C /home/deploy/sites/mb-grid-solutions/ && echo 'Files synced successfully' && ls -la /home/deploy/sites/mb-grid-solutions/" - echo "File sync completed" + # Use tar to bundle files and send them via SSH in a single connection + tar czf - docker-compose.yaml | \ + ssh -i ~/.ssh/id_ed25519 -o StrictHostKeyChecking=no -o IPQoS=0x00 deploy@alpha.mintel.me \ + "mkdir -p /home/deploy/sites/mb-grid-solutions.com/ && tar xzf - -C /home/deploy/sites/mb-grid-solutions.com/" # --- Deploy --- - name: Deploy on server @@ -63,28 +67,32 @@ jobs: REGISTRY_USER: ${{ secrets.REGISTRY_USER }} REGISTRY_PASS: ${{ secrets.REGISTRY_PASS }} run: | - ssh -i ~/.ssh/id_ed25519 -o StrictHostKeyChecking=no -o IPQoS=0x00 -o ConnectTimeout=30 deploy@alpha.mintel.me " - set -ex + ssh -i ~/.ssh/id_ed25519 -o StrictHostKeyChecking=no -o IPQoS=0x00 deploy@alpha.mintel.me " + set -e echo 'Logging in to registry on server...' - printf '%s\n' '$REGISTRY_PASS' | docker login registry.infra.mintel.me -u '$REGISTRY_USER' --password-stdin - echo 'Login successful' + echo '$REGISTRY_PASS' | docker login registry.infra.mintel.me -u '$REGISTRY_USER' --password-stdin - cd /home/deploy/sites/mb-grid-solutions - echo 'Changed to directory: $(pwd)' - ls -la + cd /home/deploy/sites/mb-grid-solutions.com + + echo 'Creating .env if needed...' + echo 'SMTP_HOST=${{ secrets.SMTP_HOST }}' > .env + echo 'SMTP_PORT=${{ secrets.SMTP_PORT }}' >> .env + echo 'SMTP_USER=${{ secrets.SMTP_USER }}' >> .env + echo 'SMTP_PASS=${{ secrets.SMTP_PASS }}' >> .env + echo 'SMTP_FROM=${{ secrets.SMTP_FROM }}' >> .env + echo 'CONTACT_RECIPIENT=${{ secrets.CONTACT_RECIPIENT }}' >> .env echo 'Pulling latest image...' - docker compose pull || echo 'Pull failed - continuing anyway...' + docker compose pull app || echo 'Pull failed - continuing anyway...' - echo 'Force recreating and restarting containers...' - docker compose up -d --force-recreate --no-deps + echo 'Force recreating and restarting app container...' + docker compose up -d --force-recreate --no-deps app echo 'Pruning old images (keep last 24h)...' docker image prune -f --filter 'until=24h' echo 'Deployment finished. Checking status...' - docker compose ps - docker compose logs --tail=20 + docker compose ps app + docker compose logs --tail=20 app " - echo "SSH deploy completed" \ No newline at end of file