Posts by sree:
Openbravo custom search
- We have people from all over the world write code (in Java)
- We have to make sure no bad code get committed to our system
- The new code written adheres to coding standard
- The code does not break any major functionality
- The database is intact
- There is no broken link
- and list goes on ...
- The code gets committed in a central repository (code.openbravo.com)
- We have to verify the license is correct
- The file is not tampered or corrupted
- We use Apache Ant scripts for code compilation (ant.apache.org)
- Compile source to byte code
- Import / Export Database
- Run Unit/Sanity/Smoke Test before compilation
- that we do daily/weekly/monthly/yearly
- that has to be done on a specific condition say on code commit, on creating a new branch, etc
- First, a developer commits code to the version control repository.
- CI server is polling this repository for changes (e.g., every few minutes/few commits).
- Execute build scripts.
- Feedback build results to members (e-mailing/feeds/irc).
- Wait for next commit.
- All changes in code/db/conf pushed through SCM - cvs/subversion/mercurial/git
- Is you project/module build automated - make/rake/ant + ivy/maven
- Do you write/execute tests as part of build - junit/xunit/selenium
- Do you have coding and design standards, if yes how are we enforcing it - checkstyle/pmd/jdepends in case of Java
- Is the Integration machine separate from development machine - to ensure clean build(s)
Its been 3 months now am in Openbravo. In the past i was working in a smaller team where we could raise our hands and ask a question. This is not the case in openbravo (ofcouse i can raise my hands but no one will be there to answer me ;-) ) Across the organization we have lot of information that get processed and get updated in different place (eg: wiki.openbravo.com)
Am quiet comfortable with google search and most of the time i end up using google site search http://www.google.com/sitesearch/ One advantage of google site search is it gives result specific to a particular site and it end's there.
Now as i understand more and more, we have quiet a lot of thing that happens on a day-to-day basic. Some one will update (on or more of the following sites)
- wiki dot openbravo dot com (documentation get created or updated)
- code dot openbravo dot com (new codes get's commited)
- issues dot openbravo dot com (new issues get reported, existing gets updated)
- builds dot openbravo dot com (new build jobs, new releases)
- health dot openbravo dot com (monitoring system health)
- smoketest dot openbravo dot com
- demo dot openbravo dot com
- planet dot openbravo dot com (blog aggregrator)
- forge dot openbravo dot com (where the openbravo community eat, lives and sleeps)
- and list goes on (atleast 20 seperate URL's)
This made me think of coming up with a custom google search (nothing new, google.com/cse) specific to Openbravo related sites
Google custom search or cse http://www.google.com/coop/cse/ caters to this kind of challenges. Using google cse we can add those site(s) which we are interested and restrict result from specific site(s).
Custom search also provides a managing console (to manage URL's) and has way to add more volunteeer who can submit URL's
At the moment forge/wiki also has site specific search, but the search is limited to forge/wiki.
A word of caution: This is what I did on my own and you can use it at the link below for now;
Openbravo custom search
We are working to see whether it should replace the custom google searches already available in the wiki and the forge.
Comments OffAccording to Martin Fowler,
Continuous Integration is a software development practice where members of a team integrate their work frequently, usually each person integrates at least daily - leading to multiple integrations per day. Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible. Many teams find that this approach leads to significantly reduced integration problems and allows a team to develop cohesive software more rapidly...read more.
Openbravo has adopted to CI aka Continuous Integration practices in the pursuit of developing usable software after every commit.
The show begins:
The workflow of a CI tool is like this:
We cannot assume that we are safe from integration problem, CI is a supporting tool in the development/release cycle to detect defects early. The participation of development / QA team plays a very important role. Educating the importance of commit early commit often and detect errors early is the key. CI is not just a technical implementation; it is also an organizational and cultural implementation.
Lets talk about the benefit's:
Developers: making software integration a nonevent, you can focus on what you love the most, which i assume is software development ;-)
Release Management: Help create deploy able software multiple times in a day without waiting till the end of development sprint.
Testers/QA: Enable testers / QA to do incremental testing.
Managers: you can talk to customers with confidence and promise a working software.
Continuous Compilation Vs Continuous Integration
Lets do it right:The following questions will answer if we are doing our CI correctly:
Question to be asked: Do we produce a usable software on every commit to code repository.
More about Continuous Integration here
This is part 1 from the series of discussion about continiuous integration. In the future article i will talk about tools that we use and how we automate !