We're trying to define a SDLC for BusinessWorks 6.x applications. We are mostly a Java shop, so our classical SDLC involves Jenkins, Maven and Artifactory.
We have started recently to build adapters for a SOA project based on BW6 and we would like to integrate the related projects in our SDLC. In a perfect world, we would like to:
- Be able to version, build and release shared modules autonomously
- When building an application, resolve and integrate shared modules as dependencies (à la Maven, fetching versioned artifacts from a repository)
- Perform validation (maybe automated tests?) before release
We have had a look at the Maven BW6 plugin, but it's a bit too simplistic - e.g it does not provide a way to build and release shared modules as autonomous entities, and it cannot resolve resources from shared modules declared as dependencies in the POM. Furthermore, the approach of having a root POM for a workspace looks a bit brittle, and POM updates tend to break things.
We are currently looking at leveraging the bwdesign utility, with processes as described below.
For shared modules:
- Clone/checkout the source code for the shared module
- Launch bwdesign using an empty directory as workspace
- system:import the checked out module into the empty workspace
- system:validate, breaking on error
- system:export as a ZIP file
- Deploy the ZIP file to Artifactory, using an appropriate naming convention to be able to resolve it afterwards
For applications:
- Clone/checkout the source code for the application and application module
- Resolve dependencies using the app module's manifest
- Fetch all ZIP files for the referenced shared modules
- Launch bwdesign using an empty directory as a workspace
- system:import shared module ZIPs in a dependency-satisfying order
- system:import the app module and application directories
- system:validate, breaking on error
- system:export as an EAR file
- Deploy the EAR file to Artifactory, again using an appropriate naming convention
It seems really cumbersome, especially when you're used to mvn clean package
:)
Has anyone ever attempted something as described above?