Challenge Overview
Project Overview
For TopCoder Competition Engine, we will enter into a FAST development phase this year, but we see there are shortcomings for using Arena VM for development.
Due to port restrictions and network speeds, it is not possible or easy to debug through the desired part to get familar with the code and understand the specific logic.
So we'd like to seek ways to setup a local environment to develop, build and testing, which makes our competitiors more efficient.
The local environment can native OS or OS under VM environment locally like VirtualBox, etc.
The first target OS will be CentOS 6.4 x64, should be similar for all CentOS 6.x system.
Competition Task Overview
Previously, we have worked out the way to setup TopCoder Competition Engine locally but under different accounts.
For this contest, we'd like to look for way to automatically setup all services under the same account (not root) by using scripts.
Setup Artificts
For the standard distributions, it should be from official site, if possible, like JBoss 4.2.3, Apache Ant etc.
If impossible, you can host them in dropbox or other services, and retrieved by wget command.
Tokenization
Previously, we set domains in hosts file, considering a case that we don't have root access. it is impossible to edit /etc/hosts file, so we'd like to tokenize them before deploy. In the preivous contest, we have created token.properties under app project, which covers this.
But please double check and test, if all covers.
You are expected to create a seperate token.properties.ci file, which will replace token.properties file before deployment (shell command like copy is engouh for this task).
Directory Structures
All the pieces should be still under the home directory, but same user account, like
tomcat: The Apache Tomcat installation running the Farm deployer application. The farm-deployer.war can be found in the webapps folder of this Tomcat installation.
deployer: The deployer folder is the resource folder used by the Farm deployer application, it contains binary dependencies (jars) for all processors and controllers and it provides means to customize deployment folders and classpath for them..
deployer/jars: This folder contains all the jars used by processors and controllers. In addition, jars generated on the fly while building customized deployments are include into this directory. (All jars located in this folder must be signed)
deployer/deployment: Contains deployment customization for processors and controllers. A document located in that directory provides more information about how deployment is generated.
processor/launcher: Contains the scripts to start, restart
app/scripts: Contains the scripts to start and stop the different listeners.
app/resources: Contains all configuration files required by the Listeners. This folder contains many files that are deprecated. Nevertheless, there is no documentation about it, so removing some of the them may be risky. (A lot of testing would be required).
jboss: Services exported by the Competition engine are deployed in this JBoss instance. The "default" configuration is used to deploy the services
controller/launcher: Contains the launcher to execute the Farm controller application.
dev: Contains a fresh checkout of the arena modules and the examination project.
Build Scripts
the current ANT build.xml file is used for different user accounts case, you are expected to create a revised on called build_ci.xml for considering the same user account case deployment.
Shell Script for Automatic Setup
We are expecting a shell script that can help setup the environment under the same account automatically.
Where to Setup
You are expected to install your own fresh clean OS environment for testing. But to get you startup, we can provide a CentOS VM for usage. But review and acceptance will be based on a clean OS.
Please also include a screencast to showcase your local environment.
Reviewers also need to provide screencasts, so competitors can appeal properly.
VMs
Before asking your own VM, you need to have a public key on your profile before asking for the VM.
You can find more details on how to generate a key http://apps.topcoder.com/wiki/display/projects/Generate+SSH+Key and how to connect using it http://apps.topcoder.com/wiki/display/projects/Connect+Using+SSH+Key.
To use the Arena VM, please follow http://apps.topcoder.com/wiki/display/docs/Competition+Engine+VM+Setup
Final Submission Guidelines
Submission Deliverables
Below is an overview of the deliverables:
- Changes for the current code base.
- automatical setup scripts
- Working VMs to testing purpose.
Final Submission
For each member, the final submission should be uploaded to the Online Review Tool.