name: Deploy to NAS on: push: branches: - master workflow_dispatch: jobs: deploy: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Generate package-lock.json run: npm install - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Build Docker image uses: docker/build-push-action@v5 with: context: . push: false load: true tags: kekbot:latest cache-from: type=gha cache-to: type=gha,mode=max - name: Save Docker image run: docker save kekbot:latest -o kekbot.tar - name: Install SSH dependencies run: | sudo apt-get update sudo apt-get install -y sshpass - name: Generate .env file run: | cat > .env << EOF DISCORD_TOKEN=${{ secrets.DISCORD_TOKEN }} CLIENT_ID=${{ secrets.DISCORD_CLIENT_ID }} NANOGPT_API_KEY=${{ secrets.NANOGPT_API_KEY }} NODE_ENV=production EOF - name: Deploy to NAS env: SSH_PASSWORD: ${{ secrets.NAS_SSH_PASSWORD }} run: | # Create app directory on NAS sshpass -p "$SSH_PASSWORD" ssh -o StrictHostKeyChecking=no hllywluis@luis-nas.lan "mkdir -p /mnt/kCloud/Home/hllywluis/kekbot" # Copy Docker files (without .env, it's generated separately) sshpass -p "$SSH_PASSWORD" scp -o StrictHostKeyChecking=no docker-compose.yml Dockerfile kekbot.tar hllywluis@luis-nas.lan:/mnt/kCloud/Home/hllywluis/kekbot/ sshpass -p "$SSH_PASSWORD" scp -o StrictHostKeyChecking=no .env hllywluis@luis-nas.lan:/mnt/kCloud/Home/hllywluis/kekbot/ # Load Docker image and deploy sshpass -p "$SSH_PASSWORD" ssh -o StrictHostKeyChecking=no hllywluis@luis-nas.lan << 'EOF' cd /mnt/kCloud/Home/hllywluis/kekbot docker load -i kekbot.tar docker compose down || true docker compose up -d EOF