Repository navigation
fix(azuredevops): run convertApiTimelineRecords when CICD is selected - #9317
Merged
klesh merged 1 commit intoNov 6, 2026
Merged
Conversation
The subtask that converts Azure Pipelines timeline records into cicd_tasks was registered under the CODEREVIEW domain type, while the subtasks that collect and extract those records are registered under CICD. The blueprint picks subtasks by domain type, so the converter was left out of the plan whenever CODEREVIEW was not selected. That is always the case for repositories hosted outside Azure Repos (GitHub, Bitbucket), which only get CICD (plus CODE for public repositories), and also for Azure Repos scopes configured with CICD only. In those cases timeline records were collected and extracted, but no cicd_tasks were written, so deployments recognized by stage or job names never reached the DORA metrics. Register the converter under CICD like the other timeline subtasks. Closes apache#8943 Signed-off-by: Zihan Dai <dzh1436286758@gmail.com>
klesh
approved these changes
Nov 6, 2026
klesh
left a comment
Contributor
There was a problem hiding this comment.
Good catch.
Thanks for your contribution.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
convertApiTimelineRecordsis the azuredevops_go subtask that turns Azure Pipelines timeline records (stages and jobs) intocicd_tasks. ItsDomainTypeswasCODEREVIEW, while the two subtasks it depends on,collectApiTimelineRecordsandextractApiTimelineRecords, areCICD.makePipelinePlanV200selects subtasks by domain type, so whenever a scope's entities do not includeCODEREVIEW, the timeline records are collected and extracted but never converted:CICD(plusCODEfor public repositories) for these, so this happens on every run.For those scopes
cicd_tasksstays empty. ThedeploymentPattern/productionPatternmatches on stage and job names are lost, and the dora plugin, which also detects deployments throughcicd_tasks, misses every deployment that can only be recognized at the stage or job level.This PR registers the converter under
CICD, the same domain type as the collector and extractor it depends on. Azure Repos scopes that include both Code Review and CI/CD (the default) plan the converter exactly as before.Before, the subtasks planned for a private GitHub repository with all entities selected (the CI/CD part of the plan):
After:
The result is the same for a public GitHub repository and for an Azure Repos scope with only CI/CD selected.
To check the effect on the domain layer, I ran the plugin's e2e fixtures (
raw_tables/_raw_azuredevops_go_api_builds.csvand_raw_azuredevops_go_api_timeline_records.csv) against MySQL 8.4, running only the build and timeline subtasks that the plan selects for a CICD-only scope:Does this close any open issues?
Closes #8943
Screenshots
Not applicable (backend only). The before/after output is above.
Other Information
Testing:
TestMakeDataSourcePipelinePlanV200ConvertsTimelineRecordsWithCicdinapi/blueprint_v200_test.gochecks the planned subtasks for a private GitHub repository and for an Azure Repos scope with CICD only. When I reverted only theDomainTypeschange, both cases failed, and the diff showsconvertApiTimelineRecordsmissing afterextractApiTimelineRecords.go testforplugins/azuredevops_go/apiandplugins/azuredevops_go/taskspasses.plugins/azuredevops_go/e2epasses against MySQL 8.4 (all 5 data-flow tests, includingTestAzuredevopsTimelineDataFlow).gofmt,go vet, andgolangci-lintv2.15.0 on the two touched packages are clean.