Patch deployment process
Packaging the hot-fix
To make the deployment as low risk as possible, files should be provided to the Ops team packed within a ZIP archive following the correct layout as they need to reside within the running applications filesystem. For example If we need to update the file /vwshop/src/main/webapp/skin/js/zinc/pages/checkout.js within the mantiki project we would package the file like the example below.
As you can see, I've packed up the checkout.js file a ZIP archive. The archive contains two folders; one for the main virginwines.co.uk site and the other for mailwineclub.co.uk.
ZIP the webapps folder only.
E.G. For MAC
1) Open Terminal
2) cd to ${PROJECT_HOME}/vwshop/src/main
2) From command line run
zip -r hotfix.zip webapp -x ".*" -x "__*"
Deploying the hot-fix
Once everything has been provided to the appropriate people and the release has been approved, the Ops team should
- Deploy the archive file to /vwnfs/mantiki/hot_fix/${CURRENT_DEPLOYED_VERSION}/ (e.g., /vwnfs/mantiki/hot_fix/8.3.4/hotfix.zip)
- Unpack the archive to a containing directory (e.g., /vwnfs/mantiki/hot_fix/8.3.4/unpacked)
Generate an invalidation CSS statement. Here's a one liner to run on the command line
$> find unpacked/ -type f | tr "\n" "," | sed 's/,/*,/g' | sed 's|^./||' > invalidation.csv
- Deploy files to all existing application servers.
- Run invalidation on Cloudfront using the generated CSV.