blob: 4049e962c5a1fcb28b67296af44fd72faa0a1ac4 [file]
<!doctype html>
<html lang="en-GB" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-Overview/KeyConcepts">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="generator" content="Docusaurus v2.0.0-rc.1">
<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache DevLake - Open-Source Dev Data Platform for Productivity RSS Feed">
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake - Open-Source Dev Data Platform for Productivity Atom Feed"><title data-rh="true">Key Concepts | Apache DevLake - Open-Source Dev Data Platform for Productivity</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/docs/Overview/KeyConcepts"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="keywords" content="Engineering Productivity, Open-Source Engineering, Open-Source Integration Tools, Data Integrates Platform, Open-Source Dev Platform, Open-Source Data Integrates, DevOps Tools Integrates, Open-Source DevOps Tools"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-default-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-rh="true" property="og:title" content="Key Concepts | Apache DevLake - Open-Source Dev Data Platform for Productivity"><meta data-rh="true" name="description" content="DevLake Key Concepts
"><meta data-rh="true" property="og:description" content="DevLake Key Concepts
"><link data-rh="true" rel="icon" href="/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/docs/Overview/KeyConcepts"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Overview/KeyConcepts" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/Overview/KeyConcepts" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Overview/KeyConcepts" hreflang="x-default"><link rel="stylesheet" href="/assets/css/styles.0a4edf75.css">
<link rel="preload" href="/assets/js/runtime~main.566cb87a.js" as="script">
<link rel="preload" href="/assets/js/main.c5c21f25.js" as="script">
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
<div role="region"><a href="#" class="skipToContent_fXgn">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><div class="navbar__logo"><img src="/img/logo.svg" alt="apache devlake" class="themedImage_ToTc themedImage--light_HNdA"><img src="/img/logo.svg" alt="apache devlake" class="themedImage_ToTc themedImage--dark_i4oU"></div><b class="navbar__title text--truncate">Apache DevLake</b></a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a href="#" aria-haspopup="true" aria-expanded="false" role="button" class="navbar__link">Docs</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/docs/Overview/Introduction">Next</a></li><li><a class="dropdown__link" href="/docs/v1.0/Overview/Introduction">v1.0 (Stable)</a></li><li><a class="dropdown__link" href="/docs/v0.21/Overview/Introduction">v0.21</a></li><li><a class="dropdown__link" href="/docs/v0.20/Overview/Introduction">v0.20</a></li><li><a class="dropdown__link" href="/docs/v0.19/Overview/Introduction">v0.19</a></li><li><a class="dropdown__link" href="/docs/v0.18/Overview/Introduction">v0.18</a></li><li><a class="dropdown__link" href="/docs/v0.17/Overview/Introduction">v0.17</a></li><li><a class="dropdown__link" href="/docs/v0.16/Overview/Introduction">v0.16</a></li><li><a class="dropdown__link" href="/docs/v0.15/Overview/Introduction">v0.15</a></li></ul></div><a class="navbar__item navbar__link" href="/livedemo/EngineeringLeads/DORA">Use Cases</a><a class="navbar__item navbar__link" href="/community/">Community</a><a class="navbar__item navbar__link" href="/team">Team</a><a class="navbar__item navbar__link" href="/blogOverview">Blog</a><a href="https://github.com/apache/devlake" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><a class="navbar__item navbar__link" href="/download">Download</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a href="#" aria-haspopup="true" aria-expanded="false" role="button" class="navbar__link">ASF</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Foundation</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">License</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://privacy.apache.org/policies/privacy-policy-public.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Privacy</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li></ul></div><div class="toggle_vylO colorModeToggle_DEke"><button class="clean-btn toggleButton_gllP toggleButtonDisabled_aARS" type="button" disabled="" title="Switch between dark and light mode (currently light mode)" aria-label="Switch between dark and light mode (currently light mode)"><svg viewBox="0 0 24 24" width="24" height="24" class="lightToggleIcon_pyhR"><path fill="currentColor" d="M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"></path></svg><svg viewBox="0 0 24 24" width="24" height="24" class="darkToggleIcon_wfgR"><path fill="currentColor" d="M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"></path></svg></button></div><div class="searchBox_ZlJk"><div class="navbar__search searchBarContainer_NW3z"><input placeholder="Search" aria-label="Search" class="navbar__search-input"><div class="loadingRing_RJI3 searchBarLoadingRing_YnHq"><div></div><div></div><div></div><div></div></div></div></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div class="main-wrapper mainWrapper_z2l0 docsWrapper_BCFX"><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_sjWU" type="button"></button><div class="docPage__5DB"><aside class="theme-doc-sidebar-container docSidebarContainer_b6E3"><div class="sidebar_njMd"><nav class="menu thin-scrollbar menu_SIkG"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--active" aria-expanded="true" href="/docs/Overview">Overview</a><button aria-label="Toggle the collapsible sidebar category &#x27;Overview&#x27;" type="button" class="clean-btn menu__caret"></button></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/Overview/Introduction">Introduction</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/Overview/Architecture">Architecture</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link menu__link--active" aria-current="page" tabindex="0" href="/docs/Overview/KeyConcepts">Key Concepts</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/Overview/SupportedDataSources">Supported Data Sources</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/Overview/References">API References</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/Overview/Roadmap">Roadmap</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" aria-expanded="false" href="/docs/GettingStarted">Getting Started</a><button aria-label="Toggle the collapsible sidebar category &#x27;Getting Started&#x27;" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" aria-expanded="false" href="/docs/Config UI">Config UI</a><button aria-label="Toggle the collapsible sidebar category &#x27;Config UI&#x27;" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/docs/DORA">DORA</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" aria-expanded="false" href="/docs/Metrics">Metrics</a><button aria-label="Toggle the collapsible sidebar category &#x27;Metrics&#x27;" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" aria-expanded="false" href="/docs/DataModels">Data Models</a><button aria-label="Toggle the collapsible sidebar category &#x27;Data Models&#x27;" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" aria-expanded="false" href="/docs/DeveloperManuals">Developer Manuals</a><button aria-label="Toggle the collapsible sidebar category &#x27;Developer Manuals&#x27;" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" aria-expanded="false" href="/docs/Plugins">Plugins</a><button aria-label="Toggle the collapsible sidebar category &#x27;Plugins&#x27;" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" aria-expanded="false" href="/docs/Troubleshooting">Troubleshooting</a><button aria-label="Toggle the collapsible sidebar category &#x27;Troubleshooting&#x27;" type="button" class="clean-btn menu__caret"></button></div></li></ul></nav></div></aside><main class="docMainContainer_gTbr"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_VOVn"><div class="docItemContainer_Djhp"><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_Z_bl" aria-label="Breadcrumbs"><ul class="breadcrumbs" itemscope="" itemtype="https://schema.org/BreadcrumbList"><li class="breadcrumbs__item"><a aria-label="Home page" class="breadcrumbs__link" href="/"><svg viewBox="0 0 24 24" class="breadcrumbHomeIcon_OVgt"><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill="currentColor"></path></svg></a></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item"><a class="breadcrumbs__link" itemprop="item" href="/docs/Overview"><span itemprop="name">Overview</span></a><meta itemprop="position" content="1"></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item breadcrumbs__item--active"><span class="breadcrumbs__link" itemprop="name">Key Concepts</span><meta itemprop="position" content="2"></li></ul></nav><span class="theme-doc-version-badge badge badge--secondary">Version: Next</span><div class="tocCollapsible_ETCw theme-doc-toc-mobile tocMobile_ITEo"><button type="button" class="clean-btn tocCollapsibleButton_TO0P">On this page</button></div><div class="theme-doc-markdown markdown"><header><h1>Key Concepts</h1></header><p><em>Last updated: Nov 9, 2023</em></p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="in-config-ui">In Config UI<a class="hash-link" href="#in-config-ui" title="Direct link to heading"></a></h2><p>The following terms are arranged in the order of their appearance in the actual user workflow in the config UI.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="data-source">Data Source<a class="hash-link" href="#data-source" title="Direct link to heading"></a></h3><p><strong>A data source is a specific DevOps tool from which you wish to sync your data, such as GitHub, GitLab, Jira and Jenkins.</strong></p><p>Typically, DevLake uses one <a href="#data-plugins">data plugin</a> to pull data for a single data source. For example, the <a href="/docs/Plugins/jira">jira</a> plugin is used to fetch data from Jira.</p><p>However, there are cases where DevLake may use multiple data plugins for a single data source. This approach is employed to enhance the synchronization speed and provide other advantages. For instance, when retrieving data from GitHub or GitLab, aside from the <a href="/docs/Plugins/github">github</a> and <a href="/docs/Plugins/gitlab">gitlab</a> plugins, the <a href="/docs/Plugins/gitextractor">gitextractor</a> is also used to fetch data. In these cases, DevLake still recognizes GitHub or GitLab as a single data source.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="data-connection">Data Connection<a class="hash-link" href="#data-connection" title="Direct link to heading"></a></h3><p><strong>A data connection is a specific instance of a <a href="#data-source">data source</a>.</strong> It stores the necessary access information, such as the endpoint URL and authentication token, to establish a connection to that data source.</p><p>A single data source can have one or more data connections associated with it. This allows you to connect to and retrieve data from different instances or installations of the same data source.</p><p>To set up a new data connection, it is recommended to use the &#x27;Data Connections&#x27; page in DevLake. This page provides a convenient interface for adding and configuring data connections. Once a data connection is set up, you can later associate it with a DevLake project.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="data-scope">Data Scope<a class="hash-link" href="#data-scope" title="Direct link to heading"></a></h3><p><strong>A data scope is the top-level &#x27;container&#x27; in a data source</strong>. For example, a data scope for Jira is a Jira board, for TAPD is a TAPD workspace, for GitHub/GitLab/BitBucket is a repo, for Jenkins is a Jenkins job, etc.</p><p>You can add multiple data scopes to a data connection to determine which data to collect. Data scopes vary for different data sources.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="scope-config">Scope Config<a class="hash-link" href="#scope-config" title="Direct link to heading"></a></h3><p><strong>A scope config refers to the configuration of a data scope.</strong> It defines the specific data entities to be collected and the transformations to be applied to that data.</p><p>Each data scope can have at most one scope config associated with it; while a scope config can be shared among multiple data scopes under the same data connection.</p><p>A scope config consists of two parts: <a href="#data-entities">Data Entities</a> and <a href="#transformations">Transformations</a>.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="data-entities">Data Entities<a class="hash-link" href="#data-entities" title="Direct link to heading"></a></h4><p>Data entities refer to the specific data fields that are collected from different data domains. Check the <a href="/docs/Overview/SupportedDataSources#data-collection-scope-by-each-plugin">supported data entities</a> of each data source.</p><p>Data entities are categorized into <a href="/docs/DataModels/DevLakeDomainLayerSchema#data-models">six data domains</a> in DevLake: Issue Tracking, Source Code Management, Code Review, CI/CD, Code Quality, and Cross-Domain.</p><p>When setting up the scope config of a GitHub data connection, you have the flexibility to choose which specific data entities you want to collect. if you only want to collect &#x27;repos&#x27;, &#x27;commits&#x27;, and &#x27;pull requests&#x27; while excluding &#x27;issues&#x27; and &#x27;workflow runs&#x27;, you need to check the &#x27;Source Code Management&#x27; and &#x27;Code Review&#x27; domains, and uncheck &#x27;Issue Tracking&#x27; or &#x27;CI/CD&#x27; domains.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="transformations">Transformations<a class="hash-link" href="#transformations" title="Direct link to heading"></a></h4><p>Transformations are configurations for users to customize how DevLake transforms raw API responses to the domain layer data.</p><p>Although configuring transformation rules is not mandatory, certain pre-built dashboards, such as <a href="/livedemo/EngineeringLeads/DORA">DORA</a> and <a href="/livedemo/EngineeringLeads/WeeklyBugRetro">Weekly Bug Retro</a> require them to display the metrics accurately. If you leave the rules blank or have not configured them correctly, only a few <a href="/livedemo/DataSources/GitHub">data source dashboards</a> will be displayed as expected.</p><p>You can find the required transformations in the &#x27;Dashboard Introduction&#x27; panel in each pre-built dashboard.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="project">Project<a class="hash-link" href="#project" title="Direct link to heading"></a></h3><p><strong>On a high level, a DevLake project can be viewed as a real-world project or product line.</strong> It represents a specific initiative or endeavor within the software development domain.</p><p><strong>On a lower level, a DevLake project is a way of organizing and grouping data from different domains.</strong> DevLake uses various <a href="#data-scope">data scopes</a>, such as repos, boards, cicd_scopes, and cq_projects as the &#x27;container&#x27; to associate different types of data to a specific project.</p><ul><li>A project has a <a href="#Bluepirnts">blueprint</a> for data collection and metric computation.</li><li>DevLake measures DORA metrics at the project level. Each project has a set of DORA metrics. For example, if a user associates &#x27;Jenkins Job A&#x27; and &#x27;Jira board B&#x27; with project M, only the &#x27;deployments&#x27; from &#x27;Jenkins Job A&#x27; and the &#x27;incidents&#x27; from &#x27;Jira board B&#x27; will be considered when calculating the Change Failure Rate metric for project M.
<img loading="lazy" src="/assets/images/project_pipeline-06b394bb2f3453ffd888f20affbe2d5d.png" width="2594" height="1810" class="img_ev3q"></li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="blueprint">Blueprint<a class="hash-link" href="#blueprint" title="Direct link to heading"></a></h3><p><strong>A blueprint serves as the plan to synchronize data from data sources into the DevLake platform.</strong> Creating a blueprint consists of four steps:</p><ol><li>Adding <a href="#data-connections">data connections</a>: You can add one or more data connections to a blueprint, depending on the data sources you want to sync with DevLake. Each data connection represents a specific data source, such as GitHub or Jira.</li><li>Setting up the <a href="#data-scope">data scope</a>: When adding a data connection, you can choose to collect all or part of the configured data scopes of the data connection.</li><li>Setting up the sync policy: You can specify the sync frequency and the time range for data collection.</li></ol><p>The relationship between &#x27;Blueprint&#x27;, &#x27;Project&#x27; and &#x27;Data Connection&#x27; is explained as follows:</p><p><img loading="lazy" alt="Blueprint ERD" src="/assets/images/blueprint-erd-762692dfe07100fd9c045dd22ec90954.svg" width="1352" height="667" class="img_ev3q"></p><ul><li>A blueprint will be automatically created by along the creation with a DevLake project.</li><li>Each blueprint can have multiple data connections.</li><li>Each data connection can have multiple data scopes.</li><li>Each set of data scope only consists of one GitHub/GitLab project or Jira board, along with their corresponding data entities.</li><li>Each set of data scope can only have one set of scope config.</li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="apis-and-config-ui-advanced-mode">APIs and Config UI Advanced Mode<a class="hash-link" href="#apis-and-config-ui-advanced-mode" title="Direct link to heading"></a></h2><p>Typically, the following terms do not appear in the regular mode of the Config UI, but can be very useful if you use <a href="/docs/Overview/References">DevLake&#x27;s APIs</a> or the advanced mode of Config UI.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="data-plugins">Data Plugins<a class="hash-link" href="#data-plugins" title="Direct link to heading"></a></h3><p><strong>A data plugin is a specific module that syncs or transforms data.</strong> There are two types of data plugins: Data Collection Plugins and Data Transformation Plugins.</p><p>Data Collection Plugins pull data from one or more data sources. DevLake supports 8 data plugins in this category: <code>ae</code>, <code>feishu</code>, <code>gitextractor</code>, <code>github</code>, <code>gitlab</code>, <code>jenkins</code>, <code>jira</code> and <code>tapd</code>.</p><p>Data Transformation Plugins transform the data pulled by other Data Collection Plugins. <code>refdiff</code> is currently the only plugin in this category.</p><p>Although the names of the data plugins are not displayed in the regular mode of DevLake Configuration UI, they can be used directly in JSON in the Advanced Mode.</p><p>For detailed information about the relationship between data sources and data plugins, please refer to <a href="/docs/Overview/SupportedDataSources">Supported Data Sources</a>.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="pipelines">Pipelines<a class="hash-link" href="#pipelines" title="Direct link to heading"></a></h3><p><strong>A pipeline is an orchestration of <a href="#tasks">tasks</a> of data <code>collection</code>, <code>extraction</code>, <code>conversion</code> and <code>enrichment</code>, defined in the DevLake API.</strong> A pipeline is composed of one or multiple <a href="#stages">stages</a> that are executed in a sequential order. Any error occurring during the execution of any stage, task or subtask will cause the immediate fail of the pipeline.</p><p>The composition of a pipeline is explained as follows:
<img loading="lazy" alt="Blueprint ERD" src="/assets/images/pipeline-erd-63705e2232b63c7fe75197ee3e96f170.svg" width="1409" height="593" class="img_ev3q">
Notice: <strong>You can manually orchestrate the pipeline in Configuration UI Advanced Mode and the DevLake API; whereas in Configuration UI regular mode, an optimized pipeline orchestration will be automatically generated for you.</strong></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="stages">Stages<a class="hash-link" href="#stages" title="Direct link to heading"></a></h3><p><strong>A stages is a collection of tasks performed by data plugins.</strong> Stages are executed in a sequential order in a pipeline.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="tasks">Tasks<a class="hash-link" href="#tasks" title="Direct link to heading"></a></h3><p><strong>A task is a collection of <a href="#subtasks">subtasks</a> that perform any of the <code>collection</code>, <code>extraction</code>, <code>conversion</code> and <code>enrichment</code> jobs of a particular data plugin.</strong> Tasks are executed in a parallel order in any stages.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="subtasks">Subtasks<a class="hash-link" href="#subtasks" title="Direct link to heading"></a></h3><p><strong>A subtask is the minimal work unit in a pipeline that performs in any of the four roles: <code>Collectors</code>, <code>Extractors</code>, <code>Converters</code> and <code>Enrichers</code>.</strong> Subtasks are executed in sequential orders.</p><ul><li><code>Collectors</code>: Collect raw data from data sources, normally via DevLake API and stored into <code>raw data table</code></li><li><code>Extractors</code>: Extract data from <code>raw data tables</code> to <code>tool layer tables</code></li><li><code>Converters</code>: Convert data from <code>tool layer tables</code> into <code>domain layer tables</code></li><li><code>Enrichers</code>: Enrich data from one domain to other domains. For instance, the Fourier Transformation can examine <code>issue_changelog</code> to show time distribution of an issue on every assignee.</li></ul></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/devlake-website/edit/main/docs/Overview/KeyConcepts.md" target="_blank" rel="noreferrer noopener" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div><div class="col lastUpdated_vwxv"></div></div></footer></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages navigation"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/Overview/Architecture"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Architecture</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/Overview/SupportedDataSources"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Supported Data Sources</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#in-config-ui" class="table-of-contents__link toc-highlight">In Config UI</a><ul><li><a href="#data-source" class="table-of-contents__link toc-highlight">Data Source</a></li><li><a href="#data-connection" class="table-of-contents__link toc-highlight">Data Connection</a></li><li><a href="#data-scope" class="table-of-contents__link toc-highlight">Data Scope</a></li><li><a href="#scope-config" class="table-of-contents__link toc-highlight">Scope Config</a></li><li><a href="#project" class="table-of-contents__link toc-highlight">Project</a></li><li><a href="#blueprint" class="table-of-contents__link toc-highlight">Blueprint</a></li></ul></li><li><a href="#apis-and-config-ui-advanced-mode" class="table-of-contents__link toc-highlight">APIs and Config UI Advanced Mode</a><ul><li><a href="#data-plugins" class="table-of-contents__link toc-highlight">Data Plugins</a></li><li><a href="#pipelines" class="table-of-contents__link toc-highlight">Pipelines</a></li><li><a href="#stages" class="table-of-contents__link toc-highlight">Stages</a></li><li><a href="#tasks" class="table-of-contents__link toc-highlight">Tasks</a></li><li><a href="#subtasks" class="table-of-contents__link toc-highlight">Subtasks</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="col footer__col"><div class="footer__title">Docs</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/docs/GettingStarted">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/DataModels/DevLakeDomainLayerSchema">Data Models</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/Metrics">Engineering Metrics</a></li></ul></div><div class="col footer__col"><div class="footer__title">Community</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://join.slack.com/t/devlake-io/shared_invite/zt-1lkgbdmys-AU2azidzO1u~mtjlg9my7A" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li><li class="footer__item"><a href="https://github.com/apache/incubator-devlake/issues" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub Issue Tracker</a></li><li class="footer__item"><a href="https://github.com/apache/devlake-website/issues" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub Issue Tracker For Docs</a></li></ul></div><div class="col footer__col"><div class="footer__title">More</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://github.com/apache/devlake" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li><li class="footer__item"><a href="https://twitter.com/ApacheDevLake" target="_blank" rel="noopener noreferrer" class="footer__link-item">Twitter</a></li><li class="footer__item"><a class="footer__link-item" href="/community/trademark">Trademark Guidelines</a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright">
<div style="margin-top: 20px">
<a href="https://incubator.apache.org/" target="_blank"><img style="height:40px; margin-bottom: 10px; margin-top: 10px" alt="Apache Software Foundation" src="/img/apache-incubator.svg"></a>
<p style="text-align:left; font-weight: 300; font-size: 0.8em;">Apache DevLake is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.</p>
<p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2026 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
</div>
</div></div></div></footer></div>
<script src="/assets/js/runtime~main.566cb87a.js"></script>
<script src="/assets/js/main.c5c21f25.js"></script>
</body>
</html>