Azure DevOps integration troubleshooting
Answers to common bugs and edge cases when using the Azure DevOps Ocean integration.
Why is a deleted repository not reflected in Port?
Answer (click to expand)
A repository deleted in Azure DevOps remains as an entity in Port. This affects versions 0.7.44 and 0.7.5 of the ADO integration.
Cause: A bug in those versions caused the reconcile phase to skip repository deletion events. Other entity kinds (branches, pull requests) handle deletion correctly.
Fix: Update the ADO integration to the latest version via Data Sources → your ADO integration → check for updates. If you are self-hosted, pull the latest image tag.
Why does the Azure DevOps sync appear to run but nothing happens?
Answer (click to expand)
The Data Sources page shows a sync running (spinner or timestamp updating), but no entities are created, updated, or deleted. The event log shows no errors.
Cause: This typically happens when the integration's service hooks in Azure DevOps were not created correctly, or when the integration pod restarted mid-sync and the previous run's state was not cleared.
Diagnostic steps:
- Navigate to your Azure DevOps project → Project Settings → Service hooks. Verify Port webhooks exist. If not, the integration is not receiving events.
- Check the integration event log in Port for
abortorresync_abortedentries - these indicate the sync was interrupted. - Trigger a manual full resync from Data Sources.
PAT token and service hook setup: If service hooks fail to create when installing the integration, verify your Personal Access Token has the following scopes: Code (Read), Build (Read), Release (Read), Work Items (Read), Service Hooks (Read & Write). The Service Hooks scope is required for the integration to register webhooks automatically.
Why are tests not ingesting despite having many builds?
Answer (click to expand)
You have a large number of builds but only a fraction of test results are ingested, with very few builds matched to tests.
Cause: The ADO integration paginates test results per build, but large build histories can exceed the default page limit before all tests are fetched. The integration logs no errors in this case.
Fix:
- Reduce the build history window in your selector:
- kind: test-run
selector:
query: '.createdDate >= (now - 7776000 | todate)'
The example above limits ingestion to roughly the last 90 days.
- Alternatively, filter to specific build definitions rather than ingesting all builds.
Why is file ingestion inconsistent across files in the same repository?
Answer (click to expand)
Some files are synced correctly but others (for example service-catalog.yml) are skipped or show a perpetual syncing state.
Cause: Large files or files near the ADO API response size limit can trigger buffer overflow errors that are not surfaced in the Port event log.
Fix:
- Check the integration pod logs directly for
buffer limitortimeouterrors. - Add a size filter to your file selector to exclude files above a certain threshold.
- If using self-hosted, increase the pod's memory limit.