PageSourceSearch

https://conduitio.github.io/assets/js/e89a88ea.58a35dd7.js

js conduitio.github.io collected 2026-10-03 08:52:39 UTC 6,123 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunkconduit_site=self.webpackChunkconduit_site||[]).push([[7064],{28453:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>s});var o=t(96540);const i={},c=o.createContext(i);function r(e){const n=o.useContext(c);return o.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function s(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),o.createElement(c.Provider,{value:n},e.children)}},59701:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>s,default:()=>u,frontMatter:()=>r,metadata:()=>o,toc:()=>d});const o=JSON.parse('{"id":"developing/connectors/conduit-connector-template","title":"Conduit Connector Template","description":"Initializing a Conduit Connector Project","source":"@site/docs/2-developing/0-connectors/1-conduit-connector-template.mdx","sourceDirName":"2-developing/0-connectors","slug":"/developing/connectors/conduit-connector-template","permalink":"/docs/developing/connectors/conduit-connector-template","draft":false,"unlisted":false,"editUrl":"https://github.com/conduitio/conduitio.github.io/edit/main/docs/2-developing/0-connectors/1-conduit-connector-template.mdx","tags":[],"version":"current","lastUpdatedAt":1751447712000,"sidebarPosition":1,"frontMatter":{"title":"Conduit Connector Template"},"sidebar":"docsSidebar","previous":{"title":"Guidelines for writing a connector","permalink":"/docs/developing/connectors/"},"next":{"title":"Connector Specification","permalink":"/docs/developing/connectors/connector-specification"}}');var i=t(74848),c=t(28453);const r={title:"Conduit Connector Template"},s=void 0,l={},d=[{value:"Initializing a Conduit Connector Project",id:"initializing-a-conduit-connector-project",level:2},{value:"Steps to Use the Connector Template",id:"steps-to-use-the-connector-template",level:3},{value:"Developing Connectors",id:"developing-connectors",level:2}];function a(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",li:"li",ol:"ol",p:"p",ul:"ul",...(0,c.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h2,{id:"initializing-a-conduit-connector-project",children:"Initializing a Conduit Connector Project"}),"\n",(0,i.jsxs)(n.p,{children:["To begin the development of a custom Conduit connector, it is recommended developers should initialize their project using the ",(0,i.jsx)(n.a,{href:"https://github.com/ConduitIO/conduit-connector-template",children:"Conduit connector template"}),". This template streamlines the setup process by providing a fundamental project structure, along with utility configurations for GitHub actions and a Makefile."]}),"\n",(0,i.jsx)(n.p,{children:"Included in the Conduit Connector Template are:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Base code for configuring the connector's source and destination."}),"\n",(0,i.jsx)(n.li,{children:"Sample unit tests to validate connector functionality."}),"\n",(0,i.jsx)(n.li,{children:"A preconfigured Makefile to assist with common build tasks."}),"\n",(0,i.jsx)(n.li,{children:"GitHub Actions Workflows for continuous integration including building, testing, linting, and automated release creation upon tag push."}),"\n",(0,i.jsx)(n.li,{children:"Dependabot configurations to automate dependency updates and minor version auto-merging."}),"\n",(0,i.jsx)(n.li,{children:"Issue and Pull Request templates for consistent contribution practices."}),"\n",(0,i.jsx)(n.li,{children:"A README template to guide project documentation."}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"steps-to-use-the-connector-template",children:"Steps to Use the Connector Template"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsx)(n.li,{children:'On the repository\'s main page, select "Use this template".'}),"\n",(0,i.jsx)(n.li,{children:"Provide the new repository details as prompted."}),"\n",(0,i.jsx)(n.li,{children:"Upon repository creation, clone it to your local development environment."}),"\n",(0,i.jsxs)(n.li,{children:["Execute the ",(0,i.jsx)(n.code,{children:"./setup.sh"})," script with the desired module name, e.g., ",(0,i.jsx)(n.code,{children:"./setup.sh g
1ithub.com/awesome-org/conduit-connector-file"}),"."]}),"\n",(0,i.jsxs)(n.li,{children:["(Optional) Define code owners in the ",(0,i.jsx)(n.code,{children:"CODEOWNERS"})," file."]}),"\n"]}),"\n",(0,i.jsx)(n.admonition,{type:"note",children:(0,i.jsx)(n.p,{children:"By convention the name of the repository should be conduit-connector-[connector name]. So if you would like to reference the connector using foo, the repository should be named conduit-connector-foo."})}),"\n",(0,i.jsx)(n.h2,{id:"developing-connectors",children:"Developing Connectors"}),"\n",(0,i.jsxs)(n.p,{children:["A Conduit Connector can serve as a source, destination, or both. Implement a source connector by defining a struct that satisfies the ",(0,i.jsx)(n.a,{href:"https://pkg.go.dev/github.com/conduitio/conduit-connector-sdk#Source",children:"sdk.Source"})," interface, or create a destination connector by creating a struct that satisfies ",(0,i.jsx)(n.a,{href:"https://pkg.go.dev/github.com/conduitio/conduit-connector-sdk#Destination",children:"sdk.Destination"}),"."]}),"\n",(0,i.jsx)(n.p,{children:"Both types of connectors follow a similar lifecycle which is: configure, open connection, read/write records, and teardown.  There are other auxiliary functions that help with configuration that are autogenerated when using the Conduit Connector template."}),"\n",(0,i.jsx)(n.p,{children:"Further information on developing a Source or Destination connector can be found at the following links:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"/docs/developing/connectors/developing-source-connectors",children:"Developing a Source Connector"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"/docs/developing/connectors/developing-destination-connectors",children:"Developing a Destination Connector"})}),"\n"]})]})}function u(e={}){const{wrapper:n}={...(0,c.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(a,{...e})}):a(e)}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.