Thursday
Dec192013

WebCenter Portal an Agile Approach (Continuous Integration) 

To recap from my prior post, we have our teams working within their own JDeveloper Applications testing their code locally through the ide built in tools. Alone this can produce “works on my machine” syndrome, so how do we eliminate this syndrome? Through Continuous Integration where we fail fast. I am not going to explain the merits or each nuance to implement CI in this post, I will be showing the project setup and how to get the applications building and running for our Acme Portal Project using Hudson and working with their dependent applications.
A quick explanation of Continuous Integration (CI) it is a software development practice where members of a team integrate their work frequently leading to multiple integrations per day, in a automated build, including running tests to detect integration errors as quickly as possible, verifying each team member’s contribution and integration quickly in a fail fast manner for the entire portal application.
I want to also comment that Hudson Server can be used as a Deployment engine too, not covered in this post but planned for future posts.
Below is the end result of our applications building is a screenshot of our now healthy Portal Project with all the applications (Hudson Projects) building and integrating amongst themselves.

 

 

I want to also comment that Hudson Server can be used as a Deployment engine too, not covered in this post but planned for future posts.
Below is the end result of our applications building is a screenshot of our now healthy Portal Project with all the applications (Hudson Projects) building and integrating amongst themselves.

The above picture is the project dependency tree; I will go into detail on how I have them setup to build and their dependencies. The order in which I describe them is the order that each application is built when starting from scratch and is the path of the dependency tree.  *** Be carful naming ambiguity ***, 1 JDeveloper application maps to 1 Hudson Project and a JDeveloper application can have multiple JDeveloper projects encapsulated, which will just cause more ant tasks in multiple Ant files getting called within the 1 Hudson Project.

1. libs – this project is our repository of third party libraries used in the applications, since JDeverloper and ojdeploy is using Ant I will not involve maven for dependency management. New ADF Oracle has started supplying maven dependencies but this is not the case for WebCenter yet. An example of a third party jar in our project is the commons-lang3-3.1.jar. This configuration says to watch for added jars and if updated, download and then trigger the first lowest application on dependency tree to start to build.

Configuration settings:

  • Job Name: libs
  • Repository: svn/portal/trunk/libs   [I am set up to build trunk]
  • Pool SCM: * * * * *  [check every minute]
  • Build other jobs: CommonsProject [Commons is the lowest application that needs this application] 
  • Block build when downstream job is building:true
  • Block build when upstream job is building:true
  • Clean workspace before build:true [no dirty leftover files]

2. CommonsProject – this project is triggered when new code is checked in or when a new jar is added to the library project.

Configuration settings:

  • Job Name: CommonsProject
  • Repository: svn/portal/trunk/CommonsProject  [I am set up to build trunk]
  • Pool SCM: * * * * *  [check every minute]
  • Build after other jobs are built: libs
  • Build other jobs: BackendEndProject [this is the above the dependency tree for our projects] 
  • Build after other jobs are built:libs
  • Block build when downstream job is building:true
  • Block build when upstream job is building:true
  • Clean workspace before build:true [no dirty leftover files]

3. BackendEndProject – this project is triggered when new code is checked in or when the CommonsProject is built.

Conifguration setting:

  • Job Name: BackendEndProject
  • Repository: svn/portal/trunk/ BackendEndProject [I am set up to build trunk]
  • Pool SCM: * * * * *  [check every minute]
  • Build other jobs: ComponentsProject [this is the above the dependency tree for our projects] 
  • Build after other jobs are built: CommonsProject
  • Block build when downstream job is building:true
  • Block build when upstream job is building:true
  • Clean workspace before build:true [no dirty leftover files]

4. ComponentsProject– this project is triggered when new code is checked in or when the BackendEndProject is built.

Configuration settings:

  • Job Name: ComponentsProject
  • Repository: svn/portal/trunk/ ComponentsProject [I am set up to build trunk]
  • Pool SCM: * * * * *  [check every minute]
  • Build after other jobs are built: BackendEndProject
  • Build other jobs: AcmeProject [this is the top Parent that puts all the projects together for the Portal] 
  • Block build when downstream job is building:true
  • Block build when upstream job is building:true
  • Clean workspace before build:true [no dirty leftover files]

5. AcmePortal– this project is triggered when new code is checked in or when the ComponentsProject is built.

Configuration settings:

  • Job Name: AcmePortal
  • Repository: svn/portal/trunk/ AcmePortal [I am set up to build trunk]
  • Pool SCM: * * * * *  [check every minute]
  • Build after other jobs are built: ComponentsProject
  • Block build when downstream job is building:true
  • Clean workspace before build:true [no dirty leftover files]

The above configurations ensure that our dependencies are harmonized and that our code will fail fast when they are not, unit testing and Code Quality Metrics are generated for management and team members to review.

The above picture showing a failed build touches on this fail fast paradigm that I have eluded too in this post. This practice when done correctly encourages frequent check-ins to ensure your code is working with others, it also fosters when managed correctly a group think/mentoring when a failure occurs where the team addresses the issues from the broken build. 

 

The above picture is to demonstrate one of the type of reports that can be available to the team and management.  Unit testing and reporting is an important topic and will have its own future post devoted to it.

 

 

 

PrintView Printer Friendly Version

EmailEmail Article to Friend

References (55)

References allow you to track sources for this article, as well as articles that were written in response to this article.
  • Response
    Response: Augusta roofing
    click here for greatest Augusta roofing replacement available
  • Response
    Response: kids games online
    David Parry - Blog - WebCenter Portal an Agile Approach (Continuous Integration)
  • Response
    Response: pro accounting
    David Parry - Blog - WebCenter Portal an Agile Approach (Continuous Integration)
  • Response
    Response: 5 mortgages
    David Parry - Blog - WebCenter Portal an Agile Approach (Continuous Integration)
  • Response
    David Parry - Blog - WebCenter Portal an Agile Approach (Continuous Integration)
  • Response
    Response: grasp
    The actual instructions service curriculum invention inside distribution regarding studying.
  • Response
    David Parry - Blog - WebCenter Portal an Agile Approach (Continuous Integration)
  • Response
    David Parry - Blog - WebCenter Portal an Agile Approach (Continuous Integration)
  • Response
    David Parry - Blog - WebCenter Portal an Agile Approach (Continuous Integration)
  • Response
    David Parry - Blog - WebCenter Portal an Agile Approach (Continuous Integration)
  • Response
    David Parry - Blog - WebCenter Portal an Agile Approach (Continuous Integration)
  • Response
    David Parry - Blog - WebCenter Portal an Agile Approach (Continuous Integration)
  • Response
    David Parry - Blog - WebCenter Portal an Agile Approach (Continuous Integration)
  • Response
    Response: Kiwibox.com
    David Parry - Blog - WebCenter Portal an Agile Approach (Continuous Integration)
  • Response
    David Parry - Blog - WebCenter Portal an Agile Approach (Continuous Integration)
  • Response
    Response: philosophytalk.org
    David Parry - Blog - WebCenter Portal an Agile Approach (Continuous Integration)
  • Response
    Response: product testing
    David Parry - Blog - WebCenter Portal an Agile Approach (Continuous Integration)
  • Response
    David Parry - Blog - WebCenter Portal an Agile Approach (Continuous Integration)
  • Response
    David Parry - Blog - WebCenter Portal an Agile Approach (Continuous Integration)
  • Response
    Response: i was reading this
    David Parry - Blog - WebCenter Portal an Agile Approach (Continuous Integration)
  • Response
    David Parry - Blog - WebCenter Portal an Agile Approach (Continuous Integration)
  • Response
    David Parry - Blog - WebCenter Portal an Agile Approach (Continuous Integration)
  • Response
    David Parry - Blog - WebCenter Portal an Agile Approach (Continuous Integration)
  • Response
    Response: Code 5 Group
    David Parry - Blog - WebCenter Portal an Agile Approach (Continuous Integration)
  • Response
    David Parry - Blog - WebCenter Portal an Agile Approach (Continuous Integration)
  • Response
    David Parry - Blog - WebCenter Portal an Agile Approach (Continuous Integration)
  • Response
    David Parry - Blog - WebCenter Portal an Agile Approach (Continuous Integration)
  • Response
    Response: i loved this
    David Parry - Blog - WebCenter Portal an Agile Approach (Continuous Integration)
  • Response
    David Parry - Blog - WebCenter Portal an Agile Approach (Continuous Integration)
  • Response
    Response: twitter.com
    David Parry - Blog - WebCenter Portal an Agile Approach (Continuous Integration)
  • Response
    Response: Online games
    David Parry - Blog - WebCenter Portal an Agile Approach (Continuous Integration)
  • Response
    Response: agen casino online
    David Parry - Blog - WebCenter Portal an Agile Approach (Continuous Integration)
  • Response
    Response: domino online
    David Parry - Blog - WebCenter Portal an Agile Approach (Continuous Integration)
  • Response
    David Parry - Blog - WebCenter Portal an Agile Approach (Continuous Integration)
  • Response
    Response: cafe303
    David Parry - Blog - WebCenter Portal an Agile Approach (Continuous Integration)
  • Response
    Response: poker online
    David Parry - Blog - WebCenter Portal an Agile Approach (Continuous Integration)
  • Response
    David Parry - Blog - WebCenter Portal an Agile Approach (Continuous Integration)
  • Response
    Response: youtube repeater
    David Parry - Blog - WebCenter Portal an Agile Approach (Continuous Integration)
  • Response
    David Parry - Blog - WebCenter Portal an Agile Approach (Continuous Integration)
  • Response
    David Parry - Blog - WebCenter Portal an Agile Approach (Continuous Integration)
  • Response
    David Parry - Blog - WebCenter Portal an Agile Approach (Continuous Integration)
  • Response
    David Parry - Blog - WebCenter Portal an Agile Approach (Continuous Integration)
  • Response
    Response: hosting provider
    David Parry - Blog - WebCenter Portal an Agile Approach (Continuous Integration)
  • Response
    David Parry - Blog - WebCenter Portal an Agile Approach (Continuous Integration)
  • Response
    David Parry - Blog - WebCenter Portal an Agile Approach (Continuous Integration)
  • Response
    Response: CASINO
    David Parry - Blog - WebCenter Portal an Agile Approach (Continuous Integration)
  • Response
    David Parry - Blog - WebCenter Portal an Agile Approach (Continuous Integration)
  • Response
    David Parry - Blog - WebCenter Portal an Agile Approach (Continuous Integration)
  • Response
    David Parry - Blog - WebCenter Portal an Agile Approach (Continuous Integration)
  • Response
    David Parry - Blog - WebCenter Portal an Agile Approach (Continuous Integration)
  • Response
    David Parry - Blog - WebCenter Portal an Agile Approach (Continuous Integration)
  • Response
    Response: Youtube.com
    David Parry - Blog - WebCenter Portal an Agile Approach (Continuous Integration)
  • Response
    David Parry - Blog - WebCenter Portal an Agile Approach (Continuous Integration)
  • Response
    David Parry - Blog - WebCenter Portal an Agile Approach (Continuous Integration)
  • Response
    David Parry - Blog - WebCenter Portal an Agile Approach (Continuous Integration)

Reader Comments

There are no comments for this journal entry. To create a new comment, use the form below.

PostPost a New Comment

Enter your information below to add a new comment.

My response is on my own website »
Author Email (optional):
Author URL (optional):
Post:
 
Some HTML allowed: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>
« The new peer programming (Google Glass) | Main | WebCenter Portal an Agile Approach »