Challenge Overview

1.0. Introduction

Topcoder would like to improve the product development team's ability to deliver quick, stable releases across all key applications/services of the platform. This includes making it easy for the community to quickly participate in design, development, qa, devops, and release efforts.

2.0. Challenge Overview

The legacy tc-website is fairly complex to setup locally and we intend to use docker containers to make local deployment easier for newcomers.
 

2.1. Requirements

Instructions on how to deploy the tc-website needs to be brought up-to-date -- the old Topcoder VM wiki instructions were written under the assumption that deployment will be on an EC2 VM.

This challenge will focus on documenting how to successfully deploy the tc-website on any developer machine running Linux, mac OS or Windows by combining instructions from multiple sources, including the Topcoder VM wiki instructions and an a reference VM into a single coherent document.
 

2.2. Background

To successfully deploy the tc-website, a couple of tools and services need to be present in the development environment:
1.0. Java compiler - JDK v1.7+
2.0. build tool - maven v3.3+
3.0. web server - Apache v2.2+
4.0. app server - JBoss v4.0.4
5.0. database server - Informix v11.50+
6.0. LDAP server - openLDAP v2.4+
7.0. cache service - redis v3.2+
8.0. container service - docker v1.12+
9.0. scm tool - svn v1.5.x - v1.6.x
10.0. build tool - ant v1.7+


2.2.1. To access the reference VM, you need to add this entry to your hosts file: 54.166.107.127    cockpit.cloud.topcoder.com  tc.cloud.topcoder.com.

2.2.2. Visit https://tc.cloud.topcoder.com/tc - to accept the (expired) self-signed SSL certificate

2.2.3. Visit https://tc.cloud.topcoder.com/tc?&module=Login - then login with heffan/password but note that you will be redirected to the main site.

2.2.4. Visit https://tc.cloud.topcoder.com/tc?module=MyHome - to switch from the main site back to the VM and confirm that you are now logged in as heffan.

 

2.3. Tasks

Apache and OpenLDAP only are in scope of this challenge.

1. Install the required Apache version mentioned above in your local environment.

2. Install the OpenLDAP server by using an existing docker file on GitHub (use commit hash cfc5b80ead7f83a7d592e406ef3bd160889683c1). The README contains instructions on how to build the docker image.

3. Follow the instructions in the submission attached in the forum to checkout and build the tc-website master branch from git.
Please prefix hosts file entries with "local.*" to differentiate them from entries used for VMs (like in 2.2.1 above). In other words use the following format:
127.0.0.1    local.tc.cloud.topcoder.com  local.cockpit.cloud.topcoder.com local.studio.cloud.topcoder.com
127.0.0.1    local.env.cloud.topcoder.com local.env.topcoder.com local.tcs.cloud.topcoder.com

4. Ensure that JBoss paths are properly mapped and proxied by Apache. The mappings have been documented for the tc-website tc1-tcnode branch in a GitHub wiki. You can reuse those instructions in this challenge. Sample configurations are available for the following files from the GitHub wiki:
httpd.conf
httpd-ssl.conf
httpd-vhosts.conf
httpd-vhosts-tc.conf
workers.conf



5. Update the configuration to use the locally configured OpenLDAP docker container to enable logins. A list of valid user accounts is available from the old Topcoder VM wiki.

6. Provide markdown formatted instructions explaining how to build and run the tc-website locally using your findings in this challenge.

7. Provide verification by including screen shots and logs proving that the services in scope were deployed successfully in your development machine.

8. In your final submission, please clearly indicate the git commit hashes used in all aspects of your submission.


Please endeavour to clarify any requirements that are unclear and avoid making excessive assumptions in your implementation.
 

3.0. Repositories

There are two main branches of the tc-website: the tc-website master branch which uses ant as build tool; and the tc-website tc1-tcnode branch which uses maven as build tool.

The tc1-tcnode branch is distinct from the master branch in two aspects: due to its use of maven instead of ant as build tool, it succeeded in organizing the code into (maven) modules; and, it documented how to successfully deploy the tc-website on a development machine.

Our goal is to backport the deployment instructions which completely documented local deployment into the master branch and fix any deployment issues that carry-over from the tc1-tcnode branch along the way.
 

tc-website master (uses ant)
https://github.com/topcoder-platform/tc-website
https://github.com/topcoder-platform/tc-website-external-artifacts
https://github.com/topcoder-platform/tc-website-glue
https://github.com/topcoder-platform/tc-website-shared
https://github.com/topcoder-platform/tc-website-static

tc-website tc1-tcnode (uses maven)
https://github.com/appirio-tech/tc1-tcnode

Final Submission Guidelines

Please see the final submission guidelines above.

Review style

Final Review

Community Review Board

Approval

User Sign-Off

ID: 30056873