name: Release on: push: tags: - 'v*' env: CARGO_TERM_COLOR: always jobs: build: name: Build ${{ matrix.target }} runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: include: - target: x86_64-unknown-linux-gnu os: ubuntu-latest artifact_name: makima asset_name: makima-${{ github.ref_name }}-linux-x86_64 - target: x86_64-apple-darwin os: macos-15-intel artifact_name: makima asset_name: makima-${{ github.ref_name }}-macos-x86_64 - target: aarch64-apple-darwin os: macos-14 artifact_name: makima asset_name: makima-${{ github.ref_name }}-macos-arm64 steps: - name: Checkout uses: actions/checkout@v4 - name: Install Rust toolchain uses: dtolnay/rust-toolchain@nightly with: targets: ${{ matrix.target }} - name: Install dependencies (Linux) if: runner.os == 'Linux' run: | sudo apt-get update sudo apt-get install -y pkg-config libssl-dev - name: Build release binary working-directory: makima run: cargo build --release --target ${{ matrix.target }} - name: Package binary shell: bash run: | cd target/${{ matrix.target }}/release if [ "${{ runner.os }}" = "Windows" ]; then 7z a ../../../${{ matrix.asset_name }}.zip ${{ matrix.artifact_name }}.exe else tar czvf ../../../${{ matrix.asset_name }}.tar.gz ${{ matrix.artifact_name }} fi cd - - name: Upload artifact uses: actions/upload-artifact@v4 with: name: ${{ matrix.asset_name }} path: ${{ matrix.asset_name }}.tar.gz embed-daemon-binaries: name: Package Daemon Binaries needs: build runs-on: ubuntu-latest steps: - name: Download Linux x86_64 artifact uses: actions/download-artifact@v4 with: name: makima-${{ github.ref_name }}-linux-x86_64 path: daemon-binaries - name: Download macOS ARM64 artifact uses: actions/download-artifact@v4 with: name: makima-${{ github.ref_name }}-macos-arm64 path: daemon-binaries - name: Extract and repackage daemon binaries run: | mkdir -p daemon-extracted/linux-x86_64 daemon-extracted/macos-arm64 tar xzf daemon-binaries/makima-${{ github.ref_name }}-linux-x86_64.tar.gz -C daemon-extracted/linux-x86_64 tar xzf daemon-binaries/makima-${{ github.ref_name }}-macos-arm64.tar.gz -C daemon-extracted/macos-arm64 tar czvf daemon-binaries.tar.gz -C daemon-extracted . - name: Upload daemon binaries archive uses: actions/upload-artifact@v4 with: name: daemon-binaries path: daemon-binaries.tar.gz release: name: Create Release needs: [build, embed-daemon-binaries] runs-on: ubuntu-latest permissions: contents: write steps: - name: Checkout uses: actions/checkout@v4 - name: Download all artifacts uses: actions/download-artifact@v4 with: path: artifacts - name: List artifacts run: find artifacts -type f - name: Create Release (soryu repo) uses: softprops/action-gh-release@v2 with: draft: false prerelease: false generate_release_notes: false body: | ## Makima CLI v${{ github.ref_name }} Initial release of the Makima CLI - a unified command-line interface for the Makima platform. ### Available Commands - **`makima server`** - Run the Makima server for audio processing and API endpoints - **`makima daemon`** - Run the daemon that connects to the server and executes tasks - **`makima supervisor`** - Supervisor commands for managing tasks and contracts - **`makima contract`** - Contract-related commands for task tracking and reporting ### Installation Download the appropriate binary for your platform and add it to your PATH: ```bash # Linux x86_64 curl -fsSL https://github.com/soryu-co/makima/releases/download/${{ github.ref_name }}/makima-${{ github.ref_name }}-linux-x86_64.tar.gz | tar xzf - chmod +x makima && sudo mv makima /usr/local/bin/ # macOS Intel curl -fsSL https://github.com/soryu-co/makima/releases/download/${{ github.ref_name }}/makima-${{ github.ref_name }}-macos-x86_64.tar.gz | tar xzf - chmod +x makima && sudo mv makima /usr/local/bin/ # macOS Apple Silicon curl -fsSL https://github.com/soryu-co/makima/releases/download/${{ github.ref_name }}/makima-${{ github.ref_name }}-macos-arm64.tar.gz | tar xzf - chmod +x makima && sudo mv makima /usr/local/bin/ # Or use the install script (auto-detects platform): curl -fsSL https://raw.githubusercontent.com/soryu-co/makima/master/install.sh | bash ``` ### Verification After installation, verify with: ```bash makima --help ``` files: | artifacts/**/*.tar.gz - name: Create Release (makima repo) env: GH_TOKEN: ${{ secrets.MAKIMA_RELEASE_TOKEN }} run: | # Create release notes file cat > release_notes.md << 'EOF' ## Makima CLI ${{ github.ref_name }} Release of the Makima CLI - a unified command-line interface for the Makima platform. ### Available Commands - **`makima server`** - Run the Makima server for audio processing and API endpoints - **`makima daemon`** - Run the daemon that connects to the server and executes tasks - **`makima supervisor`** - Supervisor commands for managing tasks and contracts - **`makima contract`** - Contract-related commands for task tracking and reporting ### Installation Download the appropriate binary for your platform and add it to your PATH: ```bash # Linux x86_64 curl -fsSL https://github.com/soryu-co/makima/releases/download/${{ github.ref_name }}/makima-${{ github.ref_name }}-linux-x86_64.tar.gz | tar xzf - chmod +x makima && sudo mv makima /usr/local/bin/ # macOS Intel curl -fsSL https://github.com/soryu-co/makima/releases/download/${{ github.ref_name }}/makima-${{ github.ref_name }}-macos-x86_64.tar.gz | tar xzf - chmod +x makima && sudo mv makima /usr/local/bin/ # macOS Apple Silicon curl -fsSL https://github.com/soryu-co/makima/releases/download/${{ github.ref_name }}/makima-${{ github.ref_name }}-macos-arm64.tar.gz | tar xzf - chmod +x makima && sudo mv makima /usr/local/bin/ # Or use the install script (auto-detects platform): curl -fsSL https://raw.githubusercontent.com/soryu-co/makima/master/install.sh | bash ``` ### Verification After installation, verify with: ```bash makima --help ``` EOF # Collect all artifact files FILES=$(find artifacts -name "*.tar.gz" -type f | tr '\n' ' ') # Create release in soryu-co/makima repo gh release create "${{ github.ref_name }}" \ --repo soryu-co/makima \ --title "Makima CLI ${{ github.ref_name }}" \ --notes-file release_notes.md \ $FILES