diff --git a/.github/workflows/test-csharp.yml b/.github/workflows/test-csharp.yml index cd725f6..c669fe9 100644 --- a/.github/workflows/test-csharp.yml +++ b/.github/workflows/test-csharp.yml @@ -1,6 +1,7 @@ name: bindings/csharp on: + workflow_dispatch: push: branches: [ "main" ] pull_request: @@ -9,6 +10,9 @@ on: # 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 }})' diff --git a/bindings/csharp/README.md b/bindings/csharp/README.md new file mode 100644 index 0000000..615ce8f --- /dev/null +++ b/bindings/csharp/README.md @@ -0,0 +1,32 @@ +# Regorus CSharp + +**Regorus** is + + - *Rego*-*Rus(t)* - A fast, light-weight [Rego](https://www.openpolicyagent.org/docs/latest/policy-language/) + interpreter written in Rust. + - *Rigorous* - A rigorous enforcer of well-defined Rego semantics. + +See main [Regorus page](https://github.com/microsoft/regorus) for more details about the project. + +# Building + +## Github Actions + +The simplest way to build a Nuget for Regorus' C# bindings is to use Github Actions. The action to do so is named `bindings/csharp` and is defined in `.github/workflows/test-csharp.yml`. + +There are two ways to trigger a Nuget build. +1. Runs are triggered automatically whenever a push or pull request is made to the `main` branch. +2. A run can be triggered manually by navigating to the action in the Github UI and clicking `Run workflow`. This option allows you to generate a Nuget for any branch, which is useful when testing the integration of in-progress changes to Regorus with other projects. Nuget files that are generated via this flow will have a `manualtrigger` suffix appended to their version number, making it easy to distinguish them from Nugets generated using the `main` branch. +![Image displaying the run workflow button](docs/images/readme/manuallytriggeringrun.png) + +Once the workflow run completes, the generated Nuget can be downloaded by following these steps: +1. Open the run. +2. Click on `Build Regorus nuget` on the left. +3. Expand the `Upload Regorus nuget` step. +4. Click the `Artifact download URL` link at the bottom. +5. Save and extract the downloaded zip file to find the `.nupkg` file. +![Image displaying the download URL link](docs/images/readme/downloadnuget.png) + +## Local + +TODO diff --git a/bindings/csharp/Regorus.Tests/Regorus.Tests.csproj b/bindings/csharp/Regorus.Tests/Regorus.Tests.csproj index 8cd9812..a124fcb 100644 --- a/bindings/csharp/Regorus.Tests/Regorus.Tests.csproj +++ b/bindings/csharp/Regorus.Tests/Regorus.Tests.csproj @@ -7,6 +7,11 @@ true true + + + + -$(VersionSuffix) + @@ -17,6 +22,6 @@ - + \ No newline at end of file diff --git a/bindings/csharp/docs/images/readme/downloadnuget.png b/bindings/csharp/docs/images/readme/downloadnuget.png new file mode 100644 index 0000000..5c5cad2 Binary files /dev/null and b/bindings/csharp/docs/images/readme/downloadnuget.png differ diff --git a/bindings/csharp/docs/images/readme/manuallytriggeringrun.png b/bindings/csharp/docs/images/readme/manuallytriggeringrun.png new file mode 100644 index 0000000..9cacc27 Binary files /dev/null and b/bindings/csharp/docs/images/readme/manuallytriggeringrun.png differ