dncrews opened a new pull request, #8877: URL: https://github.com/apache/incubator-devlake/pull/8877
### Summary This PR adds a new Rootly data-source plugin that collects incident-management data from Rootly and maps it into DevLake's ticket domain model. **Rootly Plugin Implementation (`backend/plugins/rootly/`):** - Adds the full Rootly plugin implementation with connection, scope, scope config, API, migration, model, and blueprint pipeline support. - Adds Rootly connection management using Bearer token authentication, including create/list/update/delete/test connection APIs. - Adds remote scope discovery for Rootly services, including search and paginated service selection. - Collects Rootly services and incidents through Rootly's JSON:API endpoints. - Extracts Rootly incidents, services, and related users into tool-layer tables. - Converts Rootly services into DevLake boards and Rootly incidents into DevLake ticket issues, board issues, and issue assignees. - Maps Rootly incident statuses, severities, timestamps, creators, and lifecycle role users into DevLake domain fields. - Supports blueprint v2.0 pipeline plan generation for selected Rootly service scopes. **Config UI:** - Registers Rootly in the config UI plugin list. - Adds the Rootly connection form with endpoint, token, proxy, and rate-limit configuration. - Adds the Rootly icon and stable documentation URLs. **Grafana Dashboard:** - Adds a Rootly data-source dashboard for incident resolution status and MTTR metrics. - Filters dashboard data by Rootly service boards using the standard DevLake board/issue/board_issue domain tables. **Testing:** - Adds unit coverage for incident query construction, extraction edge cases, status/severity mapping, lead-time calculation, and assignee deduplication. - Adds an e2e data-flow fixture test covering raw Rootly incidents through tool-layer extraction and ticket-domain conversion. - Registers Rootly in plugin table-info and server-startup plugin coverage. ### Does this close any open issues? Closes #8876 ### Screenshots N/A ### Other Information **Data model mapping:** - Rootly Service → DevLake Board - Rootly Incident → DevLake Issue - Rootly Incident Service relationship → DevLake BoardIssue - Rootly incident role users → DevLake User and IssueAssignee - Rootly status/severity fields → DevLake ticket status, priority, and severity **Validation run locally:** - `jq empty grafana/dashboards/Rootly.json` - `go test ./plugins/rootly/...` -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
