diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..e346500 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,147 @@ +name: release + +on: + workflow_dispatch: + inputs: + release_name: + description: "release page name" + required: true + push: + tags: + - "[0-9]+.[0-9]+.[0-9]+*" + +jobs: + build-ubuntu-20.04-cuda12: + name: Build Ubuntu 20.04 cuda12 + runs-on: ubuntu-latest + container: wasmedge/wasmedge:ubuntu-20.04-build-gcc-cuda12 + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Install Rust-stable + uses: dtolnay/rust-toolchain@stable + + - name: Install WasmEdge + run: | + curl -sSf https://raw.githubusercontent.com/WasmEdge/WasmEdge/master/utils/install_v2.sh | bash -s -- --version=0.14.1 + source $HOME/.wasmedge/env + + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get install pkg-config llvm clang + + - name: Install Torch + run: | + wget https://download.pytorch.org/libtorch/cu124/libtorch-win-shared-with-deps-2.4.0%2Bcu124.zip + unzip libtorch-win-shared-with-deps-2.4.0+cu124.zip + + - name: Build + run: | + export LIBTORCH_PATH=$(pwd)/libtorch + cargo build --release + mv ./target/release/libgpt_sovits_plugin.so ./libgpt_sovits_plugin.ubuntu-latest.cpu.so + + - name: Create release page + uses: softprops/action-gh-release@v2 + if: startsWith(github.ref, 'refs/tags/') + with: + files: | + ./target/release/libgpt_sovits_plugin.so + token: ${{ secrets.UPLOAD_TOKEN }} + + - name: Upload to release page + if: ${{ github.event_name == 'workflow_dispatch' }} + run: | + gh release upload ${{ github.event.inputs.release_name }} ./target/release/libgpt_sovits_plugin.so --clobber + env: + GH_TOKEN: ${{ secrets.UPDATE_TOKEN }} + + build-ubuntu-latest-cpu: + name: Build Ubuntu Latest CPU + runs-on: ubuntu-latest + container: wasmedge/wasmedge:ubuntu-20.04-build-gcc-cuda12 + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Install Rust-stable + uses: dtolnay/rust-toolchain@stable + + - name: Install WasmEdge + run: | + curl -sSf https://raw.githubusercontent.com/WasmEdge/WasmEdge/master/utils/install_v2.sh | bash -s -- --version=0.14.1 + source $HOME/.wasmedge/env + + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get install pkg-config llvm clang + + - name: Install Torch + run: | + wget https://download.pytorch.org/libtorch/cpu/libtorch-cxx11-abi-shared-with-deps-2.4.0%2Bcpu.zip + unzip libtorch-cxx11-abi-shared-with-deps-2.4.0+cpu.zip + + - name: Build + run: | + export LIBTORCH_PATH=$(pwd)/libtorch + cargo build --release + mv ./target/release/libgpt_sovits_plugin.so ./libgpt_sovits_plugin.ubuntu-latest.cpu.so + + - name: Create release page + uses: softprops/action-gh-release@v2 + if: startsWith(github.ref, 'refs/tags/') + with: + files: | + ./target/release/libgpt_sovits_plugin.so + token: ${{ secrets.UPLOAD_TOKEN }} + + - name: Upload to release page + if: ${{ github.event_name == 'workflow_dispatch' }} + run: | + gh release upload ${{ github.event.inputs.release_name }} ./target/release/libgpt_sovits_plugin.so --clobber + env: + GH_TOKEN: ${{ secrets.UPDATE_TOKEN }} + + build-macos-cpu: + name : Build for MacOS + runs-on: macos-14 + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Install Rust-stable + uses: dtolnay/rust-toolchain@stable + + - name: Install WasmEdge + run: | + curl -sSf https://raw.githubusercontent.com/WasmEdge/WasmEdge/master/utils/install_v2.sh | bash -s -- --version=0.14.1 + source $HOME/.wasmedge/env + + - name: Install Torch + run: | + wget https://download.pytorch.org/libtorch/cpu/libtorch-macos-arm64-2.4.0.zip + unzip libtorch-macos-arm64-2.4.0.zip + + - name: Build + run: | + export LIBTORCH_PATH=$(pwd)/libtorch + cargo build --release + mv ./target/release/libgpt_sovits_plugin.dylib ./libgpt_sovits_plugin.macos.cpu.dylib + + - name: Create release page + uses: softprops/action-gh-release@v2 + if: startsWith(github.ref, 'refs/tags/') + with: + files: | + ./target/release/libgpt_sovits_plugin.so + token: ${{ secrets.UPLOAD_TOKEN }} + + - name: Upload to release page + if: ${{ github.event_name == 'workflow_dispatch' }} + run: | + gh release upload ${{ github.event.inputs.release_name }} ./target/release/libgpt_sovits_plugin.so --clobber + env: + GH_TOKEN: ${{ secrets.UPDATE_TOKEN }}