name: Build Releases on: push: tags: - v* workflow_dispatch: inputs: tag: description: 'Release Tag' required: true type: string env: CARGO_TERM_COLOR: always jobs: build-release-cross: runs-on: ubuntu-latest env: RUST_BACKTRACE: full strategy: fail-fast: false matrix: platform: - target: i686-unknown-linux-musl toolchain: stable - target: x86_64-pc-windows-gnu toolchain: stable - target: x86_64-unknown-linux-gnu toolchain: stable - target: x86_64-unknown-linux-musl toolchain: stable - target: armv7-unknown-linux-musleabihf toolchain: stable - target: armv7-unknown-linux-gnueabihf toolchain: stable - target: arm-unknown-linux-gnueabi toolchain: stable - target: arm-unknown-linux-gnueabihf toolchain: stable - target: arm-unknown-linux-musleabi toolchain: stable - target: arm-unknown-linux-musleabihf toolchain: stable - target: aarch64-unknown-linux-gnu toolchain: stable - target: aarch64-unknown-linux-musl toolchain: stable - target: mips-unknown-linux-gnu toolchain: nightly # cross mips-*-musl images are disabled # - target: mips-unknown-linux-musl # toolchain: nightly - target: mipsel-unknown-linux-gnu toolchain: nightly # - target: mipsel-unknown-linux-musl # toolchain: nightly # FIXME: ring doesn't support mips64 CPU # - target: mips64-unknown-linux-gnuabi64 # toolchain: nightly # - target: mips64-unknown-linux-muslabi64 # toolchain: nightly - target: mips64el-unknown-linux-gnuabi64 toolchain: nightly # FIXME: Link Error. # = note: mips64el-linux-muslsf-gcc: error: crt1.o: No such file or directory # mips64el-linux-muslsf-gcc: error: crti.o: No such file or directory # mips64el-linux-muslsf-gcc: error: crtbegin.o: No such file or directory # mips64el-linux-muslsf-gcc: error: crtend.o: No such file or directory # mips64el-linux-muslsf-gcc: error: crtn.o: No such file or directory # - target: mips64el-unknown-linux-muslabi64 # toolchain: nightly - target: x86_64-unknown-freebsd toolchain: stable - target: x86_64-unknown-netbsd toolchain: stable - target: loongarch64-unknown-linux-gnu toolchain: stable - target: loongarch64-unknown-linux-musl toolchain: stable - target: riscv64gc-unknown-linux-gnu toolchain: stable - target: riscv64gc-unknown-linux-musl toolchain: stable - target: aarch64-linux-android toolchain: stable - target: x86_64-linux-android toolchain: stable steps: - name: Free Disk Space (Ubuntu) uses: jlumbroso/free-disk-space@main - name: Install LLVM and Clang run: sudo apt update && sudo apt install -y clang - uses: actions/checkout@v6 - name: Install Rust run: | rustup set profile minimal rustup toolchain install ${{ matrix.platform.toolchain }} rustup default ${{ matrix.platform.toolchain }} rustup override set ${{ matrix.platform.toolchain }} - name: Install cross run: cargo install cross --git https://github.com/cross-rs/cross - name: Build ${{ matrix.platform.target }} timeout-minutes: 120 run: | compile_target=${{ matrix.platform.target }} compile_features="-f full" if [[ "$compile_target" == *"-windows-"* ]]; then compile_features="$compile_features -f winservice" fi if [[ "$compile_target" == "mips-"* || "$compile_target" == "mipsel-"* || "$compile_target" == "mips64-"* || "$compile_target" == "mips64el-"* ]]; then sudo apt-get update -y && sudo apt-get install -y upx; if [[ "$?" == "0" ]]; then compile_compress="-u" fi compile_nightly="-n" #compile_cargo_flags="-Z build-std=std,panic_abort,proc_macro" fi cd build ./build-release -t ${{ matrix.platform.target }} $compile_features $compile_compress $compile_nightly $compile_cargo_flags - name: Upload Github Assets uses: softprops/action-gh-release@v2 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: files: build/release/* prerelease: ${{ contains(github.ref_name, '-') }} tag_name: ${{ inputs.tag || github.ref_name }} build-release-unix: runs-on: ${{ matrix.os }} env: BUILD_EXTRA_FEATURES: "full" RUST_BACKTRACE: full strategy: fail-fast: false matrix: # os: [ubuntu-latest, macos-latest] os: [macos-latest] target: - x86_64-apple-darwin - aarch64-apple-darwin steps: - uses: actions/checkout@v6 - name: Install GNU tar if: runner.os == 'macOS' run: | brew install gnu-tar # echo "::add-path::/usr/local/opt/gnu-tar/libexec/gnubin" echo "/usr/local/opt/gnu-tar/libexec/gnubin" >> $GITHUB_PATH - name: Install Rust run: | rustup set profile minimal rustup toolchain install stable rustup default stable rustup override set stable rustup target add --toolchain stable ${{ matrix.target }} - name: Build release shell: bash run: | ./build/build-host-release -t ${{ matrix.target }} - name: Upload Github Assets uses: softprops/action-gh-release@v2 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: files: build/release/* prerelease: ${{ contains(github.ref_name, '-') }} tag_name: ${{ inputs.tag || github.ref_name }} build-release-windows: runs-on: windows-latest env: RUSTFLAGS: "-C target-feature=+crt-static" RUST_BACKTRACE: full steps: - uses: actions/checkout@v6 - uses: ilammy/setup-nasm@v1 - name: Install Rust run: | rustup set profile minimal rustup toolchain install stable rustup default stable rustup override set stable - name: Build release run: | pwsh ./build/build-host-release.ps1 "full winservice" - name: Upload Github Assets uses: softprops/action-gh-release@v2 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: files: build/release/* prerelease: ${{ contains(github.ref_name, '-') }} tag_name: ${{ inputs.tag || github.ref_name }}