Skip to content

feat(ir): add typed builder for SonarQubePublish@8 - #1268

Merged
jamesadevine merged 3 commits into
mainfrom
feat/ir-sonar-qube-publish-b027108c435468a8
Jul 1, 2026
Merged

feat(ir): add typed builder for SonarQubePublish@8#1268
jamesadevine merged 3 commits into
mainfrom
feat/ir-sonar-qube-publish-b027108c435468a8

Conversation

@github-actions

@github-actions github-actions Bot commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

Summary

Adds a typed builder struct for SonarQubePublish@8 to the ado-aw IR, completing the SonarQube pipeline trio alongside the previously contributed SonarQubePrepare@8 and SonarQubeAnalyze@8 builders.

Motivation

Previously, any code that needed to emit a SonarQubePublish@8 task step had to hand-craft TaskStep::new(...) with raw string input keys. This PR introduces a typed builder struct (new() + optional polling_timeout_sec() setter + into_step()) so the only available input is type-checked and the builder enforces the correct ADO defaults.

Changes

  • src/compile/ir/tasks/sonar_qube_publish.rs: new SonarQubePublish builder struct and its #[cfg(test)] mod tests (5 tests)
  • src/compile/ir/tasks/mod.rs: pub mod sonar_qube_publish; declaration (alphabetical order, between publish_test_results and twine_authenticate)

ADO Task Reference

  • Task: SonarQubePublish@8
  • Docs: https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/reference/sonar-qube-publish-v8-task
  • Required inputs: none with mandatory values — pollingTimeoutSec is required but has ADO default 300
  • Optional inputs: pollingTimeoutSec (u32, defaults to 300 on the ADO side)

Validation

  • cargo build --all-targets
  • cargo test (5 new unit tests, all passing)
  • cargo clippy --all-targets --all-features --workspace -- -D warnings

Created by the ado-task-ir-contributor workflow.

Generated by ADO Task IR Contributor · 576.8 AIC · ⌖ 29.5 AIC · ⊞ 39.2K ·

github-actions Bot and others added 3 commits July 1, 2026 05:57
Add SonarQubePublish builder struct to complete the SonarQube pipeline
trio (SonarQubePrepare → SonarQubeAnalyze → SonarQubePublish).

The task has a single input (pollingTimeoutSec, ADO default 300) so
new() requires no arguments; polling_timeout_sec() is provided as an
optional setter for callers who need a non-default timeout.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Integrates the SonarQubePublish@8 typed builder with the front-matter task-step advisory validation added in #1096: derives Deserialize keyed on the ADO pollingTimeoutSec input (deny_unknown_fields, flex str/int) and registers it in parse.rs VALIDATORS.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@jamesadevine
jamesadevine marked this pull request as ready for review July 1, 2026 13:37
@jamesadevine
jamesadevine merged commit 426ee21 into main Jul 1, 2026
@jamesadevine
jamesadevine deleted the feat/ir-sonar-qube-publish-b027108c435468a8 branch July 1, 2026 13:37
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.

1 participant