Skip to content

Build

Build #3

Workflow file for this run

name: Build
on:
workflow_dispatch:
inputs:
build-config:
required: true
default: 'debug'
type: choice
options:
- debug
- release
build-only-linux:
required: true
default: false
type: boolean
update-unity-native:
required: true
default: false
type: boolean
workflow_call:
inputs:
build-config:
required: true
type: string
build-only-linux:
required: true
type: boolean
update-unity-native:
required: true
type: boolean
env:
_RUST_BUILD_CONFIG: ${{ inputs.build-config == 'debug' && 'debug' || 'release' }}
_DOTNET_BUILD_CONFIG: ${{ inputs.build-config == 'debug' && 'Debug' || 'Release' }}
jobs:
build-uwp-arm64:
name: Build Native library (win-x64)
if: ${{ !inputs.build-only-linux }}
runs-on: windows-2022
timeout-minutes: 30
defaults:
run:
working-directory: native
steps:
- uses: actions/checkout@v3
- uses: Cysharp/Actions/.github/actions/setup-dotnet@main
- run: |
rustup toolchain install nightly-x86_64-pc-windows-msvc
rustup component add rust-src --toolchain nightly-x86_64-pc-windows-msvc
rustup default nightly
cargo update
$env:Path += ";C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\Llvm\bin"
cargo -Z build-std build --target aarch64-uwp-windows-msvc
# - uses: actions/upload-artifact@v3
# with:
# name: win-x64
# path: native/target/x86_64-pc-windows-msvc/${{ env._RUST_BUILD_CONFIG }}/yaha_native.dll
# retention-days: 1
# - run: dotnet test -c ${{ env._DOTNET_BUILD_CONFIG }} ../test/YetAnotherHttpHandler.Test
# build-linux-x64:
# name: Build Native library (linux-x64)
# runs-on: ubuntu-20.04
# timeout-minutes: 30
# defaults:
# run:
# working-directory: native
# steps:
# - uses: actions/checkout@v3
# - uses: Cysharp/Actions/.github/actions/setup-dotnet@main
# - run: cargo build --target x86_64-unknown-linux-gnu --profile ${{ env._RUST_BUILD_CONFIG == 'debug' && 'dev' || env._RUST_BUILD_CONFIG }}
# - uses: actions/upload-artifact@v3
# with:
# name: linux-x64
# path: native/target/x86_64-unknown-linux-gnu/${{ env._RUST_BUILD_CONFIG }}/libyaha_native.so
# retention-days: 1
# - run: dotnet test -c ${{ env._DOTNET_BUILD_CONFIG }} ../test/YetAnotherHttpHandler.Test
#
# build-osx-x64:
# name: Build Native library (osx-x64)
# if: ${{ !inputs.build-only-linux }}
# runs-on: macos-latest
# timeout-minutes: 30
# defaults:
# run:
# working-directory: native
# steps:
# - uses: actions/checkout@v3
# - uses: Cysharp/Actions/.github/actions/setup-dotnet@main
# - run: cargo build --target x86_64-apple-darwin --profile ${{ env._RUST_BUILD_CONFIG == 'debug' && 'dev' || env._RUST_BUILD_CONFIG }}
# - uses: actions/upload-artifact@v3
# with:
# name: osx-x64
# path: native/target/x86_64-apple-darwin/${{ env._RUST_BUILD_CONFIG }}/libyaha_native.dylib
# retention-days: 1
# - run: dotnet test -c ${{ env._DOTNET_BUILD_CONFIG }} ../test/YetAnotherHttpHandler.Test
#
# build-osx-arm64:
# name: Build Native library (osx-arm64)
# if: ${{ !inputs.build-only-linux }}
# runs-on: macos-latest
# timeout-minutes: 30
# defaults:
# run:
# working-directory: native
# steps:
# - uses: actions/checkout@v3
# - run: rustup target add aarch64-apple-darwin
# - run: cargo build --target aarch64-apple-darwin --profile ${{ env._RUST_BUILD_CONFIG == 'debug' && 'dev' || env._RUST_BUILD_CONFIG }}
# - uses: actions/upload-artifact@v3
# with:
# name: osx-arm64
# path: native/target/aarch64-apple-darwin/${{ env._RUST_BUILD_CONFIG }}/libyaha_native.dylib
# retention-days: 1
#
# build-ios-x64:
# name: Build Native library (ios-x64)
# if: ${{ !inputs.build-only-linux }}
# runs-on: macos-latest
# timeout-minutes: 30
# defaults:
# run:
# working-directory: native
# steps:
# - uses: actions/checkout@v3
# - run: rustup target add x86_64-apple-ios
# - run: cargo build --target x86_64-apple-ios --profile ${{ env._RUST_BUILD_CONFIG == 'debug' && 'dev' || env._RUST_BUILD_CONFIG }}
# - uses: actions/upload-artifact@v3
# with:
# name: ios-x64
# path: native/target/x86_64-apple-ios/${{ env._RUST_BUILD_CONFIG }}/libyaha_native.a
# retention-days: 1
#
# build-ios-arm64:
# name: Build Native library (ios-arm64)
# if: ${{ !inputs.build-only-linux }}
# runs-on: macos-latest
# timeout-minutes: 30
# defaults:
# run:
# working-directory: native
# steps:
# - uses: actions/checkout@v3
# - run: rustup target add aarch64-apple-ios
# - run: cargo build --target aarch64-apple-ios --profile ${{ env._RUST_BUILD_CONFIG == 'debug' && 'dev' || env._RUST_BUILD_CONFIG }}
# - uses: actions/upload-artifact@v3
# with:
# name: ios-arm64
# path: native/target/aarch64-apple-ios/${{ env._RUST_BUILD_CONFIG }}/libyaha_native.a
# retention-days: 1
#
# build-android-arm:
# name: Build Native library (android-arm)
# if: ${{ !inputs.build-only-linux }}
# runs-on: ubuntu-latest
# timeout-minutes: 30
# defaults:
# run:
# working-directory: native
# steps:
# - uses: actions/checkout@v3
# - run: sudo apt update && sudo apt install gcc-multilib
# - run: rustup target add armv7-linux-androideabi
# - run: cargo install cargo-ndk
# - run: cargo ndk -t armeabi-v7a build --profile ${{ env._RUST_BUILD_CONFIG == 'debug' && 'dev' || env._RUST_BUILD_CONFIG }}
# - uses: actions/upload-artifact@v3
# with:
# name: android-arm
# path: native/target/armv7-linux-androideabi/${{ env._RUST_BUILD_CONFIG }}/libyaha_native.so
# retention-days: 1
#
# build-android-arm64:
# name: Build Native library (android-arm64)
# if: ${{ !inputs.build-only-linux }}
# runs-on: ubuntu-latest
# timeout-minutes: 30
# defaults:
# run:
# working-directory: native
# steps:
# - uses: actions/checkout@v3
# - run: sudo apt update && sudo apt install gcc-multilib
# - run: rustup target add aarch64-linux-android
# - run: cargo install cargo-ndk
# - run: cargo ndk -t arm64-v8a build --profile ${{ env._RUST_BUILD_CONFIG == 'debug' && 'dev' || env._RUST_BUILD_CONFIG }}
# - uses: actions/upload-artifact@v3
# with:
# name: android-arm64
# path: native/target/aarch64-linux-android/${{ env._RUST_BUILD_CONFIG }}/libyaha_native.so
# retention-days: 1
#
# build-android-x64:
# name: Build Native library (android-x64)
# if: ${{ !inputs.build-only-linux }}
# runs-on: ubuntu-latest
# timeout-minutes: 30
# defaults:
# run:
# working-directory: native
# steps:
# - uses: actions/checkout@v3
# - run: sudo apt update && sudo apt install gcc-multilib
# - run: rustup target add x86_64-linux-android
# - run: cargo install cargo-ndk
# - run: cargo ndk -t x86_64 build --profile ${{ env._RUST_BUILD_CONFIG == 'debug' && 'dev' || env._RUST_BUILD_CONFIG }}
# - uses: actions/upload-artifact@v3
# with:
# name: android-x64
# path: native/target/x86_64-linux-android/${{ env._RUST_BUILD_CONFIG }}/libyaha_native.so
# retention-days: 1
#
# build-dotnet:
# name: Build and pack .NET library
# if: ${{ inputs.build-only-linux && needs.build-linux-x64.result == 'success' || success() }}
# needs:
# - build-win-x64
# - build-linux-x64
# - build-osx-x64
# - build-osx-arm64
# - build-ios-x64
# - build-ios-arm64
# - build-android-arm
# - build-android-arm64
# - build-android-x64
# runs-on: ubuntu-latest
# steps:
# - uses: actions/checkout@v3
# - uses: actions/download-artifact@v3
# with:
# path: native/artifacts
# - run: ls -lFaR native/artifacts
# - run: dotnet pack -c ${{ env._DOTNET_BUILD_CONFIG }} ./YetAnotherHttpHandler.sln --include-symbols --include-source -o ./publish
# #- run: dotnet test -c ${{ env._DOTNET_BUILD_CONFIG }} ./test/YetAnotherHttpHandler.Packaging.Test
# - uses: actions/upload-artifact@v3
# with:
# name: nuget-packages
# path: ./publish/
# retention-days: 7
#
# update-unity-native:
# name: Update pre-built libraries for Unity
# if: ${{ inputs.update-unity-native && (inputs.build-only-linux && needs.build-dotnet.result == 'success' || success()) }}
# needs: [ build-dotnet ]
# runs-on: ubuntu-latest
# timeout-minutes: 15
# steps:
# - uses: actions/checkout@v3
# - uses: actions/download-artifact@v3
# with:
# name: nuget-packages
# path: ./publish/
# - run: unzip -o ./publish/YetAnotherHttpHandler.*[0-9].nupkg 'runtimes/*' -d src/YetAnotherHttpHandler/Plugins/Cysharp.Net.Http.YetAnotherHttpHandler.Native/ || true
# - run: |
# git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com"
# git config --local user.name "github-actions[bot]"
# git commit -m "Update pre-built native libraries" src/YetAnotherHttpHandler/Plugins/**/*
# git push origin ${{ github.ref_name }}