@@ -31,9 +31,24 @@ Slim.Shutdown();
3131
3232### Building from Source
3333
34+ To build the complete SDK, you need artifacts from the Rust bindings build:
35+
36+ ``` bash
37+ # From the root of the repository
38+ cd data-plane/bindings/rust
39+ task bindings:build:all TARGET=x86_64-unknown-linux-gnu PROFILE=release
40+
41+ # Copy artifacts and build .NET bindings
42+ cd ../dotnet
43+ task ci ARTIFACTS_DIR=../../target/x86_64-unknown-linux-gnu/release BINDGEN_TARGET=x86_64-unknown-linux-gnu
44+ ```
45+
46+ For development on a single platform:
47+
3448``` bash
35- cd data-plane/bindings/dotnet
36- task build # Build rust library, generate bindings, and build .NET solution
49+ task generate ARTIFACTS_DIR=./artifacts BINDGEN_TARGET=x86_64-unknown-linux-gnu
50+ task build
51+ task test
3752```
3853
3954## API Overview
@@ -71,61 +86,59 @@ See example source code in `Slim.Examples.*` projects for full implementation de
7186
7287## Running Tests
7388
74- ** Smoke tests** (no server required):
75- ``` bash
76- task test:smoke
77- ```
89+ The SDK includes smoke tests that don't require a running SLIM server:
7890
79- ** Integration tests** (requires running server):
8091``` bash
81- # Terminal 1: Start the server
82- cd ../../
83- task run:server
84-
85- # Terminal 2: Run integration tests
86- task test:integration
92+ task test
8793```
8894
89- ** All tests:**
90- ``` bash
91- task test:all
92- ```
95+ For full integration testing with a SLIM server, you would need to:
96+ 1 . Start a SLIM server instance
97+ 2 . Run the example applications to verify functionality
98+
99+ See the ` Slim.Examples.* ` projects for working integration examples.
93100
94101## Development
95102
96103### Available Tasks
97104
98105``` bash
99- task # List all available tasks
100- task build # Build rust library, generate bindings, and build .NET solution
101- task test:smoke # Run smoke tests (no server required)
102- task test:integration # Run integration tests (requires running SLIM server)
103- task test:all # Run all tests (smoke + integration)
104- task pack # Create NuGet package with all runtime libraries
105- task publish # Publish NuGet package to NuGet.org (requires NUGET_API_TOKEN)
106- task test:verify-package # Verify NuGet package can be installed and works locally
107- task clean # Clean all build artifacts
106+ task # List all available tasks
107+ task ci # Run complete CI pipeline: generate, copy runtimes, build, test, pack
108+ task generate # Generate C# bindings from artifacts (requires ARTIFACTS_DIR)
109+ task copy:runtimes # Copy runtime libraries from artifacts to runtimes directory
110+ task build # Build .NET solution (expects bindings already generated)
111+ task test # Run smoke tests (no server required)
112+ task pack # Create NuGet package (expects runtimes already copied)
113+ task clean # Clean all build artifacts
108114```
109115
110116### Regenerating Bindings
111117
112- If the Rust bindings change:
118+ If the Rust bindings change, you need to rebuild the Rust library first, then regenerate C# bindings :
113119
114120``` bash
115- task generate
116- git add Slim/generated/
117- git commit -m " Regenerate dotnet bindings"
121+ # Build Rust library for your platform
122+ cd ../rust
123+ task bindings:build:all TARGET=x86_64-unknown-linux-gnu PROFILE=release
124+
125+ # Generate new C# bindings
126+ cd ../dotnet
127+ task generate ARTIFACTS_DIR=../../target/x86_64-unknown-linux-gnu/release BINDGEN_TARGET=x86_64-unknown-linux-gnu
118128```
119129
120130## Platform Support
121131
122132| Platform | Architecture | .NET RID | Status |
123133| ----------| --------------| ----------| --------|
124- | Linux | x86_64 | linux-x64 | Supported |
125- | Linux | aarch64 | linux-arm64 | Supported |
126- | macOS | x86_64 | osx-x64 | Supported |
127- | macOS | aarch64 | osx-arm64 | Supported |
128- | Windows | x86_64 | win-x64 | Supported |
134+ | Linux (GNU) | x86_64 | linux-x64 | Supported |
135+ | Linux (GNU) | aarch64 | linux-arm64 | Supported |
136+ | Linux (musl) | x86_64 | linux-musl-x64 | Supported |
137+ | Linux (musl) | aarch64 | linux-musl-arm64 | Supported |
138+ | macOS | x86_64 | osx-x64 | Supported |
139+ | macOS | aarch64 | osx-arm64 | Supported |
140+ | Windows | x86_64 | win-x64 | Supported |
141+ | Windows | aarch64 | win-arm64 | Supported |
129142
130143## NuGet Package
131144
@@ -143,23 +156,12 @@ dotnet run
143156
144157The NuGet package is automatically published when a release tag is pushed (e.g., ` slim-bindings-v0.1.0 ` ). The release workflow:
145158
146- 1 . Builds and tests bindings on all supported platforms
147- 2 . Creates a NuGet package with native libraries for all platforms
148- 3 . Publishes to NuGet.org
149- 4 . Tests the published package on 5 platforms (Linux x64 GNU/musl, Windows x64, macOS x64/arm64)
150- 5 . Finalizes the release
151-
152- ** Manual Publishing:**
153- ``` bash
154- # Create package
155- task pack
159+ 1 . Builds native libraries for all supported platforms
160+ 2 . Tests bindings locally with all platform libraries
161+ 3 . Creates a NuGet package with native libraries for all platforms
162+ 4 . Publishes to NuGet.org
156163
157- # Publish to NuGet.org
158- task publish NUGET_API_TOKEN=< your-api-token>
159164
160- # Or verify locally before publishing
161- task test:verify-package
162- ```
163165
164166## License
165167
0 commit comments