Skip to content

Latest commit

 

History

History
91 lines (71 loc) · 5.94 KB

developing-component.md

File metadata and controls

91 lines (71 loc) · 5.94 KB

Developing new component

This document describes how to build and test new component.

Prerequisites

  1. Dapr development environment setup

Clone dapr and component-contrib

cd $GOPATH/src

# Clone dapr
mkdir -p github.com/dapr/dapr
git clone https://github.com/dapr/dapr.git github.com/dapr/dapr

# Clone component-contrib
mkdir -p github.com/dapr/components-contrib
git clone https://github.com/dapr/components-contrib.git github.com/dapr/components-contrib

Writing new component

Write new component

  1. Create your component directory in the right component directory
  2. Copy component files from the refernece component to your component directory
  3. Add go unit-test for your component
Type Directory Reference Docs
State components-contrib/state Redis concept, howto, api spec
Pubsub components-contrib/pubsub Redis concept, howto, api spec
Bindings components-contrib/bindings Kafka concept, input howto, output howto, api spec
Secret Store components-contrib/secretstore Kubernetes, Azure Keyvault concept, howto
Middleware components-contrib/middleware Oauth2 concept, howto
Exporter components-contrib/exporters Zipkin concept, howto
Service Discovery components-contrib/servicediscovery mdns howto

Running unit-test

make test

Running linting

make lint

Validating with Dapr core

  1. Make sure you clone dapr and component-contrib repos under $GOPATH/src/github.com/dapr
  2. Replace github.com/dapr/components-contrib reference to the local component-contrib
go mod edit -replace github.com/dapr/components-contrib=../components-contrib
  1. Import your component to dapr main.go
  2. Register your component in dapr main.go(e.g. binding)
  3. Build debuggable dapr binary
make DEBUG=1 build
  1. Replace the installed daprd with the test binary (then dapr cli will use the test binary)
# Back up the current daprd
mv /usr/local/bin/daprd /usr/local/bin/daprd.bak
cp ./dist/darwin_amd64/debug/daprd /usr/local/bin

Linux Debuggable Binary: ./dist/linux_amd64/debug/daprd Windows Debuggable Binary: .\dist\windows_amd64\debug\daprd

  1. Prepare your test app (e.g. kafka sample app: https://github.com/dapr/samples/blob/master/5.bindings/nodeapp/)
  2. Create yaml for bindings in './components' under app’s directory (e.g. kafka example : https://github.com/dapr/samples/blob/master/5.bindings/deploy/kafka_bindings.yaml)
  3. Run your test app using dapr cli
  4. Make sure your component is loaded successfully in daprd log

Submit your component

  1. Create a pullrequest to add your component in component-contrib repo
  2. Get the approval from maintainers
  3. Fetch the latest dapr/dapr repo
  4. Update component-contrib go mod and ensure that component-contrib is updated to the latest version
go get -u github.com/dapr/components-contrib
  1. Import your component to Dapr main.go
  2. Register your component in Dapr main.go
  3. Create a pullrequest in Dapr