Continuous Integration platform
Continuous Integration platform
A DESCRIPTION WITH FORMATTING IN THE ATTACHED FILE
The budget set as 10000 dollars to see your proposals. We will choose by speed, price and quality.
Our company need to create a platform for continuous integration and transfer an existing platform to it.
The current platform is Java based, it use Databases and file system to store users data. Some parts of platform is written on python, R, C, bash scripts. All tools and methods can be started from Java methods, command line, web-based interface and GUI. The system is modular based and each module should be separately installable.
The current implementation on a platform runs on single machine only but future will include several grid engines such as SGE, Univa, Oracle.
The project will have two steps.
1. Build and demonstrate all platform and interaction of all elements together. For demonstration can be used either our project or an any real or abstract project, which will show all user cases. The payment only after demonstrating all system.
2. Transfer our project to this platform. This part will require support and will be based on hourly rate monthly.
Continious Integration using Jenkins (http://jenkins-ci.org/)
Goal. Automatically build, test and deploy on test servers each time new code is checked-in. Should be mostly based on open source solutions
Source control - GitHub (https://github.com/), launchpad, gitorious, readmine (http://alternativeto.net/software/
Web based bug tracking system. Decisions later. Examples of open sourced solutions: Bugzilla http://www.bugzilla.org/, Mantis http://www.mantisbt.org/
Code review server that allows third party organizations/developers push their code/modules/plug-ins for review and checkin. One of the best candidates for such server is Gerrit http://code.google.com/p/gerrit/ which works with both GitHub and Jenkins, open sourced, used by many Web companies including Google for their critical open-sourced applications
Automated packaging system for RedHat and Ubuntu. The system is modular and each module should be packaged separately. Each package should contain all required dependencies, some of them should be automatically added.
Linux repositories for RedHat (yum) and Ubuntu (apt) supported by company. System contain 4 Main controlled and maintained Repositories: Development, Testing, Community - Stable, Premium Stable. A newly submitted package should be immediately compiled and transferred to Development repository. The Package automatically transferred to the Testing repository if wasn't changed for 3 days or the developer manually transferred it. The package can be transferred to Stable Repositories manually after review by our engineers with special credentials.
Users can create their own repositories, where they can choose access rules for their repositories (public or private with password). The rules for repositories similar to company supported repositories.
Single Sign On (SSO) for all elements of the system.
Hosting for continuous integration solution
Hosting ideal requirements.
Cloud portability. No lock to a single cloud. Ability to be easily moved from one cloud to another depending on cost, performance, support level and other criteria. All major clouds ideally should be supported. That allows for also easily integrate with big customers who are using cloud based solutions
Cloud on your local computer. Ability to deploy your hosted application on your local computer the same way as on the cloud. That allows for quick development and debugging in any country where developers are located
Excellent support and minimum learning curve
Ability to deploy your application on the same cloud where it was build
CloudFoundry from VMWare http://cloudfoundry.org/ seems to satisfy above requirements based on information available on the Web and my personal experience with prototypes of Java/HTML5 web applications. Another solution is CloudBee cloud http://www.cloudbees.com/ which is already has Jenkins integrated into their cloud. Other solutions could be considered on the initial step of development
Virtual machine with most recent, clear (just out of box without any extra packages installed) installation of Ubuntu with all recent packages (basically apt-get update; apt-get dist-upgrade). All dependencies should be automatically installed by command apt-get install packageName.
Same as above with RedHat
Upgrade from some our frozen Ubuntu versions of the platform. At the beginning it will be only one previous version. We will add several extra freezes with time. The update should be run through commands apt-get update; apt-get upgrade
Same as above for RedHat
The testing should include evaluations of internal classes, web and gui interfaces, running tools from command lines.
Skills: vmware, debugging, cloud-computing, redhat, linux