mirror of
https://github.com/microsoft/regorus.git
synced 2026-08-05 02:16:11 +00:00
feat: Regorus nuget package (#383)
Organize C# binding example into separate Regorus nuget package and a test app. The nuget package targets netstandard 2.0 and 2.1. The test app is tested for netframework 8.0. Implement IDisposable for Engine cleanup. Also remove net40 example. Can be added back later if needed. Signed-off-by: Anand Krishnamoorthi <anakrish@microsoft.com>
This commit is contained in:
committed by
GitHub
parent
c7bf460bc1
commit
2858b63cd4
119
.github/workflows/test-csharp.yml
vendored
119
.github/workflows/test-csharp.yml
vendored
@@ -6,9 +6,101 @@ on:
|
||||
pull_request:
|
||||
branches: [ "main" ]
|
||||
|
||||
jobs:
|
||||
test:
|
||||
jobs:
|
||||
build-ffi:
|
||||
name: 'Build Regorus FFI: (${{ matrix.runtime.target }})'
|
||||
runs-on: ${{ matrix.runtime.os }}
|
||||
strategy:
|
||||
# let us get failures from other jobs even if one fails
|
||||
fail-fast: false
|
||||
matrix:
|
||||
runtime:
|
||||
- os: windows-latest
|
||||
target: x86_64-pc-windows-msvc
|
||||
libpath: |
|
||||
**/release/regorus_ffi.dll
|
||||
**/release/regorus_ffi.pdb
|
||||
- os: ubuntu-latest
|
||||
target: x86_64-unknown-linux-gnu
|
||||
libpath: |
|
||||
**/release/libregorus_ffi.so
|
||||
# Disabled for now
|
||||
#- os: macos-latest
|
||||
# target: aarch64-apple-darwin
|
||||
# libpath: |
|
||||
# **/release/libregorus_ffi.dylib
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Build Regorus binding
|
||||
run: cargo build -r --target ${{ matrix.runtime.target }}
|
||||
working-directory: ./bindings/ffi
|
||||
|
||||
- name: Upload regorus ffi shared library
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: regorus-ffi-artifacts-${{ matrix.runtime.target }}
|
||||
# Note: The full path of each artifact relative to . is preserved.
|
||||
path: ${{ matrix.runtime.libpath }}
|
||||
if-no-files-found: error
|
||||
retention-days: 1
|
||||
|
||||
build-nuget:
|
||||
name: 'Build Regorus nuget'
|
||||
runs-on: ubuntu-latest
|
||||
needs: build-ffi
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- uses: actions/setup-dotnet@v4
|
||||
|
||||
- name: Download regorus ffi shared libraries
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
pattern: regorus-ffi-artifacts-*
|
||||
merge-multiple: true
|
||||
path: ./bindings/csharp/Regorus/tmp
|
||||
|
||||
- name: Display regorus ffi artifacts
|
||||
run: ls -R ./bindings/csharp/Regorus/tmp
|
||||
|
||||
# Note that we need to supply the target folder within the folder where artifacts are downloaded.
|
||||
- name: Build Regorus binding
|
||||
run: dotnet build /p:Configuration=Release /p:RegorusFFIArtifactsDir=./tmp/bindings/ffi/target
|
||||
working-directory: ./bindings/csharp/Regorus
|
||||
|
||||
- name: Pack
|
||||
run: dotnet pack /p:RegorusFFIArtifactsDir=./tmp/bindings/ffi/target
|
||||
working-directory: ./bindings/csharp/Regorus
|
||||
|
||||
- name: Upload Regorus nuget
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: regorus-nuget
|
||||
path: bindings/csharp/Regorus/bin/Release/Regorus*.nupkg
|
||||
if-no-files-found: error
|
||||
retention-days: 1
|
||||
|
||||
test-nuget:
|
||||
name: 'Test Regorus Nuget: (${{ matrix.runtime.target }})'
|
||||
needs: build-nuget
|
||||
runs-on: ${{ matrix.runtime.os }}
|
||||
strategy:
|
||||
# let us get failures from other jobs even if one fails
|
||||
fail-fast: false
|
||||
matrix:
|
||||
runtime:
|
||||
- os: windows-latest
|
||||
target: x86_64-pc-windows-msvc
|
||||
- os: ubuntu-latest
|
||||
target: x86_64-unknown-linux-gnu
|
||||
#- os: macos-latest
|
||||
# target: aarch64-apple-darwin
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
@@ -17,10 +109,21 @@ jobs:
|
||||
|
||||
- uses: actions/setup-dotnet@v4
|
||||
|
||||
- name: Build
|
||||
run: dotnet build
|
||||
working-directory: ./bindings/csharp/net8.0
|
||||
- name: Download regorus nuget
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: regorus-nuget
|
||||
path: ./bindings/csharp/TestApp/regorus-nuget/
|
||||
|
||||
- name: Restore Test App
|
||||
run: dotnet restore /p:RestoreSources=./regorus-nuget/
|
||||
working-directory: ./bindings/csharp/TestApp
|
||||
|
||||
- name: Run
|
||||
run: LD_LIBRARY_PATH=. dotnet run
|
||||
working-directory: ./bindings/csharp/net8.0
|
||||
- name: Build Test App 8.0
|
||||
run: dotnet build --framework net8.0
|
||||
working-directory: ./bindings/csharp/TestApp
|
||||
|
||||
- name: Run Test App 8.0
|
||||
run: dotnet run --framework net8.0
|
||||
working-directory: ./bindings/csharp/TestApp
|
||||
|
||||
28
.github/workflows/test-csharp40.yml
vendored
28
.github/workflows/test-csharp40.yml
vendored
@@ -1,28 +0,0 @@
|
||||
name: bindings/csharp40
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ "main" ]
|
||||
pull_request:
|
||||
branches: [ "main" ]
|
||||
|
||||
jobs:
|
||||
test:
|
||||
runs-on: windows-latest
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- uses: actions/setup-dotnet@v1
|
||||
with:
|
||||
dotnet-version: "5.0.x"
|
||||
|
||||
- name: Build
|
||||
run: dotnet build
|
||||
working-directory: ./bindings/csharp/net40
|
||||
|
||||
- name: Run
|
||||
run: dotnet run
|
||||
working-directory: ./bindings/csharp/net40
|
||||
Reference in New Issue
Block a user