Challenge Overview
Challenge objectives
-
Create an API using Node.js that will accept request from webhooks from both GitHub and Azure DevOps and will push the request body on a Kafka event queue.
-
Cover the API with unit and E2E testing.
Tech stack
-
Node.js
-
Apache Kafka
-
Azure DevOps
Code access
This is a new project and there is no existing repo/code base.
Detailed requirements
Our client RedWood uses Azure DevOps for issue tracking and we at Topcoder use Github so we need your help to create a set of an event receiver and a processor that will keep Azure DevOps and Github in sync so each team can work on the tools they’re used to while we all stay on the same page.
You will find the Github to Azure mapping document attached on the challenge forum.
Architecture
This app will consist of the following two parts:
-
An event receiver which is an API that will accept requests from both GitHub and Azure DevOps and will push the payloads (request body) into a kafka queue under a specific topic.
-
A processor that will listen to the same topic, will pick up the events, will process the data and will call the appropriate APIs to keep GitHub and Azure DevOps in sync.
Only the event receiver is part of the scope of this challenge.
Message Payload
The payload should have the following format:
{
originator: “One of github|azure”,
data: {
// The body of the incoming request
}
}
Security
The API needs to be locked down so it knows the call came from either Github or Azure DevOps. This can be done by adding a secret key to the request. Ref:
-
For Azure DevOps, you will have to do some research to add the same.
Unit Testing
-
You need to cover the API with both unit and E2E tests.
-
Create both positive and negative test cases.
Notes
-
All settings must be configurable and well documented.
-
We’re only interested in events that are mentioned in the Github integration tech spec.pdf. All other events can be ignored.
-
After pushing the new message in the Kafka queue, the API should simply return a status 200 OK.
Deployment Guide
You need to create a detailed deployment guide (README.md) that covers:
-
System requirements/prerequisites
-
Configuration
-
Local setup instructions
-
Azure DevOps Webhook setup instructions
-
GitHub Repo Webhook setup instructions
-
Other? Feel free to add more details as needed.
Verification Document
Provide a document in Markdown format that explains how to test the API.
Feel free to post any questions on the challenge forum!
What to submit
Submit your source code in a zip file including the README.md and the verification document.