diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index 4b4c3bc..f4d1cd7 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -1,37 +1,36 @@ -name: Build & Deploy +name: Deploy via rsync on: push: branches: - release jobs: - build: + deploy: runs-on: [ ubuntu-22.04 ] steps: - uses: actions/checkout@v4 - - name: Build Docker image - run: docker build -t barotrauma-server:${{ github.sha }} . + - name: Install rsync + run: sudo apt-get update -qq && sudo apt-get install -y -qq rsync + continue-on-error: true - - name: Tag and push to local registry + - name: Setup SSH run: | - docker tag barotrauma-server:${{ github.sha }} \ - ${{ secrets.REGISTRY_ADDR }}/barotrauma-server:latest - docker push ${{ secrets.REGISTRY_ADDR }}/barotrauma-server:latest + mkdir -p ~/.ssh + echo "${{ secrets.SSH_KEY }}" > ~/.ssh/deploy_key + chmod 600 ~/.ssh/deploy_key + ssh-keyscan -H ${{ secrets.SERVER_HOST }} >> ~/.ssh/known_hosts 2>/dev/null - - name: Deploy via SSH - uses: appleboy/ssh-action@v1 - with: - host: ${{ secrets.SERVER_HOST }} - username: ${{ secrets.SERVER_USER }} - key: ${{ secrets.SSH_KEY }} - script: | - docker pull ${{ secrets.REGISTRY_ADDR }}/barotrauma-server:latest - docker stop barotrauma 2>/dev/null || true - docker rm barotrauma 2>/dev/null || true - docker run -d --name barotrauma \ - --restart unless-stopped \ - -p 27015:27015/udp \ - -p 27015:27015/tcp \ - ${{ secrets.REGISTRY_ADDR }}/barotrauma-server:latest - docker system prune -f + - name: Rsync to /opt/barotrauma + run: | + rsync -avz --delete \ + --exclude=.git --exclude=.gitea \ + -e "ssh -i ~/.ssh/deploy_key" \ + ./ ${{ secrets.SERVER_USER }}@${{ secrets.SERVER_HOST }}:/opt/barotrauma/ + + - name: Restart server + run: | + ssh -i ~/.ssh/deploy_key \ + ${{ secrets.SERVER_USER }}@${{ secrets.SERVER_HOST }} \ + "systemctl restart barotrauma 2>/dev/null || \ + (killall DedicatedServer 2>/dev/null; sleep 2; cd /opt/barotrauma && nohup ./DedicatedServer >/dev/null 2>&1 &)"