mirror of
https://github.com/microsoft/regorus.git
synced 2026-08-05 02:16:11 +00:00
Additionally - Include more metadata in nuget package - Also generate snupkg for native symbols. We intentionally don't add the symbols for native rust shared library to the nuget package since that could increase the size of the nuget. We will revisit that later. - update licenses of all the bindings. closes #551 Signed-off-by: Anand Krishnamoorthi <anakrish@microsoft.com>
165 lines
5.5 KiB
YAML
165 lines
5.5 KiB
YAML
name: bindings/csharp
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
push:
|
|
branches: [ "main" ]
|
|
pull_request:
|
|
branches: [ "main" ]
|
|
schedule:
|
|
# Run at 8:00 AM every day
|
|
- cron: "0 8 * * *"
|
|
|
|
env:
|
|
VersionSuffix: ${{ github.event_name == 'workflow_dispatch' && 'manualtrigger' || null }}
|
|
|
|
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
|
|
- os: macos-latest
|
|
target: aarch64-apple-darwin
|
|
libpath: |
|
|
**/release/libregorus_ffi.dylib
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4
|
|
with:
|
|
fetch-depth: 0
|
|
- uses: ./.github/actions/toolchains/rust
|
|
with:
|
|
targets: ${{ matrix.runtime.target }}
|
|
- name: Cache cargo
|
|
uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5 # v2.8.2
|
|
with:
|
|
shared-key: ${{ runner.os }}-regorus
|
|
- name: Fetch dependencies
|
|
run: cargo fetch --locked
|
|
|
|
- name: Fetch FFI crate dependencies
|
|
run: cargo fetch --locked --manifest-path bindings/ffi/Cargo.toml --target ${{ matrix.runtime.target }}
|
|
|
|
- name: Build Regorus FFI via xtask
|
|
run: cargo xtask build-ffi --release --target ${{ matrix.runtime.target }}
|
|
|
|
- name: Upload regorus ffi shared library
|
|
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
|
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-csharp:
|
|
name: 'Build Regorus nuget'
|
|
runs-on: ubuntu-latest
|
|
needs: build-ffi
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4
|
|
with:
|
|
fetch-depth: 0
|
|
- uses: ./.github/actions/toolchains/rust
|
|
- uses: actions/setup-dotnet@3e891b0cb619bf60e2c25674b222b8940e2c1c25 # v4.1.0
|
|
with:
|
|
global-json-file: ./bindings/csharp/global.json
|
|
|
|
- run: echo '${{ steps.stepid.outputs.dotnet-version }}'
|
|
|
|
- name: Cache cargo
|
|
uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5 # v2.8.2
|
|
with:
|
|
shared-key: ${{ runner.os }}-regorus
|
|
|
|
- name: Fetch dependencies
|
|
run: cargo fetch --locked
|
|
|
|
- name: Download regorus ffi shared libraries
|
|
uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0
|
|
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
|
|
|
|
- name: Build Regorus nuget via xtask
|
|
run: cargo xtask build-csharp --release --clean --artifacts-dir ./bindings/csharp/Regorus/tmp/bindings/ffi/target --enforce-artifacts --repository-commit ${{ github.sha }} --include-symbols
|
|
|
|
- name: Upload Regorus nuget
|
|
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
|
with:
|
|
name: regorus-nuget
|
|
path: |
|
|
bindings/csharp/Regorus/bin/Release/Regorus*.nupkg
|
|
bindings/csharp/Regorus/bin/Release/Regorus*.snupkg
|
|
if-no-files-found: error
|
|
retention-days: 1
|
|
|
|
test-nuget:
|
|
name: 'Test Regorus Nuget: (${{ matrix.runtime.target }})'
|
|
needs: build-csharp
|
|
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@08eba0b27e820071cde6df949e0beb9ba4906955 # v4
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- uses: ./.github/actions/toolchains/rust
|
|
|
|
- uses: actions/setup-dotnet@3e891b0cb619bf60e2c25674b222b8940e2c1c25 # v4.1.0
|
|
with:
|
|
global-json-file: ./bindings/csharp/global.json
|
|
|
|
- run: echo '${{ steps.stepid.outputs.dotnet-version }}'
|
|
|
|
- name: Cache cargo
|
|
uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5 # v2.8.2
|
|
with:
|
|
shared-key: ${{ runner.os }}-regorus
|
|
|
|
- name: Fetch dependencies
|
|
run: cargo fetch --locked
|
|
|
|
- name: Download regorus nuget
|
|
uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0
|
|
with:
|
|
name: regorus-nuget
|
|
path: ./bindings/csharp/Regorus/bin/Release
|
|
|
|
- name: Display regorus nuget
|
|
run: ls -R ./bindings/csharp/Regorus/bin/Release
|
|
|
|
- name: Run C# tests via xtask
|
|
run: cargo xtask test-csharp --release --clean --nuget-dir bindings/csharp/Regorus/bin/Release
|
|
|
|
|