mirror of
https://github.com/microsoft/regorus.git
synced 2026-08-05 02:16:11 +00:00
feat(xtask): consolidate CI workflows onto xtask helpers (#542)
- split the xtask crate into structured modules for - bindings - ci - dev - util - no-std - Adding commands for - ci-release/ci-debug - MUSL/no-std - per- binding language smoke tests - developer tasks (fmt, clippy, pre-commit, pre-push) - refresh Cargo manifests/locks, binding readmes, and shared FFI helpers so every binding reuses the same preparation steps - refactor GitHub Actions (release/debug, extensions, CodeQL, clippy, bindings) to call the new xtask commands - Use rust-cache in ci workflows (microsoft qdk also does this) - extend README with a contributor workflow section describing how xtask mirrors CI expectations - update pre-commit and pre-push hooks to use the xtask dev commands WORKAROUND: When dotnet is run from an xtask, codeql tracer intercepts it an routes to a nonexistent binary. Therefore in codeql workflow, xtask is not used for c# and instead dotnet is directly invoked. Tracked by #545 closes #475 Signed-off-by: Anand Krishnamoorthi <anakrish@microsoft.com>
This commit is contained in:
committed by
GitHub
parent
2b1434b3ac
commit
e68e852ee3
89
.github/workflows/codeql.yml
vendored
89
.github/workflows/codeql.yml
vendored
@@ -64,9 +64,24 @@ jobs:
|
||||
|
||||
# Setup language-specific dependencies BEFORE CodeQL init for proper tracing setup
|
||||
- name: Setup Rust
|
||||
if: matrix.language == 'rust' || matrix.language == 'c-cpp'
|
||||
uses: ./.github/actions/toolchains/rust
|
||||
|
||||
- name: Cache cargo
|
||||
uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5 # v2.8.2
|
||||
with:
|
||||
shared-key: ${{ runner.os }}-regorus
|
||||
|
||||
- name: Fetch workspace dependencies
|
||||
run: cargo fetch --locked
|
||||
|
||||
- name: Fetch FFI crate dependencies
|
||||
if: matrix.language == 'c-cpp' || matrix.language == 'go' || matrix.language == 'csharp'
|
||||
run: cargo fetch --locked --manifest-path bindings/ffi/Cargo.toml
|
||||
|
||||
- name: Fetch Java crate dependencies
|
||||
if: matrix.language == 'java-kotlin'
|
||||
run: cargo fetch --locked --manifest-path bindings/java/Cargo.toml
|
||||
|
||||
- name: Setup Python
|
||||
if: matrix.language == 'python'
|
||||
uses: actions/setup-python@v5
|
||||
@@ -92,6 +107,10 @@ jobs:
|
||||
with:
|
||||
global-json-file: ./bindings/csharp/global.json
|
||||
|
||||
- name: Invoke dotnet directly
|
||||
if: matrix.language == 'csharp'
|
||||
run: dotnet --info
|
||||
|
||||
- name: Setup Node.js
|
||||
if: matrix.language == 'javascript-typescript'
|
||||
uses: actions/setup-node@v4
|
||||
@@ -132,79 +151,39 @@ jobs:
|
||||
cargo install wasm-pack
|
||||
|
||||
# Manual build steps for different languages
|
||||
- name: Build C/C++ FFI bindings
|
||||
- name: Build C/C++ bindings via xtask
|
||||
if: matrix.language == 'c-cpp'
|
||||
working-directory: ${{ matrix.working-directory }}
|
||||
run: |
|
||||
# Build FFI library in no_std mode for embedded/constrained environments
|
||||
cargo build --release --locked --features "ast,coverage,regorus/opa-no-std" --no-default-features
|
||||
cargo xtask test-c --release --frozen
|
||||
cargo xtask test-cpp --release --frozen --skip-ffi
|
||||
cargo xtask test-c-no-std --release --frozen --skip-ffi
|
||||
|
||||
# Build the Rust FFI library that provides C-compatible interface
|
||||
cargo build --release --locked
|
||||
|
||||
# Build C bindings using CMake
|
||||
cd ../c
|
||||
mkdir -p build
|
||||
cd build
|
||||
cmake ..
|
||||
make
|
||||
|
||||
# Build C++ bindings using CMake
|
||||
cd ../../cpp
|
||||
mkdir -p build
|
||||
cd build
|
||||
cmake ..
|
||||
make
|
||||
|
||||
- name: Build Java bindings
|
||||
- name: Build Java bindings via xtask
|
||||
if: matrix.language == 'java-kotlin'
|
||||
working-directory: ${{ matrix.working-directory }}
|
||||
run: |
|
||||
# Build the Rust JNI library that provides Java-compatible interface
|
||||
cargo fetch
|
||||
cargo build --release --locked
|
||||
# Compile Java source and create JAR package with Maven
|
||||
mvn package
|
||||
run: cargo xtask test-java --release --frozen
|
||||
|
||||
- name: Build Go bindings
|
||||
- name: Build Go bindings via xtask
|
||||
if: matrix.language == 'go'
|
||||
working-directory: ${{ matrix.working-directory }}
|
||||
run: |
|
||||
# Build the FFI library that Go bindings depend on via CGO
|
||||
cd ../ffi
|
||||
cargo fetch
|
||||
cargo build --release --locked
|
||||
cd ../go
|
||||
# Download Go dependencies
|
||||
go mod tidy
|
||||
# Set up environment for CGO linking to Rust FFI library
|
||||
export CGO_ENABLED=1
|
||||
export LD_LIBRARY_PATH="$(pwd)/../ffi/target/release:$LD_LIBRARY_PATH"
|
||||
# Build Go packages with verbose output for CodeQL tracing
|
||||
go build -v ./pkg/regorus
|
||||
go build -v -o regorus_test .
|
||||
run: cargo xtask test-go --release --frozen
|
||||
|
||||
- name: Build C# bindings
|
||||
- name: Build C# bindings manually
|
||||
if: matrix.language == 'csharp'
|
||||
working-directory: ${{ matrix.working-directory }}
|
||||
run: |
|
||||
# Temporary workaround: CodeQL's tracer replaces dotnet with a missing shim when cargo xtask test-csharp runs,
|
||||
# so invoke dotnet directly here until the upstream fix lands.
|
||||
# Ideal command once fixed: cargo xtask test-csharp --release
|
||||
# Build the FFI library that C# bindings access via P/Invoke
|
||||
cd ../ffi
|
||||
cargo fetch
|
||||
cargo build --release --locked
|
||||
cd ../csharp
|
||||
# Restore NuGet packages and build .NET assemblies in release mode
|
||||
# Build the main Regorus library project only (tests require packaged version)
|
||||
dotnet restore Regorus/Regorus.csproj
|
||||
dotnet build Regorus/Regorus.csproj --no-restore /p:Configuration=Release /p:IgnoreMissingArtifacts=true
|
||||
|
||||
- name: Build WASM bindings
|
||||
- name: Build WASM bindings via xtask
|
||||
if: matrix.language == 'javascript-typescript'
|
||||
working-directory: ${{ matrix.working-directory }}
|
||||
run: |
|
||||
# Build WebAssembly module with wasm-pack for Node.js target
|
||||
cargo fetch
|
||||
wasm-pack build --target nodejs --release
|
||||
run: cargo xtask build-wasm --release
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@v3
|
||||
|
||||
25
.github/workflows/pr-extensions.yml
vendored
25
.github/workflows/pr-extensions.yml
vendored
@@ -21,18 +21,15 @@ jobs:
|
||||
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4
|
||||
- name: Setup Rust toolchain
|
||||
uses: ./.github/actions/toolchains/rust
|
||||
- name: Build only std
|
||||
run: cargo build -r --example regorus --no-default-features --features "std,rego-extensions"
|
||||
- name: Doc Tests
|
||||
run: cargo test -r --doc --features rego-extensions
|
||||
- name: Run tests
|
||||
run: cargo test -r --features rego-extensions
|
||||
- name: Run example
|
||||
run: cargo run --example regorus --features rego-extensions -- eval -d examples/server/allowed_server.rego -i examples/server/input.json data.example
|
||||
- name: Run tests (ACI)
|
||||
run: cargo test -r --test aci --features rego-extensions
|
||||
- name: Run tests (KATA)
|
||||
run: cargo test -r --test kata --features rego-extensions
|
||||
- name: Run tests (OPA Conformance)
|
||||
- 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: Run rego extensions CI suite
|
||||
run: >-
|
||||
cargo test -r --test opa --features opa-testutil,serde_json/arbitrary_precision,rego-extensions -- $(tr '\n' ' ' < tests/opa.passing)
|
||||
cargo xtask ci-release --frozen --features rego-extensions
|
||||
--skip-all-features-build --skip-no-default-features-tests
|
||||
--skip-azure-policy --skip-azure-rbac
|
||||
--opa-features "opa-testutil,serde_json/arbitrary_precision,rego-extensions"
|
||||
|
||||
38
.github/workflows/pr.yml
vendored
38
.github/workflows/pr.yml
vendored
@@ -21,33 +21,11 @@ jobs:
|
||||
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4
|
||||
- name: Setup Rust toolchain
|
||||
uses: ./.github/actions/toolchains/rust
|
||||
- name: Format Check
|
||||
run: cargo fmt --check
|
||||
- name: Fetch
|
||||
run: cargo fetch
|
||||
- name: Build (all features)
|
||||
run: cargo build -r --all-features --frozen
|
||||
- name: Build
|
||||
run: cargo build -r --frozen
|
||||
- name: Test no_std
|
||||
run: cargo test -r --no-default-features --frozen
|
||||
- name: Build only std
|
||||
run: cargo build -r --example regorus --no-default-features --features "std" --frozen
|
||||
- name: Doc Tests
|
||||
run: cargo test -r --doc --frozen
|
||||
- name: Run tests
|
||||
run: cargo test -r --frozen
|
||||
- name: Run example
|
||||
run: cargo run --example regorus --frozen -- eval -d examples/server/allowed_server.rego -i examples/server/input.json data.example
|
||||
- name: Run tests (ACI)
|
||||
run: cargo test -r --test aci --frozen
|
||||
- name: Run tests (KATA)
|
||||
run: cargo test -r --test kata --frozen
|
||||
- name: Run tests (OPA Conformance)
|
||||
run: >-
|
||||
cargo test -r --test opa --frozen --features opa-testutil,serde_json/arbitrary_precision -- $(tr '\n' ' ' < tests/opa.passing)
|
||||
- name: Run tests (Azure Policy)
|
||||
run: >-
|
||||
cargo test --frozen --features azure_policy
|
||||
- name: Run tests (Azure RBAC)
|
||||
run: cargo test -r --frozen --features azure-rbac
|
||||
- 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: Run release CI suite
|
||||
run: cargo xtask ci-release --frozen
|
||||
|
||||
3
.github/workflows/publish-java.yml
vendored
3
.github/workflows/publish-java.yml
vendored
@@ -48,7 +48,8 @@ jobs:
|
||||
python-version: "3.11"
|
||||
- if: ${{ matrix.build_cmd == 'zigbuild' }}
|
||||
run: pip install cargo-zigbuild
|
||||
- run: cargo fetch
|
||||
- run: cargo fetch --locked
|
||||
- run: cargo fetch --locked --manifest-path bindings/java/Cargo.toml
|
||||
- run: cargo ${{ matrix.build_cmd || 'build' }} --release --frozen --target ${{ matrix.target }}${{ matrix.glibc && format('.{0}', matrix.glibc) || '' }} --manifest-path ./bindings/java/Cargo.toml
|
||||
- run: mkdir -p native/${{ matrix.target }}
|
||||
- run: mv target/${{ matrix.target }}/release/*.${{ matrix.extension }} ./native/${{ matrix.target }}/
|
||||
|
||||
6
.github/workflows/publish-python.yml
vendored
6
.github/workflows/publish-python.yml
vendored
@@ -26,7 +26,7 @@ jobs:
|
||||
|
||||
- name: Build Python extension
|
||||
run: |
|
||||
cargo fetch
|
||||
cargo fetch --locked
|
||||
cargo clippy --all-targets --no-deps -- -Dwarnings
|
||||
cargo build --release --target ${{ matrix.target }} --frozen
|
||||
working-directory: bindings/python
|
||||
@@ -59,7 +59,7 @@ jobs:
|
||||
|
||||
- name: Build Python extension
|
||||
run: |
|
||||
cargo fetch
|
||||
cargo fetch --locked
|
||||
cargo clippy --all-targets --no-deps -- -Dwarnings
|
||||
cargo build --release --target ${{ matrix.host.target }} --frozen
|
||||
working-directory: bindings/python
|
||||
@@ -90,7 +90,7 @@ jobs:
|
||||
|
||||
- name: Build Python extension
|
||||
run: |
|
||||
cargo fetch
|
||||
cargo fetch --locked
|
||||
cargo clippy --all-targets --no-deps -- -Dwarnings
|
||||
cargo build --release --target ${{ matrix.host.target }} --frozen
|
||||
working-directory: bindings/python
|
||||
|
||||
13
.github/workflows/rust-clippy.yml
vendored
13
.github/workflows/rust-clippy.yml
vendored
@@ -34,20 +34,19 @@ jobs:
|
||||
|
||||
- name: Setup Rust toolchain
|
||||
uses: ./.github/actions/toolchains/rust
|
||||
- name: Cache cargo
|
||||
uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5 # v2.8.2
|
||||
with:
|
||||
shared-key: ${{ runner.os }}-regorus
|
||||
|
||||
- name: Install required cargo
|
||||
run: cargo install clippy-sarif sarif-fmt
|
||||
|
||||
- name: Fetch
|
||||
run: cargo fetch
|
||||
run: cargo fetch --locked
|
||||
|
||||
- name: Run rust-clippy
|
||||
run:
|
||||
cargo clippy
|
||||
--all-features
|
||||
--frozen
|
||||
--message-format=json | clippy-sarif | tee rust-clippy-results.sarif | sarif-fmt
|
||||
|
||||
run: cargo xtask clippy --sarif rust-clippy-results.sarif
|
||||
continue-on-error: true
|
||||
|
||||
- name: Upload analysis results to GitHub
|
||||
|
||||
42
.github/workflows/test-c-cpp.yml
vendored
42
.github/workflows/test-c-cpp.yml
vendored
@@ -19,36 +19,24 @@ jobs:
|
||||
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
|
||||
|
||||
- name: Setup gcc, g++, cmake, ninja
|
||||
run: sudo apt update && sudo apt install -y gcc g++ cmake ninja-build
|
||||
|
||||
- name: Workaround to ensure that regorus.h is generated
|
||||
run: |
|
||||
cargo fetch
|
||||
cargo build -r --frozen
|
||||
working-directory: ./bindings/ffi
|
||||
|
||||
- name: Test c binding
|
||||
run: |
|
||||
mkdir bindings/c/build
|
||||
cd bindings/c/build
|
||||
cmake -G Ninja ..
|
||||
ninja
|
||||
./regorus_test
|
||||
- name: Test C binding via xtask
|
||||
run: cargo xtask test-c --release --frozen
|
||||
|
||||
- name: Test c-nostd binding
|
||||
run: |
|
||||
mkdir bindings/c-nostd/build
|
||||
cd bindings/c-nostd/build
|
||||
cmake -G Ninja ..
|
||||
ninja
|
||||
./regorus_test
|
||||
- name: Test C (no-std) binding via xtask
|
||||
run: cargo xtask test-c-nostd --release --frozen --skip-ffi
|
||||
|
||||
- name: Test cpp binding
|
||||
run: |
|
||||
mkdir bindings/cpp/build
|
||||
cd bindings/cpp/build
|
||||
cmake -G Ninja ..
|
||||
ninja
|
||||
./regorus_test
|
||||
- name: Test C++ binding via xtask
|
||||
run: cargo xtask test-cpp --release --frozen --skip-ffi
|
||||
|
||||
95
.github/workflows/test-csharp.yml
vendored
95
.github/workflows/test-csharp.yml
vendored
@@ -11,7 +11,7 @@ on:
|
||||
- cron: "0 8 * * *"
|
||||
|
||||
env:
|
||||
VersionSuffix: ${{ github.run_id }}
|
||||
VersionSuffix: ${{ github.event_name == 'workflow_dispatch' && 'manualtrigger' || null }}
|
||||
|
||||
jobs:
|
||||
build-ffi:
|
||||
@@ -42,22 +42,18 @@ jobs:
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- uses: ./.github/actions/toolchains/rust
|
||||
|
||||
- name: Fetch crates
|
||||
run: cargo fetch
|
||||
working-directory: ./bindings/ffi
|
||||
- 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: Check Regorus binding formatting
|
||||
run: cargo fmt --check
|
||||
working-directory: ./bindings/ffi
|
||||
- name: Fetch FFI crate dependencies
|
||||
run: cargo fetch --locked --manifest-path bindings/ffi/Cargo.toml --target ${{ matrix.runtime.target }}
|
||||
|
||||
- name: Check Clippy linting for Regorus binding
|
||||
run: cargo clippy --frozen -- -D warnings
|
||||
working-directory: ./bindings/ffi
|
||||
|
||||
- name: Build Regorus binding
|
||||
run: cargo build -r --target ${{ matrix.runtime.target }} --locked
|
||||
working-directory: ./bindings/ffi
|
||||
- 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
|
||||
@@ -68,7 +64,7 @@ jobs:
|
||||
if-no-files-found: error
|
||||
retention-days: 1
|
||||
|
||||
build-nuget:
|
||||
build-csharp:
|
||||
name: 'Build Regorus nuget'
|
||||
runs-on: ubuntu-latest
|
||||
needs: build-ffi
|
||||
@@ -77,12 +73,21 @@ jobs:
|
||||
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:
|
||||
@@ -93,14 +98,8 @@ jobs:
|
||||
- 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 /p:VersionSuffix=${{ env.VersionSuffix }}
|
||||
working-directory: ./bindings/csharp/Regorus
|
||||
|
||||
- name: Pack
|
||||
run: dotnet pack /p:RegorusFFIArtifactsDir=./tmp/bindings/ffi/target /p:VersionSuffix=${{ env.VersionSuffix }}
|
||||
working-directory: ./bindings/csharp/Regorus
|
||||
- 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
|
||||
@@ -112,7 +111,7 @@ jobs:
|
||||
|
||||
test-nuget:
|
||||
name: 'Test Regorus Nuget: (${{ matrix.runtime.target }})'
|
||||
needs: build-nuget
|
||||
needs: build-csharp
|
||||
runs-on: ${{ matrix.runtime.os }}
|
||||
strategy:
|
||||
# let us get failures from other jobs even if one fails
|
||||
@@ -131,46 +130,32 @@ jobs:
|
||||
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-nuget/
|
||||
path: ./bindings/csharp/Regorus/bin/Release
|
||||
|
||||
- name: Restore Regorus.Tests
|
||||
run: dotnet restore /p:UseLocalRegorus=false /p:VersionSuffix=${{ env.VersionSuffix }} /p:RestoreAdditionalProjectSources=../regorus-nuget
|
||||
working-directory: ./bindings/csharp/Regorus.Tests
|
||||
- name: Display regorus nuget
|
||||
run: ls -R ./bindings/csharp/Regorus/bin/Release
|
||||
|
||||
- name: Run Regorus.Tests
|
||||
run: dotnet test --no-restore /p:UseLocalRegorus=false /p:VersionSuffix=${{ env.VersionSuffix }}
|
||||
working-directory: ./bindings/csharp/Regorus.Tests
|
||||
- name: Run C# tests via xtask
|
||||
run: cargo xtask test-csharp --release --clean --nuget-dir bindings/csharp/Regorus/bin/Release
|
||||
|
||||
- name: Restore TestApp
|
||||
run: dotnet restore /p:VersionSuffix=${{ env.VersionSuffix }} /p:RestoreAdditionalProjectSources=../regorus-nuget
|
||||
working-directory: ./bindings/csharp/TestApp
|
||||
|
||||
- name: Build TestApp
|
||||
run: dotnet build --no-restore
|
||||
working-directory: ./bindings/csharp/TestApp
|
||||
|
||||
- name: Run TestApp
|
||||
run: dotnet run --no-build --framework net8.0
|
||||
working-directory: ./bindings/csharp/TestApp
|
||||
|
||||
- name: Restore TargetExampleApp
|
||||
run: dotnet restore /p:VersionSuffix=${{ env.VersionSuffix }} /p:RestoreAdditionalProjectSources=../regorus-nuget
|
||||
working-directory: ./bindings/csharp/TargetExampleApp
|
||||
|
||||
- name: Build TargetExampleApp
|
||||
run: dotnet build --no-restore
|
||||
working-directory: ./bindings/csharp/TargetExampleApp
|
||||
|
||||
- name: Run TargetExampleApp
|
||||
run: dotnet run --no-build --framework net8.0
|
||||
working-directory: ./bindings/csharp/TargetExampleApp
|
||||
|
||||
|
||||
16
.github/workflows/test-ffi.yml
vendored
16
.github/workflows/test-ffi.yml
vendored
@@ -18,11 +18,15 @@ jobs:
|
||||
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
|
||||
|
||||
- name: Test FFI
|
||||
run: |
|
||||
cargo fetch
|
||||
cargo build -r --frozen
|
||||
cargo clippy --all-targets --no-deps -- -Dwarnings
|
||||
cargo test --features contention_checks --frozen
|
||||
working-directory: ./bindings/ffi
|
||||
run: cargo xtask test-ffi --release --frozen
|
||||
|
||||
24
.github/workflows/test-go.yml
vendored
24
.github/workflows/test-go.yml
vendored
@@ -18,19 +18,19 @@ jobs:
|
||||
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
|
||||
|
||||
- uses: actions/setup-go@41dfa10bad2bb2ae585af6ee5bb4d7d973ad74ed # v5.1.0
|
||||
with:
|
||||
architecture: x64
|
||||
|
||||
- name: Build ffi
|
||||
run: cargo build -r
|
||||
working-directory: ./bindings/ffi
|
||||
|
||||
- name: Test go
|
||||
run: |
|
||||
go mod tidy
|
||||
go build
|
||||
LD_LIBRARY_PATH=../ffi/target/release ./regorus_test
|
||||
working-directory: ./bindings/go
|
||||
- name: Test Go binding via xtask
|
||||
run: cargo xtask test-go --release --frozen
|
||||
|
||||
30
.github/workflows/test-java.yml
vendored
30
.github/workflows/test-java.yml
vendored
@@ -23,25 +23,15 @@ jobs:
|
||||
java-version: 8
|
||||
distribution: "corretto"
|
||||
- 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: Building binding
|
||||
run: |
|
||||
cargo clippy --all-targets --no-deps -- -Dwarnings
|
||||
cargo build --release --manifest-path bindings/java/Cargo.toml --locked
|
||||
- name: Fetch Java crate dependencies
|
||||
run: cargo fetch --locked --manifest-path bindings/java/Cargo.toml
|
||||
|
||||
- name: Capture binding version
|
||||
run: |
|
||||
version=$(cargo metadata --manifest-path bindings/java/Cargo.toml --format-version 1 \
|
||||
| jq -r '.packages[] | select(.name == "regorus-java") | .version')
|
||||
echo "REGORUS_JAVA_VERSION=$version" >> "$GITHUB_ENV"
|
||||
|
||||
- name: Build jar
|
||||
run: mvn package
|
||||
working-directory: ./bindings/java
|
||||
|
||||
- name: Test jar
|
||||
run: |
|
||||
jar="regorus-java-${REGORUS_JAVA_VERSION}.jar"
|
||||
javac -cp "target/${jar}" Test.java
|
||||
java -Djava.library.path=target/release -cp "target/${jar}:." Test
|
||||
working-directory: ./bindings/java
|
||||
- name: Run Java smoke tests via xtask
|
||||
run: cargo xtask test-java --release --frozen
|
||||
|
||||
23
.github/workflows/test-musl.yml
vendored
23
.github/workflows/test-musl.yml
vendored
@@ -22,18 +22,15 @@ jobs:
|
||||
- uses: ./.github/actions/toolchains/rust
|
||||
with:
|
||||
targets: x86_64-unknown-linux-musl
|
||||
- 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 MUSL target dependencies
|
||||
run: cargo fetch --locked --target x86_64-unknown-linux-musl
|
||||
- name: Install musl-gcc
|
||||
run: sudo apt update && sudo apt install -y musl-tools
|
||||
- name: Fetch
|
||||
run: cargo fetch
|
||||
- name: Build (MUSL)
|
||||
run: cargo build --verbose --all-targets --target x86_64-unknown-linux-musl --frozen
|
||||
- name: Run tests (MUSL)
|
||||
run: cargo test -r --verbose --target x86_64-unknown-linux-musl --frozen
|
||||
- name: Run tests (MUSL ACI)
|
||||
run: cargo test -r --test aci --target x86_64-unknown-linux-musl --frozen
|
||||
- name: Run tests (KATA ACI)
|
||||
run: cargo test -r --test kata --target x86_64-unknown-linux-musl --frozen
|
||||
- name: Run tests (MUSL OPA Conformance)
|
||||
run: >-
|
||||
cargo test -r --test opa --frozen --features opa-testutil,serde_json/arbitrary_precision --target x86_64-unknown-linux-musl -- $(tr '\n' ' ' < tests/opa.passing)
|
||||
- name: Run MUSL suite via xtask
|
||||
run: cargo xtask test-musl --release --frozen --target x86_64-unknown-linux-musl
|
||||
|
||||
15
.github/workflows/test-no-std.yml
vendored
15
.github/workflows/test-no-std.yml
vendored
@@ -22,9 +22,14 @@ jobs:
|
||||
- uses: ./.github/actions/toolchains/rust
|
||||
with:
|
||||
targets: thumbv7m-none-eabi
|
||||
- name: Fetch
|
||||
run: cargo fetch
|
||||
- name: Build
|
||||
run: cargo build -r --target thumbv7m-none-eabi --frozen
|
||||
working-directory: ./tests/ensure_no_std
|
||||
- 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 ensure_no_std crate dependencies
|
||||
run: cargo fetch --locked --manifest-path tests/ensure_no_std/Cargo.toml --target thumbv7m-none-eabi
|
||||
- name: Test no-std
|
||||
run: cargo xtask test-no-std --release --frozen
|
||||
|
||||
|
||||
74
.github/workflows/test-python.yml
vendored
74
.github/workflows/test-python.yml
vendored
@@ -9,9 +9,6 @@ on:
|
||||
# Run at 8:00 AM every day
|
||||
- cron: "0 8 * * *"
|
||||
|
||||
env:
|
||||
PYTHON_VERSION: "3.10"
|
||||
|
||||
jobs:
|
||||
build:
|
||||
strategy:
|
||||
@@ -28,66 +25,65 @@ jobs:
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- uses: ./.github/actions/toolchains/rust
|
||||
with:
|
||||
targets: ${{ matrix.host.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 Python crate dependencies
|
||||
run: cargo fetch --locked --manifest-path bindings/python/Cargo.toml --target ${{ matrix.host.target }}
|
||||
|
||||
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
|
||||
with:
|
||||
python-version: ${{ env.PYTHON_VERSION }}
|
||||
python-version: "3.10"
|
||||
architecture: x64
|
||||
|
||||
- name: Build Python extension
|
||||
run: |
|
||||
cargo fetch
|
||||
cargo clippy --all-targets --no-deps -- -Dwarnings
|
||||
cargo build --release --target ${{ matrix.host.target }} --frozen
|
||||
working-directory: bindings/python
|
||||
- name: Install maturin
|
||||
run: python -m pip install maturin==1.5.1
|
||||
|
||||
- name: Build Wheel
|
||||
uses: PyO3/maturin-action@63b75c597b83e247fbf4fb7719801cc4220ae9f3 # v1.43.0
|
||||
with:
|
||||
target: x86_64
|
||||
args: --release --out dist --manifest-path bindings/python/Cargo.toml --offline --strip
|
||||
sccache: 'true'
|
||||
- name: Build Python wheel via xtask
|
||||
run: cargo xtask build-python --release --target ${{ matrix.host.target }} --target-dir bindings/python/dist --frozen
|
||||
|
||||
- name: Upload Wheel
|
||||
- name: Upload wheel artefacts
|
||||
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
||||
with:
|
||||
name: regorus-wheel-${{ matrix.host.name }}
|
||||
path: dist/regorus-*.whl
|
||||
path: bindings/python/dist/regorus-*.whl
|
||||
|
||||
test:
|
||||
needs: build
|
||||
strategy:
|
||||
matrix:
|
||||
host: [ubuntu-24.04, ubuntu-22.04, windows-latest]
|
||||
python-version: ["3.10", "3.11", "3.12", "3.13"]
|
||||
host:
|
||||
- name: ubuntu-24.04
|
||||
wheel: regorus-0.5.0-cp310-abi3-manylinux_2_34_x86_64.whl
|
||||
- name: ubuntu-22.04
|
||||
wheel: regorus-0.5.0-cp310-abi3-manylinux_2_34_x86_64.whl
|
||||
- name: windows-latest
|
||||
wheel: regorus-0.5.0-cp310-abi3-win_amd64.whl
|
||||
|
||||
needs: build
|
||||
runs-on: ${{ matrix.host.name }}
|
||||
runs-on: ${{ matrix.host }}
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Download Regorus wheel
|
||||
uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0
|
||||
- uses: ./.github/actions/toolchains/rust
|
||||
- name: Cache cargo
|
||||
uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5 # v2.8.2
|
||||
with:
|
||||
path: wheels
|
||||
pattern: regorus-wheel-*
|
||||
merge-multiple: true
|
||||
shared-key: ${{ runner.os }}-regorus
|
||||
- name: Fetch dependencies
|
||||
run: cargo fetch --locked
|
||||
|
||||
- name: Fetch Python crate dependencies
|
||||
run: cargo fetch --locked --manifest-path bindings/python/Cargo.toml
|
||||
|
||||
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
|
||||
with:
|
||||
python-version: ${{ matrix.python-version }}
|
||||
architecture: x64
|
||||
|
||||
- name: Test Wheel
|
||||
run: |
|
||||
pip3 install ../../wheels/${{ matrix.host.wheel }}
|
||||
python3 test.py
|
||||
working-directory: bindings/python
|
||||
- name: Install maturin
|
||||
run: python -m pip install maturin==1.5.1
|
||||
|
||||
- name: Run Python smoke tests via xtask
|
||||
run: cargo xtask test-python --release --python python
|
||||
|
||||
18
.github/workflows/test-ruby.yml
vendored
18
.github/workflows/test-ruby.yml
vendored
@@ -27,10 +27,16 @@ jobs:
|
||||
cargo-cache: true
|
||||
working-directory: "bindings/ruby"
|
||||
|
||||
- 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 Ruby crate dependencies
|
||||
run: cargo fetch --locked --manifest-path bindings/ruby/Cargo.toml
|
||||
|
||||
- name: Run ruby tests
|
||||
run: |
|
||||
cd bindings/ruby
|
||||
gem install bundler
|
||||
bundle install
|
||||
cargo clippy --all-targets --no-deps -- -Dwarnings
|
||||
bundle exec rake
|
||||
run: cargo xtask test-ruby --release --frozen
|
||||
|
||||
19
.github/workflows/test-wasm.yml
vendored
19
.github/workflows/test-wasm.yml
vendored
@@ -20,6 +20,15 @@ jobs:
|
||||
|
||||
- name: Setup Rust toolchain
|
||||
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 WASM crate dependencies
|
||||
run: cargo fetch --locked --manifest-path bindings/wasm/Cargo.toml
|
||||
|
||||
- name: Setup Node
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
|
||||
@@ -29,11 +38,5 @@ jobs:
|
||||
- name: Install wasmlpack
|
||||
run: cargo install wasm-pack
|
||||
|
||||
- name: Test wasm binding
|
||||
run: |
|
||||
cd bindings/wasm
|
||||
cargo fetch
|
||||
cargo clippy --all-targets --no-deps -- -Dwarnings
|
||||
wasm-pack build --target nodejs --release
|
||||
wasm-pack test --release --node
|
||||
node test.js
|
||||
- name: Test wasm binding via xtask
|
||||
run: cargo xtask test-wasm --release --frozen --node node
|
||||
|
||||
31
.github/workflows/tests-debug.yml
vendored
31
.github/workflows/tests-debug.yml
vendored
@@ -21,26 +21,11 @@ jobs:
|
||||
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4
|
||||
- name: Setup Rust toolchain
|
||||
uses: ./.github/actions/toolchains/rust
|
||||
- name: Fetch
|
||||
run: cargo fetch
|
||||
- name: Build (all features)
|
||||
run: cargo build --all-features --frozen
|
||||
- name: Build
|
||||
run: cargo build --frozen
|
||||
- name: Test no_std
|
||||
run: cargo test --no-default-features --frozen
|
||||
- name: Build only std
|
||||
run: cargo build --example regorus --no-default-features --features "std" --frozen
|
||||
- name: Doc Tests
|
||||
run: cargo test --doc --frozen
|
||||
- name: Run tests
|
||||
run: cargo test --frozen
|
||||
- name: Run tests (ACI)
|
||||
run: cargo test --test aci --frozen
|
||||
- name: Run tests (KATA)
|
||||
run: cargo test --test kata --frozen
|
||||
- name: Run tests (OPA Conformance)
|
||||
run: >-
|
||||
cargo test --test opa --frozen --features opa-testutil,serde_json/arbitrary_precision -- $(tr '\n' ' ' < tests/opa.passing)
|
||||
- name: Run tests (Azure RBAC)
|
||||
run: cargo test --frozen --features azure-rbac
|
||||
- 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: Run debug CI suite
|
||||
run: cargo xtask ci-debug --frozen
|
||||
|
||||
Reference in New Issue
Block a user