bindings/csharp #1350
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # Copyright (c) Microsoft Corporation. All rights reserved. | |
| # | |
| 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@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| 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@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 | |
| 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@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| with: | |
| fetch-depth: 0 | |
| - uses: ./.github/actions/toolchains/rust | |
| - uses: actions/setup-dotnet@baa11fbfe1d6520db94683bd5c7a3818018e4309 # v5.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@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.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@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 | |
| 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@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| with: | |
| fetch-depth: 0 | |
| - uses: ./.github/actions/toolchains/rust | |
| - uses: actions/setup-dotnet@baa11fbfe1d6520db94683bd5c7a3818018e4309 # v5.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@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.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 | |