Difference between revisions of "Continuous Integration"

From CDOT Wiki
Jump to: navigation, search
(Challenges)
(Resources)
Line 52: Line 52:
  
 
==Resources==
 
==Resources==
===Continuous Integration System===
+
*[[Continuous_Integration/Resources | List of Resources]]
*'''Comparing Different CI Systems''' -> [http://confluence.public.thoughtworks.org/display/CC/CI+Feature+Matrix CI Feature Matrix]
 
#'''[[Hudson-nexj |Hudson]]'''
 
#'''[[CruiseControl-nexj | Cruise Control]]'''
 
#'''[[Buildbot-nexj | Buildbot]]'''
 
#'''[http://continuum.apache.org/ Apache Continuum]'''
 
#'''Maven'''
 
#'''[http://www.anthillpro.com/html/products/anthillos/default.html Anthill]'''
 
 
 
===Version Control Tool===
 
* Basic Tutorial @ http://hginit.com/
 
* '''comparing popular version control tools''' [http://martinfowler.com/bliki/VersionControlTools.html]
 
# '''[[Mercurial-nexj | Mercurial]]'''
 
#'''CVS'''
 
#'''SVN'''
 
#'''Git'''
 
 
 
===Scripting===
 
*1- '''[[Ant-nexj | Ant]]'''
 
:A new ant script is created e.g. ''buildHudson.xml'' that triggers the target(assign1.test) of main build file(build.xml) of the project. See below:
 
<source lang=java>
 
<project name="assign1" basedir="." default="myTarget">
 
  <target name="assign1.build.call">
 
    <!-- Call the target that does everything -->
 
    <ant antfile="build.xml" target="assign1.test"/>
 
  </target>
 
  <target name="myTarget.check" depends="assign1.build.call">
 
    <echo>The assign1.build was called!</echo>
 
  </target>
 
</project>
 
</source>
 
*2- '''[[Bash-nexj| Bash]]'''
 

Revision as of 21:43, 8 April 2011

Continuous Integration Project for NexJ Express Code

Project goal

Currently, NexJ has a Mercurial Repository (Internal) in which, the NexJ Express Server (Core) code is maintained with all its histories. NexJ is planning to share a Core Repository with the Open Source Community by creating a Repository (External) that will be kept in sync with the Internal Repository.

Current Status: Project Completed


Project Phases

Phase 1: Design Proposal (Done)

  • Get requirements from NexJ
  • Incorporate requirements from NexJ into Design of algorithm for syncing repositories
  • Provide the proposal for review and approved - final version of proposal

Phase 2: Creating Similar Environment (Done)

  • Internal Repository
    • Creating a Mercurial repository and adding some changes to it to grow the history of it.
  • Controller
    • This will be containing temporary repositories as the result of scripting.
  • External Repository
    • Creating another Mercurial repository using 'hg' commands from the latest 'change-set' of Internal Repository.

Phase 3: Scripting (Done)

  • Ant
    • Doesn't support some of non-regular Mercurial commands that we need to play with change-sets
  • Bash
    • Supports everything we need for the project. script

Phase 4: Running the script on CI system (Done)

  • Buildbot
  • Hudson
    • Simple to setup and configure.
    • Runs different types of scripts: bash, ant, batch
    • Can be scheduled to run automatically or manually
    • Test Project

Phase 5: Code Review (Done)

  • Execute the script on one of Nexj computers.

Phase 6: Make Changes as per Code Review (Done)

  • Define paths based on Nexj's requirements
  • Modify the script to be able to retrieve change-sets of a remote repository
  • Create specific error message for each problem during running the script

Phase 7: Code Review (Done)

Challenges

Resources