Overview of pydevlake
mainpydevlake is the framework for developing and running Python plugins for Apache DevLake. It facilitates communication between the main Golang server and Python-based plugins using Inter-Process Communication (IPC).repository·main·Indexed 25 days ago
https://github.com/apache/devlakeAn open-source dev data platform that ingests, analyzes, and visualizes fragmented data from DevOps tools such as GitHub, GitLab, Jira, and Jenkins to provide insights into the Software Development Life Cycle (SDLC). It features a Domain Layer architecture to standardize metrics across different platforms and includes plugins for tools like GitHub Copilot, Linear, CircleCI, Azure DevOps, and AWS Q Developer.
pydevlake is the framework for developing and running Python plugins for Apache DevLake. It facilitates communication between the main Golang server and Python-based plugins using Inter-Process Communication (IPC).alpine-dbt image provides an Alpine Linux environment with dbt (data build tool) pre-installed. It is available on Docker Hub at mericodev/alpine-dbt.The Domain Layer provides a set of Platform Independent Entities that allow DevLake to calculate metrics across different platforms (e.g., Jira vs. TAPD, or GitHub vs. GitLab).
DevLake categorizes all platforms into three main categories:
By abstracting common properties into Domain Entities, DevLake can use a single metric implementation to support multiple underlying platforms.
DevLake supports two primary types of plugins that hook into the core at runtime to extend capabilities like integrating new data sources, transforming data, or exporting data to other systems:
plugin package.When using the CircleCI plugin, DevLake maps CircleCI's hierarchical execution model to its internal Domain Layer. This mapping ensures that CircleCI data can be unified with other CI/CD tools in DevLake's analytics.
To maintain consistency across different CI/CD providers, DevLake converts CircleCI entities as follows:
cicd_pipeline_commit (mapped this way because CircleCI pipelines are tied to a specific commit SHA).cicd_pipeline.cicd_task.Changes to GITHUB_PR_EXCLUDELIST require a DevLake restart to take effect.
Steps to update:
Important: Previously collected bot data remains in the database. Only new collections will respect the updated filter.
To use these dashboards, ensure the following prerequisites are met:
Prerequisites:
gh-copilot) configured and collecting data.project_pr_metrics table).Template Variables: Both dashboards utilize these variables for filtering:
connection_id: DevLake GitHub Copilot connection.scope_id: Enterprise/Organization scope.project: DevLake project filter.Optional: Rollout Milestone Annotation: To annotate specific rollout dates for teams:
To generate static and minified production assets in the dist/ directory, run the build command. For actual production deployments, it is recommended to use the official Docker Image for Config-UI as described in the main project documentation.
$ yarn buildThe Linear plugin uses a personal API key for authentication. This key must be passed verbatim in the Authorization header without a Bearer prefix.
To generate a key, navigate to Settings → Security & access → Personal API keys within your Linear account.
To manually build and push a new version of the lake-builder image to Docker Hub, set the VERSION environment variable and use the standard Docker build and push commands. This image is a Golang builder image for DevLake used primarily by GitHub workflows.
export VERSION=0.0.11
docker build -t mericodev/lake-builder:$VERSION .
docker push mericodev/lake-builder:$VERSIONBlueprints allow you to set pipeline plans and schedule jobs. When creating or updating a blueprint, you can provide a cronConfig in standard crontab format to define the execution schedule.
The cronConfig format is "M H D M WD":
M: minuteH: hourD: day (month)M: monthWD: day (week)You can verify your cron expression at https://crontab.guru/.
To build the gitextractor plugin using a locally compiled version of libgit2 (v1.3.2), you must provide the appropriate CGO flags to the go build command so the compiler can locate the headers and library files.
CGO_LDFLAGS="-L/usr/local/lib -lgit2" CGO_CFLAGS="-I/usr/local/include" go build ./plugins/gitextractor/... 2>&1 | tail -5