Update: be sure to check out our SOA SDLC series too.
Continuous Integration is a software engineering practice which attempts to improve quality and reduce time to deliver software by applying small, frequent quality control efforts. It is characterized by these key practices:
- Use of a version control system
- All developers commit to the ‘HEAD’ (main code line) every day
- The product is built on every commit
- The build must be automated and fast
- Automated deployment to a production-like environment
- Automated testing
- Results of all builds are published (so everyone can see who broke the build)
- Deliverables are easily available (for developers, testers, other stakeholders)
Many customers are interesting in using Continuous Integration in their Oracle Fusion Middleware environments. We have a small selection of posts listed below, but we are actively working on adding more content in this area.
We will be focusing our samples and articles around the use of Hudson, Maven and Subversion intially, however you can probably take the content here and apply it to other tools without too much effort. We are planning to expand our coverage to include some alternatives and also additional components you might want in your continuous integration environment.
Getting Started with Continuous Integration for Oracle Fusion Middleware
These articles are to help you get started… they are not necessarily meant to show the best practices – see below for some comments on that.
- Hudson is a common Continuous Integration server which you can run standalone, or if you prefer, you can run it on WebLogic Server. Installing Hudson on WebLogic Server shows you how.
- Deploying WebLogic applications with Maven shows you how to use the new WebLogic Maven Plugin to deploy applications to your WebLogic Server environment using Maven.
- Getting started with continuous integration for SOA projects explains how to set up some basic continuous integration capabilities using Hudson, Maven and Subversion with JDeveloper.
- Extending our continuous integration approach to work with MDS-dependent components explores how we can configure our CI build to work when some components in the composite require MDS. Adding Human Tasks or Rules to a composite, for example, will add a dependency on MDS.
- Adding SCA Tests shows you how to include SCA Test execution in our CI Build. This includes seeing the results in the Hudson console.
- Extending Continuous Integration to include Human Task UI projects.
- Using Oracle Service Registry in an automated (Maven) SOA/BPM build
- Deploying Canonical Data to MDS (coming soon) shows how to deploy your canonical data model to Metadata Services using Hudson.
- Extending our sample to include BPEL, BPMN, Rules, Spring, Web Services and Human Tasks (coming soon) provides access to a sample that you can download and experiment with in your own environment.
- Using Continuous Integration for a whole SOA Application (coming soon), i.e. a composite, user interface(s) for the human tasks, and canonical data; including SCA Test and SOA Configuration Plans (for targeting different environments).
- Getting started with Continuous Integration for Oracle Service Bus shows the basics of how to script a build and deployment for OSB
- Building OSB projects with Maven and removing the eclipse dependency takes this a step further to use the new configjar tool introduced in OSB PS6 and execute the build in Maven
- Tip: How to make Coherence play nice in your test environment
- Automating creation of JDBC Data Sources and DdAdapter plan updates and redeployment
- Automating creation of JMS Queues and JmsAdapter plan updates and redeployment
Before you ask – yes, we know that there are some things hardcoded in there, like server names for example. We will address that in later articles when we start to look at parameterization of the build.
We have a lot more content coming soon… including coverage of other products, like WebCenter, ADF, and OSB.
Moving towards best practices
Coming soon – some articles on moving from the ‘getting started’ phase above – which is focused on just getting things working – to something more inline with ‘best practices.’
To be included in this section, discussion of topics like:
- What a Maven Repository Manager is and why you need one,
- How to get your Oracle-provided JAR artifacts into your Maven environment,
- What archetypes are, why you might want them and how to create them,
- How to manage CI for large (multi-project) applications,
- A bunch of important stuff to understand about SNAPSHOTs,
- Branching strategies for source code management,
- Parameterising your builds to target different environments,
- Other things you might want to do with Maven/CI – like test coverage, quality assurance, enforcing best practices, naming standards, etc.