name: Deploy run-name: Deploy to barabingo on: push: branches: [main, master] jobs: build-and-deploy: runs-on: [ubuntu-22.04] steps: - uses: actions/checkout@v4 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Install SSH key run: | mkdir -p ~/.ssh echo "${{ secrets.SSH_PKEY }}" > ~/.ssh/id_ed25519 chmod 600 ~/.ssh/id_ed25519 ssh-keyscan -H barabingo >> ~/.ssh/known_hosts 2>/dev/null - name: Build Docker image run: | docker build -t barabingo:latest . - name: Save and compress image run: | docker save barabingo:latest | gzip > /tmp/barabingo.tar.gz - name: Copy files to server run: | ssh root@barabingo 'mkdir -p /opt/barabingo/data /opt/barabingo/uploads' ssh root@barabingo 'echo "FREESOUND_API_KEY=${{ secrets.FREESOUND_API_KEY }}" > /opt/barabingo/.env' scp /tmp/barabingo.tar.gz docker-compose.yml root@barabingo:/opt/barabingo/ - name: Deploy on server run: | ssh root@barabingo 'chmod 777 /opt/barabingo/data /opt/barabingo/uploads && cd /opt/barabingo && docker load < barabingo.tar.gz && docker compose down --remove-orphans 2>/dev/null; docker compose --env-file .env up -d && rm -f barabingo.tar.gz && docker image prune -f'