Summary
Add CircleCI as a supported DevOps tool in the CLI. CircleCI is a popular cloud CI/CD platform providing build and deployment data for DORA metrics (deployment frequency, change failure rate).
Upstream Plugin
circleci in incubator-devlake/backend/plugins/circleci/
| Property |
Value |
| Plugin slug |
circleci |
| Auth |
AccessToken (custom header: Circle-Token) |
| Scope type |
Projects (Id string, includes Slug and OrganizationId) |
| Scope ID field |
id |
| Default endpoint |
https://circleci.com/api/v2/ |
| Remote-scope API |
Yes |
| Connection test |
Yes |
Dependencies
Blocked by:
Not blocked by #85 — CircleCI uses AccessToken, compatible with current auth model. The custom header format (Circle-Token) is handled by the DevLake backend.
Changes
- Add
ConnectionDef for circleci in connectionRegistry:
Endpoint: "https://circleci.com/api/v2/"
SupportsTest: true
TokenPrompt: "CircleCI personal API token"
EnvVarNames: []string{"CIRCLECI_TOKEN", "CIRCLE_TOKEN"}
EnvFileKeys: []string{"CIRCLECI_TOKEN", "CIRCLE_TOKEN"}
ScopeIDField: "id"
ScopeFunc: scopeCircleCIHandler
- Implement
scopeCircleCIHandler:
- Use
client.ListRemoteScopes("circleci", connID, "", "") to list projects
- Let user select projects interactively
- PUT selected projects as scopes
- Set
Available: true
Acceptance Criteria
Summary
Add CircleCI as a supported DevOps tool in the CLI. CircleCI is a popular cloud CI/CD platform providing build and deployment data for DORA metrics (deployment frequency, change failure rate).
Upstream Plugin
circleciinincubator-devlake/backend/plugins/circleci/circleciCircle-Token)Idstring, includesSlugandOrganizationId)idhttps://circleci.com/api/v2/Dependencies
Blocked by:
ScopeIDField)Not blocked by #85 — CircleCI uses AccessToken, compatible with current auth model. The custom header format (
Circle-Token) is handled by the DevLake backend.Changes
ConnectionDefforcircleciinconnectionRegistry:Endpoint: "https://circleci.com/api/v2/"SupportsTest: trueTokenPrompt: "CircleCI personal API token"EnvVarNames: []string{"CIRCLECI_TOKEN", "CIRCLE_TOKEN"}EnvFileKeys: []string{"CIRCLECI_TOKEN", "CIRCLE_TOKEN"}ScopeIDField: "id"ScopeFunc: scopeCircleCIHandlerscopeCircleCIHandler:client.ListRemoteScopes("circleci", connID, "", "")to list projectsAvailable: trueAcceptance Criteria
gh devlake configure connection add --plugin circlecicreates a CircleCI connectiongo build ./...,go test ./...,go vet ./...pass