I have blogged about use of SubVersion repository for sharing ADF artifacts. You can read previous blog entries in this series at Part 1 and Part 2. In this blog post, I will describe use of FlexDeploy to automate generation of ADF Library JAR files.
We talked about using FlexDeploy to build ADF applications in Automate build process for fusion web application. I will expand that workflow to automatically commit ADF Library JAR files to SubVersion. Here is original workflow to build (compile) ADF application.
High Level Approach
- Define workflow that is reusable and is not specific to single ADF application.
- Define standard instance code naming scheme to derive SVN instance code for Library JAR files. In this case, I am using LIB prefix. So if SVN
- Instance for Source is REPO1, then Library JAR will be stored in LIBREPO1 SVN Instance.
- Using path matching to original Source for Library JAR folder. You definitely need some consistency for reusable automation processes.
- Build ADF application using deployment profile.
- Checkout SubVersion folder where ADF Library JAR files are stored.
- Update checked out working copy with newly built JAR files.
- Check-in changes done to JAR files.
- Tag using same tag that was used for Source code, this will allow for debugging later if necessary.
When buildADF workflow is executed, jar files will be generated in dependencies folder as shown below.
Next step is to checkout library jar folder from SubVersion. We will use checkout plugin operation as shown below.
Now update new versions of JAR files in checked out working copy. We will use Shell plugin as shown below for copy.
Now check in changes done in working copy to SubVersion. We will use checkin operation as shown below.
Now create tag matching source code, so that we can easily match library jars with corresponding source code.
This completes workflow changes. Now when you run ADF build using FlexDeploy, ADF library jar files will be committed to SubVersion automatically and other projects can reuse ADF artifacts as described in this blog series.