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 # Disabled for now #- 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 - 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 - name: Upload Regorus nuget uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 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-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