Register
Submit a solution
The challenge is finished.

Challenge Overview

Challenge Objectives

  • Add ability to our Topcoder-X platform to automatically accepts an invitation to an organization on Github.

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 the 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.  

  • DynamoDB is used for data storage, and Kafka is used for message queueing.  NOTE THAT THIS HAS CHANGED! We previously used MongoDB, but recently have migrated to DynamoDB.  Please ensure you are aware of this and plan accordingly. We will no longer be using MongoDB for anything.

  • 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:

 

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.  NOTE: This may be slightly out of date due to the DynamoDB changes. You can use DynamoDB locally if you want:  https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBLocal.html

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

Branch: develop

Detailed requirements

Currently, when a user opens a Topcoder-X link to get access to a private Github repo which is part of an organization, the user has to be invited and then accepted to the organization to be able to use it.

To streamline this process, we'd like to add a member to the organization and accept the invite on their behalf automatically when they go through the Git access flow.

You need to explore the Github API (https://developer.github.com/v3/) and find a way to automatically accept the invitation so Topcoder-X can add a member to a team/repo successfully.

 

We should have what we need in terms of OAuth tokens to be able to do this.

The goal here is to have the Github git access links work as well as they do for Gitlab.

Helpful resources:

We don’t have a hard requirement for the implementation. We are open to suggestions on how we can achieve what’s described above.

Feel free to ask on the challenge forum!

What to Submit

  • Git patch for each repo where you’ll make changes, targeting the latest commit in the develop branch. Make sure to note the exact commit you used so the reviewers can apply your patch file.

  • Instructions on how to apply your patch and test your submission.

  • Verification document.



Final Submission Guidelines

Please see above.

ELIGIBLE EVENTS:

Topcoder Open 2019

Review style

Final Review

Community Review Board

Approval

User Sign-Off

ID: 30079031