Difference between revisions of "Continuous Integration"

From CDOT Wiki
Jump to: navigation, search
(Challenges)
 
(9 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 +
{{Admon/obsolete}}
 +
 
<big><big> Continuous Integration Project for NexJ Express Code</big></big>
 
<big><big> Continuous Integration Project for NexJ Express Code</big></big>
 
{{NexJ_Express Index}}
 
{{NexJ_Express Index}}
Line 4: Line 6:
  
 
==Project goal==
 
==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.
+
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.<br/>
== Current Status: Project Completed==
+
 
 +
=== Contributors ===
 +
* [[Minooz/Projects | Minoo Ziaei]]
 +
* [[User:Gbatumbya|Grace Batumbya]]
 +
 
 +
 
 +
== Current Status==
 +
<big><big>Project Completed</big></big>
 
<br/>
 
<br/>
 +
  
 
==Project Phases==
 
==Project Phases==
Line 12: Line 22:
 
* Get requirements from NexJ
 
* Get requirements from NexJ
 
* Incorporate requirements from NexJ into Design of algorithm for syncing repositories
 
* Incorporate requirements from NexJ into Design of algorithm for syncing repositories
* Provide the proposal for review and approved - [[Continuous_Integration/proposal | final version of proposal]]
+
* Provide the proposal for review and approved - [[Continuous_Integration/proposal | final version of proposal]] ,  [https://docs.google.com/document/d/17Fuj_9A7sBkzlbP0t0bOY3Qs1iiAhKAvfNTuUMnHUcg/edit?hl=en_US  Google Doc ]
  
 
===Phase 2: Creating Similar Environment (Done) ===
 
===Phase 2: Creating Similar Environment (Done) ===
Line 52: Line 62:
  
 
==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]]'''
 

Latest revision as of 20:29, 26 January 2014

Important.png
This page may be obsolete.
It contains historical information.

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.

Contributors


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 , Google Doc

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