Skip to content

Rework cross-language pipeline to use WoT codegen output - #1523

Merged
Tim Taylor (timtay-microsoft) merged 11 commits into
mainfrom
timtay/ciFix
Oct 13, 2026
Merged

Tim Taylor (timtay-microsoft) merged 11 commits into
mainfrom
timtay/ciFix

Conversation

@timtay-microsoft

@timtay-microsoft Tim Taylor (timtay-microsoft) commented Oct 13, 2026 •

Copy link
Copy Markdown
Member

Also:

  • Rework "run codegen" pipeline to only do WoT codegen now
  • Refactor existing DTDL-style .NET samples to use WoT models + codegen instead
  • Remove Go from cross-language testing since WoT codegen does not support Go output
  • Split the Dtdl2Wot project out from the WoT codegen project
    • This project is the sole part of the WoT codegen project that still depends on the preview nuget feed
    • Remove nuget.config from WoT codegen project so that it can be built more reliably
  • Remove codegen steps from Go CI since they also depended on this flakey preview feed

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Rust changes look okay, although I'm not sure why we are no longer using the sdkPath

Comment thread .github/workflows/e2e-cross-language.yml

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

The Windows regeneration script cannot remove its generated directories because it passes multiple paths to a single rmdir invocation.

1 open finding
What changed in this PR

Reworks code-generation and cross-language testing around WoT Thing Models while isolating the legacy DTDL converter and removing unsupported Go generation.

Changes:

  • Migrates .NET and Rust counter envoys from DTDL to WoT-generated APIs.
  • Updates CI/codegen workflows and removes Go from cross-language testing.
  • Separates Dtdl2Wot and its preview-feed configuration from the main WoT solution.
File Description
wot-codegen/​test/​Azure.Iot.Operations.Opc2WotLib.UnitTests/​Azure.Iot.Operations.Opc2WotLib.UnitTests.csproj Pins AngleSharp.
wot-codegen/​src/​Dtdl2Wot/​nuget.config Adds isolated package feeds.
wot-codegen/​src/​Dtdl2Wot/​Dtdl2Wot.sln Adds standalone DTDL converter solution.
wot-codegen/​src/​Azure.Iot.Operations.UnitTabulator/​Azure.Iot.Operations.UnitTabulator.csproj Pins AngleSharp.
wot-codegen/​src/​Azure.Iot.Operations.Opc2WotLib/​Azure.Iot.Operations.Opc2WotLib.csproj Pins AngleSharp.
wot-codegen/​src/​Azure.Iot.Operations.Opc2Wot/​Azure.Iot.Operations.Opc2Wot.csproj Pins AngleSharp.
wot-codegen/​gen_all.sh Runs only WoT generators.
wot-codegen/​codegen.sln Removes Dtdl2Wot.
rust/​sample_applications/​counter/​README.md Documents WoT generation.
rust/​sample_applications/​counter/​gen.sh Uses WoT codegen.
rust/​sample_applications/​counter/​envoy/​src/​lib.rs Updates generated version.
rust/​sample_applications/​counter/​envoy/​src/​counter/​reset_action_invoker.rs Migrates reset invoker.
rust/​sample_applications/​counter/​envoy/​src/​counter/​reset_action_executor.rs Migrates reset executor.
rust/​sample_applications/​counter/​envoy/​src/​counter/​read_counter_output_arguments.rs Adds WoT output type.
rust/​sample_applications/​counter/​envoy/​src/​counter/​read_counter_output_arguments_serialization.rs Updates serialization.
rust/​sample_applications/​counter/​envoy/​src/​counter/​read_counter_action_invoker.rs Migrates read invoker.
rust/​sample_applications/​counter/​envoy/​src/​counter/​read_counter_action_executor.rs Migrates read executor.
rust/​sample_applications/​counter/​envoy/​src/​counter/​increment_output_arguments.rs Adds increment output type.
rust/​sample_applications/​counter/​envoy/​src/​counter/​increment_output_arguments_serialization.rs Updates output serialization.
rust/​sample_applications/​counter/​envoy/​src/​counter/​increment_input_arguments.rs Adds increment input type.
rust/​sample_applications/​counter/​envoy/​src/​counter/​increment_input_arguments_serialization.rs Updates input serialization.
rust/​sample_applications/​counter/​envoy/​src/​counter/​increment_action_invoker.rs Migrates increment invoker.
rust/​sample_applications/​counter/​envoy/​src/​counter/​increment_action_executor.rs Migrates increment executor.
rust/​sample_applications/​counter/​envoy/​src/​counter/​event_collection.rs Renames telemetry payload.
rust/​sample_applications/​counter/​envoy/​src/​counter/​event_collection_serialization.rs Updates event serialization.
rust/​sample_applications/​counter/​envoy/​src/​counter/​event_collection_sender.rs Migrates event sender.
rust/​sample_applications/​counter/​envoy/​src/​counter/​event_collection_receiver.rs Migrates event receiver.
rust/​sample_applications/​counter/​envoy/​src/​counter.rs Updates generated exports.
rust/​sample_applications/​counter/​envoy/​src/​common_types/​time_only.rs Updates generated version.
rust/​sample_applications/​counter/​envoy/​src/​common_types/​options.rs Updates generated version.
rust/​sample_applications/​counter/​envoy/​src/​common_types/​empty_json.rs Updates generated version.
rust/​sample_applications/​counter/​envoy/​src/​common_types/​decimal.rs Updates generated version.
rust/​sample_applications/​counter/​envoy/​src/​common_types/​date_only.rs Updates generated version.
rust/​sample_applications/​counter/​envoy/​src/​common_types/​b64.rs Updates generated version.
rust/​sample_applications/​counter/​envoy/​src/​common_types.rs Updates generated version.
rust/​sample_applications/​counter/​envoy/​Cargo.toml Updates generated version.
rust/​sample_applications/​counter/​counter_server/​src/​main.rs Uses WoT-generated types.
rust/​sample_applications/​counter/​counter_client/​src/​main.rs Uses WoT-generated types.
eng/​test/​schema-samples/​dtdlWithCustomTopicToken.json Removes DTDL model.
eng/​test/​schema-samples/​CustomTopicTokens.TM.json Adds equivalent WoT model.
dotnet/​test/​Azure.Iot.Operations.Protocol.IntegrationTests/​RPCFaultInjectionTests.cs Updates generated payload type.
dotnet/​test/​Azure.Iot.Operations.Protocol.IntegrationTests/​CustomTopicTokenService.cs Updates WoT output type.
dotnet/​test/​Azure.Iot.Operations.Protocol.IntegrationTests/​CustomTopicTokenClient.cs Updates event type.
dotnet/​test/​Azure.Iot.Operations.Protocol.IntegrationTests/​CounterService.cs Uses WoT-generated APIs.
dotnet/​test/​Azure.Iot.Operations.Protocol.IntegrationTests/​CounterEnvoyTests.cs Updates generated types.
dotnet/​test/​Azure.Iot.Operations.Protocol.IntegrationTests/​CounterClient.cs Updates event type.
dotnet/​samples/​Protocol/​TestThing/​gen.sh Disables project generation.
dotnet/​samples/​Protocol/​TestEnvoys/​ValueExtractor.cs Refreshes generated output.
dotnet/​samples/​Protocol/​TestEnvoys/​UuidJsonConverter.cs Refreshes generated output.
dotnet/​samples/​Protocol/​TestEnvoys/​Utf8JsonSerializer.cs Refreshes generated output.
dotnet/​samples/​Protocol/​TestEnvoys/​TimeJsonConverter.cs Refreshes generated output.
dotnet/​samples/​Protocol/​TestEnvoys/​schemas/​CustomTopicTokens/​ReadCustomTopicTokenOutputArguments.schema.json Adds output schema.
dotnet/​samples/​Protocol/​TestEnvoys/​schemas/​CustomTopicTokens/​EventCollection.schema.json Adds event schema.
dotnet/​samples/​Protocol/​TestEnvoys/​schemas/​Counter/​ReadCounterOutputArguments.schema.json Adds read schema.
dotnet/​samples/​Protocol/​TestEnvoys/​schemas/​Counter/​IncrementOutputArguments.schema.json Adds increment output schema.
dotnet/​samples/​Protocol/​TestEnvoys/​schemas/​Counter/​IncrementInputArguments.schema.json Adds increment input schema.
dotnet/​samples/​Protocol/​TestEnvoys/​schemas/​Counter/​EventCollection.schema.json Adds counter event schema.
dotnet/​samples/​Protocol/​TestEnvoys/​PropertyTopicAttribute.cs Refreshes generated output.
dotnet/​samples/​Protocol/​TestEnvoys/​PassthroughSerializer.cs Refreshes generated output.
dotnet/​samples/​Protocol/​TestEnvoys/​Passthrough/​Passthrough.g.cs Migrates passthrough API.
dotnet/​samples/​Protocol/​TestEnvoys/​Passthrough/​PassCommandExecutor.g.cs Removes DTDL executor.
dotnet/​samples/​Protocol/​TestEnvoys/​Passthrough/​PassActionInvoker.g.cs Adds WoT action invoker.
dotnet/​samples/​Protocol/​TestEnvoys/​Passthrough/​PassActionExecutor.g.cs Adds WoT action executor.
dotnet/​samples/​Protocol/​TestEnvoys/​Passthrough.TM.json Adds passthrough WoT model.
dotnet/​samples/​Protocol/​TestEnvoys/​passthrough.json Removes DTDL model.
dotnet/​samples/​Protocol/​TestEnvoys/​gen.sh Regenerates supported WoT envoys.
dotnet/​samples/​Protocol/​TestEnvoys/​gen-envoys.cmd Adds Windows WoT generation.
dotnet/​samples/​Protocol/​TestEnvoys/​EmptyJson.cs Refreshes generated output.
dotnet/​samples/​Protocol/​TestEnvoys/​DurationJsonConverter.cs Refreshes generated output.
dotnet/​samples/​Protocol/​TestEnvoys/​DecimalString.cs Refreshes generated output.
dotnet/​samples/​Protocol/​TestEnvoys/​DecimalJsonConverter.cs Refreshes generated output.
dotnet/​samples/​Protocol/​TestEnvoys/​DateJsonConverter.cs Refreshes generated output.
dotnet/​samples/​Protocol/​TestEnvoys/​CustomTopicTokens/​TelemetrySender.g.cs Removes DTDL sender.
dotnet/​samples/​Protocol/​TestEnvoys/​CustomTopicTokens/​TelemetryReceiver.g.cs Removes DTDL receiver.
dotnet/​samples/​Protocol/​TestEnvoys/​CustomTopicTokens/​TelemetryCollection.g.cs Removes old payload type.
dotnet/​samples/​Protocol/​TestEnvoys/​CustomTopicTokens/​ReadCustomTopicTokenOutputArguments.g.cs Adds WoT output type.
dotnet/​samples/​Protocol/​TestEnvoys/​CustomTopicTokens/​ReadCustomTopicTokenCommandExecutor.g.cs Removes DTDL executor.
dotnet/​samples/​Protocol/​TestEnvoys/​CustomTopicTokens/​ReadCustomTopicTokenActionInvoker.g.cs Adds action invoker.
dotnet/​samples/​Protocol/​TestEnvoys/​CustomTopicTokens/​ReadCustomTopicTokenActionExecutor.g.cs Adds action executor.
dotnet/​samples/​Protocol/​TestEnvoys/​CustomTopicTokens/​EventCollectionSender.g.cs Adds event sender.
dotnet/​samples/​Protocol/​TestEnvoys/​CustomTopicTokens/​EventCollectionReceiver.g.cs Adds event receiver.
dotnet/​samples/​Protocol/​TestEnvoys/​CustomTopicTokens/​EventCollection.g.cs Adds event payload.
dotnet/​samples/​Protocol/​TestEnvoys/​CustomTopicTokens/​CustomTopicTokens.g.cs Migrates generated facade.
dotnet/​samples/​Protocol/​TestEnvoys/​Counter/​TelemetrySender.g.cs Removes DTDL sender.
dotnet/​samples/​Protocol/​TestEnvoys/​Counter/​TelemetryReceiver.g.cs Removes DTDL receiver.
dotnet/​samples/​Protocol/​TestEnvoys/​Counter/​ResetCommandExecutor.g.cs Removes DTDL executor.
dotnet/​samples/​Protocol/​TestEnvoys/​Counter/​ResetActionInvoker.g.cs Adds reset invoker.
dotnet/​samples/​Protocol/​TestEnvoys/​Counter/​ResetActionExecutor.g.cs Adds reset executor.
dotnet/​samples/​Protocol/​TestEnvoys/​Counter/​ReadCounterResponsePayload.g.cs Removes old response type.
dotnet/​samples/​Protocol/​TestEnvoys/​Counter/​ReadCounterOutputArguments.g.cs Adds WoT output type.
dotnet/​samples/​Protocol/​TestEnvoys/​Counter/​ReadCounterCommandExecutor.g.cs Removes DTDL executor.
dotnet/​samples/​Protocol/​TestEnvoys/​Counter/​ReadCounterActionInvoker.g.cs Adds read invoker.
dotnet/​samples/​Protocol/​TestEnvoys/​Counter/​ReadCounterActionExecutor.g.cs Adds read executor.
dotnet/​samples/​Protocol/​TestEnvoys/​Counter/​IncrementResponsePayload.g.cs Removes old response type.
dotnet/​samples/​Protocol/​TestEnvoys/​Counter/​IncrementRequestPayload.g.cs Removes old request type.
dotnet/​samples/​Protocol/​TestEnvoys/​Counter/​IncrementOutputArguments.g.cs Adds WoT output type.
dotnet/​samples/​Protocol/​TestEnvoys/​Counter/​IncrementInputArguments.g.cs Adds WoT input type.
dotnet/​samples/​Protocol/​TestEnvoys/​Counter/​IncrementCommandExecutor.g.cs Removes DTDL executor.
dotnet/​samples/​Protocol/​TestEnvoys/​Counter/​IncrementActionInvoker.g.cs Adds increment invoker.
dotnet/​samples/​Protocol/​TestEnvoys/​Counter/​IncrementActionExecutor.g.cs Adds increment executor.
dotnet/​samples/​Protocol/​TestEnvoys/​Counter/​EventCollectionSender.g.cs Adds event sender.
dotnet/​samples/​Protocol/​TestEnvoys/​Counter/​EventCollectionReceiver.g.cs Adds event receiver.
dotnet/​samples/​Protocol/​TestEnvoys/​Counter/​EventCollection.g.cs Migrates event payload.
dotnet/​samples/​Protocol/​TestEnvoys/​Counter/​Counter.g.cs Migrates generated facade.
dotnet/​samples/​Protocol/​TestEnvoys/​BytesJsonConverter.cs Refreshes generated output.
dotnet/​samples/​Protocol/​RPC/​SampleServer/​CustomTopicTokenService.cs Updates WoT output type.
dotnet/​samples/​Protocol/​RPC/​SampleClient/​RpcCommandRunner.cs Updates response type.
dotnet/​samples/​Protocol/​RPC/​SampleClient/​CustomTopicTokenClient.cs Updates event type.
.github/​workflows/​run-codegen.yml Runs only WoT codegen.
.github/​workflows/​e2e-cross-language.yml Tests .NET and Rust WoT output.
.github/​workflows/​ci-go.yml Removes legacy codegen steps.
.github/​workflows/​ci-dotnet.yml Builds and verifies WoT codegen.

🧠 Review effort: Balanced


💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread dotnet/samples/Protocol/TestEnvoys/gen-envoys.cmd Outdated
Updated script to use for loop for directory removal and improved readability.

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
@timtay-microsoft
Tim Taylor (timtay-microsoft) merged commit 6b59d8b into main Oct 13, 2026
19 checks passed
@timtay-microsoft
Tim Taylor (timtay-microsoft) deleted the timtay/ciFix branch October 13, 2026 19:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants