mc-minder 0.3.3

A smart management suite for Minecraft Fabric servers on Termux/Android
Documentation
name: Release

on:
  push:
    tags:
      - 'v*'
  workflow_dispatch:

permissions:
  contents: write

jobs:
  build-linux-x86_64:
    name: Build Linux x86_64
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Install Rust toolchain
        uses: dtolnay/rust-toolchain@stable

      - name: Cache cargo registry
        uses: actions/cache@v3
        with:
          path: |
            ~/.cargo/registry
            ~/.cargo/git
            target
          key: ${{ runner.os }}-x86_64-cargo-${{ hashFiles('**/Cargo.lock') }}
          restore-keys: ${{ runner.os }}-x86_64-cargo-

      - name: Build release binary
        run: cargo build --release

      - name: Rename binary
        run: |
          mv target/release/mc-minder mc-minder-x86_64-linux
          chmod +x mc-minder-x86_64-linux

      - name: Upload artifact
        uses: actions/upload-artifact@v4
        with:
          name: mc-minder-x86_64-linux
          path: mc-minder-x86_64-linux

  build-termux-aarch64:
    name: Build Termux ARM64
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Install Rust toolchain
        uses: dtolnay/rust-toolchain@stable
        with:
          targets: aarch64-linux-android

      - name: Cache cargo registry
        uses: actions/cache@v3
        with:
          path: |
            ~/.cargo/registry
            ~/.cargo/git
            target
          key: ${{ runner.os }}-aarch64-cargo-${{ hashFiles('**/Cargo.lock') }}
          restore-keys: ${{ runner.os }}-aarch64-cargo-

      - name: Install cross via binstall
        run: |
          curl -L --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/cargo-bins/cargo-binstall/main/install-from-binstall-release.sh | bash
          cargo binstall -y cross

      - name: Build for Android ARM64
        run: cross build --target aarch64-linux-android --release

      - name: Rename binary
        run: |
          mv target/aarch64-linux-android/release/mc-minder mc-minder-termux-aarch64
          chmod +x mc-minder-termux-aarch64

      - name: Upload artifact
        uses: actions/upload-artifact@v4
        with:
          name: mc-minder-termux-aarch64
          path: mc-minder-termux-aarch64

  release:
    needs: [build-linux-x86_64, build-termux-aarch64]
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Download all artifacts
        uses: actions/download-artifact@v4
        with:
          path: ./binaries

      - name: Get version from tag
        id: get_version
        run: echo "VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT

      - name: Create Release
        uses: softprops/action-gh-release@v1
        with:
          tag_name: ${{ steps.get_version.outputs.VERSION }}
          name: MC-Minder ${{ steps.get_version.outputs.VERSION }}
          body: |
            ## MC-Minder ${{ steps.get_version.outputs.VERSION }}
            
            ### 功能特性
            - 日志监控:使用 notify 库实时监控服务器日志,事件驱动,低 CPU 占用
            - AI 聊天机器人:支持 OpenAI API 和 Ollama,玩家使用 `!` 前缀触发
            - RCON 通信:异步 RCON 协议实现,自动重连
            - 上下文记忆:按玩家保存对话历史
            - HTTP API:RESTful API 用于状态查询和命令执行
            - 一键安装:交互式初始化配置
            - 自动更新:内置 self-update 命令
            
            ### 下载
            | 平台 | 文件 |
            |------|------|
            | Linux x64 | `mc-minder-x86_64-linux` |
            | Termux/Android ARM64 | `mc-minder-termux-aarch64` |
            
            ### 安装
            ```bash
            curl -fsSL https://raw.githubusercontent.com/SharkMI-0x7E/mc-minder/main/install.sh | bash
            ```
          files: |
            binaries/mc-minder-x86_64-linux/mc-minder-x86_64-linux
            binaries/mc-minder-termux-aarch64/mc-minder-termux-aarch64
            install.sh
          draft: false
          prerelease: false