Skip to content

Commit fd45159

Browse files
authored
docs: Change connector development overview to link to the new guide (#36972)
1 parent 4fc7f1a commit fd45159

File tree

1 file changed

+80
-50
lines changed

1 file changed

+80
-50
lines changed

docs/connector-development/README.md

+80-50
Original file line numberDiff line numberDiff line change
@@ -1,96 +1,108 @@
11
# Connector Development
22

3-
There are two types of connectors in Airbyte: Sources and Destinations. Connectors can be built in any programming
4-
language, as long as they're built into docker images that implement the
3+
There are two types of connectors in Airbyte: Sources and Destinations. Connectors can be built in
4+
any programming language, as long as they're built into docker images that implement the
55
[Airbyte specification](../understanding-airbyte/airbyte-protocol.md).
66

7-
Most database sources and destinations are written in Java, and most API sources and destinations are written in Python
8-
using our [Python CDK](cdk-python/), or [low-code CDK](config-based/low-code-cdk-overview.md).
7+
Most database sources and destinations are written in Java. API sources and destinations are written
8+
in Python using the [Low-code CDK](config-based/low-code-cdk-overview.md) or
9+
[Python CDK](cdk-python/).
910

10-
If you're looking to build a connector for an API Source, we strongly suggest starting in the Connector Builder.
11-
12-
If you need help with connector development, we offer premium support to our open-source users,
13-
[talk to our team](https://airbyte.com/talk-to-sales-premium-support) to get access to it.
11+
If you need to build a connector for an API Source, start with Connector Builder. It'll be enough
12+
for most use cases. If you need help with connector development, we offer premium support to our
13+
open-source users, [talk to our team](https://airbyte.com/talk-to-sales-premium-support) to get
14+
access to it.
1415

1516
### Connector Builder
1617

17-
The [connector builder UI](connector-builder-ui/overview.md) is based on the low-code development framework below and
18-
allows to develop and use connectors without leaving the Airbyte web UI. No local developer environment required.
18+
The [connector builder UI](connector-builder-ui/overview.md) is based on the low-code development
19+
framework below and allows to develop and use connectors without leaving the Airbyte web UI. No
20+
local developer environment required.
1921

2022
### Low-code Connector-Development Framework
2123

22-
You can use the [low-code framework](config-based/low-code-cdk-overview.md) to build source connectors for HTTP API
23-
sources. Low-code CDK is a declarative framework that provides a YAML schema to describe your connector without writing
24-
any Python code, but allowing you to use custom Python code if required.
25-
24+
You can use the [low-code framework](config-based/low-code-cdk-overview.md) to build source
25+
connectors for HTTP API sources. Low-code CDK is a declarative framework that provides a YAML schema
26+
to describe your connector without writing any Python code, but allowing you to use custom Python
27+
components if required.
2628

2729
### Python Connector-Development Kit \(CDK\)
2830

29-
You can build a connector in Python with the [Airbyte CDK](cdk-python/). Compared to the low-code CDK, the Python CDK is
30-
more flexible, but building the connector will be more involved. It provides classes that work out of the box for most
31-
scenarios, and Airbyte provides generators that make the connector scaffolds for you.
31+
You can build a connector in Python with the [Airbyte CDK](cdk-python/). Compared to the low-code
32+
CDK, the Python CDK is more flexible, but building the connector will be more involved. It provides
33+
classes that work out of the box for most scenarios, and Airbyte provides generators that make the
34+
connector scaffolds for you. Here's a guide for
35+
[building a connector in Python CDK](tutorials/custom-python-connector/0-getting-started.md).
3236

3337
### Community maintained CDKs
3438

3539
The Airbyte community also maintains some CDKs:
3640

37-
- The [Typescript CDK](https://github.com/faros-ai/airbyte-connectors) is actively maintained by Faros.ai for use in their product.
41+
- The [Typescript CDK](https://github.com/faros-ai/airbyte-connectors) is actively maintained by
42+
Faros.ai for use in their product.
3843
- The [Airbyte Dotnet CDK](https://github.com/mrhamburg/airbyte.cdk.dotnet) in C#.
3944

40-
## The Airbyte specification
41-
42-
Before building a new connector, review [Airbyte's data protocol specification](../understanding-airbyte/airbyte-protocol.md).
43-
45+
:::note
46+
Before building a new connector, review
47+
[Airbyte's data protocol specification](../understanding-airbyte/airbyte-protocol.md).
48+
:::
4449
## Adding a new connector
4550

4651
The easiest way to make and start using a connector in your workspace is by using the
4752
[Connector Builder](connector-builder-ui/overview.md).
4853

49-
If you're writing your connector in Python or low-code CDK, use the generator to get the project started:
54+
If you're writing your connector in Python or low-code CDK, use the generator to get the project
55+
started:
5056

5157
```bash
5258
cd airbyte-integrations/connector-templates/generator
5359
./generate.sh
5460
```
5561

56-
and choose the relevant template by using the arrow keys. This will generate a new connector in the `airbyte-integrations/connectors/<your-connector>` directory.
62+
and choose the relevant template by using the arrow keys. This will generate a new connector in the
63+
`airbyte-integrations/connectors/<your-connector>` directory.
5764

58-
Search the generated directory for "TODO"s and follow them to implement your connector. For more detailed walkthroughs and instructions, follow the relevant tutorial:
65+
Search the generated directory for "TODO"s and follow them to implement your connector. For more
66+
detailed walkthroughs and instructions, follow the relevant tutorial:
5967

60-
- [Speedrun: Building a HTTP source with the CDK](tutorials/cdk-speedrun.md)
6168
- [Building a HTTP source with the CDK](tutorials/custom-python-connector/0-getting-started.md)
6269
- [Building a Java destination](tutorials/building-a-java-destination.md)
6370

64-
As you implement your connector, make sure to review the [Best Practices for Connector Development](best-practices.md) guide.
71+
As you implement your connector, make sure to review the
72+
[Best Practices for Connector Development](best-practices.md) guide.
6573

6674
## Updating an existing connector
6775

68-
The steps for updating an existing connector are the same as for building a new connector minus the need to use the autogenerator to create a new connector. Therefore the steps are:
76+
The steps for updating an existing connector are the same as for building a new connector minus the
77+
need to use the autogenerator to create a new connector. Therefore the steps are:
6978

7079
1. Iterate on the connector to make the needed changes
7180
2. Run tests
7281
3. Add any needed docs updates
73-
4. Create a PR to get the connector published
82+
4. Create a PR and get it reviewed and merged.
7483

75-
## Adding Typing and Deduplication to a connector
76-
77-
_Coming soon._
78-
79-
Typing and Deduplication is how Airbyte transforms the raw data which is transmitted during a sync into easy-to-use final tables for database and data warehouse destinations. For more information on how typing and deduplication works, see [this doc](/using-airbyte/core-concepts/typing-deduping).
84+
The new version of the connector will automatically be published in Cloud and OSS registries when
85+
the PR is merged.
8086

8187
## Publishing a connector
8288

83-
Once you've finished iterating on the changes to a connector as specified in its `README.md`, follow these instructions to ship the new version of the connector with Airbyte out of the box.
89+
Once you've finished iterating on the changes to a connector as specified in its `README.md`, follow
90+
these instructions to ship the new version of the connector with Airbyte out of the box.
8491

85-
1. Bump the docker image version in the [metadata.yaml](connector-metadata-file.md) of the connector.
92+
1. Bump the docker image version in the [metadata.yaml](connector-metadata-file.md) of the
93+
connector.
8694
2. Submit a PR containing the changes you made.
87-
3. One of Airbyte maintainers will review the change in the new version and make sure the tests are passing.
88-
4. You our an Airbyte maintainer can merge the PR once it is approved and all the required CI checks are passing you.
89-
5. Once the PR is merged the new connector version will be published to DockerHub and the connector should now be available for everyone who uses it. Thank you!
95+
3. One of Airbyte maintainers will review the change in the new version and make sure the tests are
96+
passing.
97+
4. You our an Airbyte maintainer can merge the PR once it is approved and all the required CI checks
98+
are passing you.
99+
5. Once the PR is merged the new connector version will be published to DockerHub and the connector
100+
should now be available for everyone who uses it. Thank you!
90101

91102
### Updating Connector Metadata
92103

93-
When a new (or updated version) of a connector is ready, our automations will check your branch for a few things:
104+
When a new (or updated version) of a connector is ready, our automations will check your branch for
105+
a few things:
94106

95107
- Does the connector have an icon?
96108
- Does the connector have documentation and is it in the proper format?
@@ -99,26 +111,44 @@ When a new (or updated version) of a connector is ready, our automations will ch
99111

100112
If any of the above are failing, you won't be able to merge your PR or publish your connector.
101113

102-
Connector icons should be square SVGs and be located in [this directory](https://github.com/airbytehq/airbyte/tree/master/airbyte-config-oss/init-oss/src/main/resources/icons).
114+
Connector icons should be square SVGs and be located in
115+
[this directory](https://github.com/airbytehq/airbyte/tree/master/airbyte-config-oss/init-oss/src/main/resources/icons).
103116

104-
Connector documentation and changelogs are markdown files living either [here for sources](https://github.com/airbytehq/airbyte/tree/master/docs/integrations/sources), or [here for destinations](https://github.com/airbytehq/airbyte/tree/master/docs/integrations/destinations).
117+
Connector documentation and changelogs are markdown files living either
118+
[here for sources](https://github.com/airbytehq/airbyte/tree/master/docs/integrations/sources), or
119+
[here for destinations](https://github.com/airbytehq/airbyte/tree/master/docs/integrations/destinations).
105120

106121
## Using credentials in CI
107122

108-
In order to run integration tests in CI, you'll often need to inject credentials into CI. There are a few steps for doing this:
109-
110-
1. **Place the credentials into Google Secret Manager(GSM)**: Airbyte uses a project 'Google Secret Manager' service as the source of truth for all CI secrets. Place the credentials **exactly as they should be used by the connector** into a GSM secret [here](https://console.cloud.google.com/security/secret-manager?referrer=search&orgonly=true&project=dataline-integration-testing&supportedpurview=organizationId) i.e.: it should basically be a copy paste of the `config.json` passed into a connector via the `--config` flag. We use the following naming pattern: `SECRET_<capital source OR destination name>_CREDS` e.g: `SECRET_SOURCE-S3_CREDS` or `SECRET_DESTINATION-SNOWFLAKE_CREDS`.
123+
In order to run integration tests in CI, you'll often need to inject credentials into CI. There are
124+
a few steps for doing this:
125+
126+
1. **Place the credentials into Google Secret Manager(GSM)**: Airbyte uses a project 'Google Secret
127+
Manager' service as the source of truth for all CI secrets. Place the credentials **exactly as
128+
they should be used by the connector** into a GSM secret
129+
[here](https://console.cloud.google.com/security/secret-manager?referrer=search&orgonly=true&project=dataline-integration-testing&supportedpurview=organizationId)
130+
i.e.: it should basically be a copy paste of the `config.json` passed into a connector via the
131+
`--config` flag. We use the following naming pattern:
132+
`SECRET_<capital source OR destination name>_CREDS` e.g: `SECRET_SOURCE-S3_CREDS` or
133+
`SECRET_DESTINATION-SNOWFLAKE_CREDS`.
111134
2. **Add the GSM secret's labels**:
112-
- `connector` (required) -- unique connector's name or set of connectors' names with '\_' as delimiter i.e.: `connector=source-s3`, `connector=destination-snowflake`
113-
- `filename` (optional) -- custom target secret file. Unfortunately Google doesn't use '.' into labels' values and so Airbyte CI scripts will add '.json' to the end automatically. By default secrets will be saved to `./secrets/config.json` i.e: `filename=config_auth` => `secrets/config_auth.json`
114-
3. **Save a necessary JSON value** [Example](https://user-images.githubusercontent.com/11213273/146040653-4a76c371-a00e-41fe-8300-cbd411f10b2e.png).
135+
- `connector` (required) -- unique connector's name or set of connectors' names with '\_' as
136+
delimiter i.e.: `connector=source-s3`, `connector=destination-snowflake`
137+
- `filename` (optional) -- custom target secret file. Unfortunately Google doesn't use '.' into
138+
labels' values and so Airbyte CI scripts will add '.json' to the end automatically. By default
139+
secrets will be saved to `./secrets/config.json` i.e: `filename=config_auth` =>
140+
`secrets/config_auth.json`
141+
3. **Save a necessary JSON value**
142+
[Example](https://user-images.githubusercontent.com/11213273/146040653-4a76c371-a00e-41fe-8300-cbd411f10b2e.png).
115143
4. That should be it.
116144

117145
#### Access CI secrets on GSM
118146

119-
Access to GSM storage is limited to Airbyte employees. To give an employee permissions to the project:
147+
Access to GSM storage is limited to Airbyte employees. To give an employee permissions to the
148+
project:
120149

121-
1. Go to the permissions' [page](https://console.cloud.google.com/iam-admin/iam?project=dataline-integration-testing)
150+
1. Go to the permissions'
151+
[page](https://console.cloud.google.com/iam-admin/iam?project=dataline-integration-testing)
122152
2. Add a new principal to `dataline-integration-testing`:
123153

124154
- input their login email

0 commit comments

Comments
 (0)