Register
Submit a solution
The challenge is finished.

Challenge Overview

Challenge Objectives

  • Topcoder-X is a node web application used by copilots to manage direct tasks.

  • This challenge will focus on "dockerizing" the apps: getting them deployed in Docker and configured properly, in anticipation of a wider production deployment on Topcoder's infrastructure.

Project Background

  • Topcoder-X is a new framework we are building to allow for easy, transparent integration with Gitlab and Github for managing tasks on Topcoder through Gitlab and Github issues.  Each issue on Gitlab or Github will be automatically associated with a specific challenge on Topcoder and this challenge will be updated automatically for assignee, prize, etc... and it will be opened and closed for payment as the Gitlab or Github ticket is opened, modified, and closed.
  • This challenge is part of a long-term series that will tweak the existing functionality based on feedback from copilots, fix bugs, and will implement new functionality.

Technology Stack

  • Node is used as the main language for Topcoder-X.  

  • MongoDB is used for data storage, and Kafka is used for message queueing

  • We currently deploy to Heroku.  There are 3 instances needed - receiver, processor, and the UI

  • Note that this environment takes a fair bit of configuration to get all the pieces set up and working together.  Please ensure you budget a proper amount of time to work through deployment issues.

Code access

There are currently three pieces to this app:

* Topcoder-X Receiver (https://github.com/topcoder-platform/topcoder-x-receiver)

* Topcoder-X Processor (https://github.com/topcoder-platform/topcoder-x-processor)

* Topcoder-X UI (https://github.com/topcoder-platform/topcoder-x-ui)

The receiver handles incoming messages on activity from both Gitlab and Github.  These messages are passed as part of webhook callbacks that are supported on each platform.  The receiver parses these messages from the Gitlab or Github specific format, creating new, consolidated messages that get pushed into Kafka and then "processed" by the processor.

The UI is going to be used by copilots and others to set up the necessary settings for individual projects in Topcoder-X, including all the repo and Topcoder project information.  It will also be used by copilots to have a centralized view of all their projects at once.

You can find detailed information on deployment and configuration here:

https://github.com/topcoder-platform/topcoder-x-ui/blob/develop/TopcoderXDeploy.md 

A general user guide can be found here:

https://github.com/topcoder-platform/topcoder-x-ui/wiki

Individual requirements

The main requirement of this challenge is to create docker files and other requirements to be able to successfully deploy the Topcoder-X Receiver, Processor, and UI in Docker.  The production support folks at Topcoder will then work that into their deployment flow, including the tests that we recently created for Topcoder-X for a wider, more stable release structure in the future.

Example

Here is a recent example of a setup for the submissions API that we can base our implementation on.  These files will also be in the forum, if you can't reach that Github repo.

https://github.com/topcoder-platform/submissions-api/tree/develop/docker

Deployment

Assume that the deployment will be similar to what we have on Heroku, meaning:

1.  The MongoDB instance will be installed and associated with the Topcoder-X processor and the receiver and UI will need to be configured to point to it
2.  The Kafka installation will be hosted on CloudKarafka, not in the Docker instance
3.  We need an easy way to configure the environmental variables used to be able to deploy prod and dev instances
4.  The Topcoder-X processor, receiver, and UI will be separate Docker containers

Tests

As part of the dockerization, we want to be able to easily run the existing unit tests for both Github and Gitlab, to help test the dockerization as well as validate deployments.  Please ensure that the tests can be easily run in the deployed containers.

Deployment guide and validation document

You must provide:

An README.md that covers:

  • Docker deployment of the 3 pieces
  • Configuration for the receiver, processor, and UI
  • How to run the unit tests


A comprehensive validation.md that covers:

  • How to validate the deployment, including setup of repositories to point to deployed Docker containers that contain the processor, receiver, and UI.  This needs to be comprehensive - a one-sentence description likely won't be enough.  Please provide screenshots as well.  
  • How to validate the unit tests, including documentation on any failing tests.

What To Submit
 

  • 3 sets of Docker files - one each for Topcoder-X Processor, Receiver, and UI
  • Ensure your patch file updates the deployment documentation in the README, if necessary

  • A Validation.md that covers the details above



Final Submission Guidelines

Please see above

ELIGIBLE EVENTS:

Topcoder Open 2019

Review style

Final Review

Community Review Board

Approval

User Sign-Off

ID: 30071247