diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index 558bbfb..8fb8b00 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -10,22 +10,19 @@ jobs: runs-on: docker steps: + # --- Checkout --- + - name: Checkout repo + uses: actions/checkout@v3 + # --- Tools --- - name: Install tools run: | apt-get update apt-get install -y \ - git \ docker.io \ openssh-client \ rsync - # --- Checkout --- - - name: Checkout repo - run: | - git clone https://git.infra.mintel.me/mmintel/mb-grid-solutions.com.git . - git checkout main - # --- Docker registry login --- - name: Login to registry env: @@ -49,26 +46,44 @@ jobs: # --- SSH setup --- - name: Setup SSH - env: - ALPHA_SSH_KEY: ${{ secrets.ALPHA_SSH_KEY }} run: | mkdir -p ~/.ssh - echo "$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 compose (yml OR yaml) --- - - name: Sync compose file + # --- Sync files --- + - name: Sync files to server run: | - rsync -av ./docker-compose.y*ml \ - deploy@alpha.mintel.me:/home/deploy/sites/mb-grid-solutions/ + # Use IPQoS=0x00 to prevent connection drops in some network environments + # Use tar to bundle files and send them via SSH in a single connection + tar czf - docker-compose.y*ml | \ + ssh -i ~/.ssh/id_ed25519 -o StrictHostKeyChecking=no -o IPQoS=0x00 deploy@alpha.mintel.me \ + "mkdir -p /home/deploy/sites/mb-grid-solutions/ && tar xzf - -C /home/deploy/sites/mb-grid-solutions/" # --- Deploy --- - name: Deploy on server + env: + REGISTRY_USER: ${{ secrets.REGISTRY_USER }} + REGISTRY_PASS: ${{ secrets.REGISTRY_PASS }} run: | - ssh deploy@alpha.mintel.me ' - cd /home/deploy/sites/mb-grid-solutions && - docker compose -f docker-compose.yml pull 2>/dev/null || - docker compose -f docker-compose.yaml pull && - docker compose up -d - ' \ No newline at end of file + ssh -i ~/.ssh/id_ed25519 -o StrictHostKeyChecking=no -o IPQoS=0x00 deploy@alpha.mintel.me " + set -e + echo 'Logging in to registry on server...' + echo '$REGISTRY_PASS' | docker login registry.infra.mintel.me -u '$REGISTRY_USER' --password-stdin + + cd /home/deploy/sites/mb-grid-solutions + + echo 'Pulling latest images...' + # Try both .yml and .yaml + if [ -f docker-compose.yml ]; then + docker compose pull + docker compose up -d + elif [ -f docker-compose.yaml ]; then + docker compose -f docker-compose.yaml pull + docker compose -f docker-compose.yaml up -d + fi + + echo 'Pruning old images...' + docker image prune -f + "