Skip to content

feat(tempo): add Jira Tempo Timesheets plugin#8884

Open
acarmisc wants to merge 4 commits into
apache:mainfrom
acarmisc:feature/tempo-plugin-8883
Open

feat(tempo): add Jira Tempo Timesheets plugin#8884
acarmisc wants to merge 4 commits into
apache:mainfrom
acarmisc:feature/tempo-plugin-8883

Conversation

@acarmisc
Copy link
Copy Markdown

Summary

Adds a new plugin for ingesting worklogs from Jira Tempo (Tempo Timesheets) API v4 into DevLake. The plugin collects worklog and team data from the Tempo API and maps them to DevLake's issue_worklogs domain layer.

Backend (backend/plugins/tempo/):

  • Plugin entry point (impl/impl.go) implementing PluginMeta, PluginTask, PluginModel, PluginMigration, PluginSource
  • Tempo API client with Bearer token authentication
  • Data pipeline: Collectors → Extractors → Converters for worklogs and teams
  • Connection management, scope, and blueprint v2.0.0 API endpoints
  • Database migrations for _tool_tempo_worklogs, _tool_tempo_teams, _tool_tempo_connections
  • E2E tests with CSV fixtures

Config-UI (config-ui/src/plugins/register/tempo/):

  • Connection configuration form (endpoint, token, proxy, rate limit)
  • Teams data scope with miller column layout
  • Plugin registration in config-ui/src/plugins/register/index.ts

Dependencies: Requires the Jira plugin for issue ID mapping (jira:JiraIssues:{ConnectionId}:{IssueId})

Does this close any open issues?

Closes #8883

Screenshots

N/A (plugin configuration is standard connection form, consistent with other plugins)

Other Information

Adds plugin for ingesting worklogs from Jira Tempo (Tempo Timesheets) API v4.

Backend:
- Plugin entry point (impl/impl.go)
- Tempo API client with Bearer token auth (tasks/api_client.go)
- Data collectors, extractors, and converters for worklogs and teams
- Connection management API endpoints (api/)
- Database migrations for _tool_tempo_worklogs, _tool_tempo_teams
- E2E tests with CSV fixtures

Config-UI:
- Connection configuration UI (config.tsx)
- Plugin registration in index.ts

Dependency: requires Jira plugin for issue ID mapping.

Closes apache#8883
@dosubot dosubot Bot added size:XXL This PR changes 1000+ lines, ignoring generated files. add-a-plugin This issue is to add a plugin component/config-ui This issue or PR relates to config-ui component/plugins This issue or PR relates to plugins pr-type/feature-development This PR is to develop a new feature labels May 24, 2026
acarmisc added 3 commits May 30, 2026 12:23
- fix Apache license headers in 5 files (missing/typo content)
- move migration script to archived models pattern (forbidden import on plugins/tempo/models)
- register tempo in plugins/table_info_test.go
- drop unused validator var/import in api/init.go
- fix malformed issue_worklogs.csv snapshot (header/body column mismatch)
The team extractor queries _raw_tempo_api_teams with the params serialized
from TempoApiParams{ConnectionId, TeamId}, expecting the raw fixture rows
to store each team as its own record with a single-object data payload.
The previous fixture wrapped both teams into a JSON array in the data
column and used only ConnectionId in params, causing TestTeamDataFlow to
find zero matching rows.

Also extend the _tool_tempo_teams snapshot with the _raw_data_* columns
that the test verifies via ColumnWithRawData.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

add-a-plugin This issue is to add a plugin component/config-ui This issue or PR relates to config-ui component/plugins This issue or PR relates to plugins pr-type/feature-development This PR is to develop a new feature size:XXL This PR changes 1000+ lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature][Plugin] Add Tempo (Jira Tempo Timesheets) plugin

1 participant