Summary
Add Jira as a supported DevOps tool in the CLI. Jira is the most popular issue tracker globally (~75% enterprise adoption), providing change lead time and issue resolution data for DORA metrics.
Upstream Plugin
jira in incubator-devlake/backend/plugins/jira/
| Property |
Value |
| Plugin slug |
jira |
| Auth |
MultiAuth (AccessToken for Jira Cloud, BasicAuth for Jira Server) |
| Scope type |
Boards (BoardId uint64) |
| Scope ID field |
boardId |
| Default endpoint |
User-provided (e.g., https://your-domain.atlassian.net/) |
| Remote-scope API |
Yes |
| Connection test |
Yes |
Dependencies
Blocked by:
Changes
- Add
ConnectionDef for jira in connectionRegistry:
AuthMethod: "AccessToken" (Jira Cloud; BasicAuth for Server can be added later)
Endpoint: "" (user must provide)
SupportsTest: true
TokenPrompt: "Jira API Token"
EnvVarNames: []string{"JIRA_TOKEN", "JIRA_API_TOKEN"}
EnvFileKeys: []string{"JIRA_TOKEN", "JIRA_API_TOKEN"}
ScopeIDField: "boardId"
ScopeFunc: scopeJiraHandler
- Implement
scopeJiraHandler:
- Use
client.ListRemoteScopes("jira", connID, "", "") to list boards
- Let user select boards interactively or via
--board-ids flag
- PUT selected boards as scopes
- Add
JiraBoardScope struct (or build dynamically from remote-scope data)
- Set
Available: true
Acceptance Criteria
Summary
Add Jira as a supported DevOps tool in the CLI. Jira is the most popular issue tracker globally (~75% enterprise adoption), providing change lead time and issue resolution data for DORA metrics.
Upstream Plugin
jirainincubator-devlake/backend/plugins/jira/jiraBoardIduint64)boardIdhttps://your-domain.atlassian.net/)Dependencies
Blocked by:
boardIdis uint64, not in currentScopeListEntry)Changes
ConnectionDefforjirainconnectionRegistry:AuthMethod: "AccessToken"(Jira Cloud; BasicAuth for Server can be added later)Endpoint: ""(user must provide)SupportsTest: trueTokenPrompt: "Jira API Token"EnvVarNames: []string{"JIRA_TOKEN", "JIRA_API_TOKEN"}EnvFileKeys: []string{"JIRA_TOKEN", "JIRA_API_TOKEN"}ScopeIDField: "boardId"ScopeFunc: scopeJiraHandlerscopeJiraHandler:client.ListRemoteScopes("jira", connID, "", "")to list boards--board-idsflagJiraBoardScopestruct (or build dynamically from remote-scope data)Available: trueAcceptance Criteria
gh devlake configure connection add --plugin jira --endpoint https://mysite.atlassian.netcreates a Jira connectiongo build ./...,go test ./...,go vet ./...pass