Clean code (no clean up and format for CERN artifacts!)
Ensure you have eclipse configured as described here
Right click on your project -> Source -> Clean Up...
choose the ACOAPP Profile
Right click on your project -> Source -> Format
Run command "mvn clean site" and look at the Checkstyle, Spotbugs, PMD and CPD reports -> the fewer reports the better your code (open website target/site/index.html)
Run command "mvn clean verify"
Fix errors if necessary
Fix Javadoc if necessary
Test your code
Run your application (using the provided start script in target/bin/)
Open all UIs
Call at least each function you have changed
...
Commit and push to Git
For a full stack release by APP
Update common-lsa-utils-lib language files using LSA@AccDbU
Create up-to-date language files in common-lsa-utils-lib (used by e.g. parammod) by running ParamConfigLanguageFileCreation on master against DEV and committing/pushing uthe results.
Update DB Version in lsa-db-scripts and update LSA_TEST_PRO@AccDbU; run lsa-db-scripts on LSA_TEST_PRO@AccDbU
Using BSS Control, decouple all patterns. (Take notes or make a screenshot of the "before" state!)
Make patterns non resident (don't forget this!)
Using Scheduling App, remove all patterns from schedule. (Take notes or make a screenshot of the "before" state!)
Seriously, do not forget this. It can really hurt if you forget and have to fix things using LSA 2-tier etc. afterwards...
Shut down LSA Server
Ask LSA team!
Update Configs
Update common-config pro branch if necessary, commit and push (deploy happens automatically)
Update DB Version in lsa-db-scripts and update LSA@AccDbP; run lsa-db-scripts on LSA@AccDbP
checkout lsa-db-scripts, branch master
master_log_pro.xml
Commit, Push
Trigger execution: Ask LSA team!
Run expert-lsa-db-config on LSA@AccDbP
Ask LSA team!
Update common-lsa-utils-lib language files using LSA@AccDbP
Create up-to-date language files in common-lsa-utils-lib (used by e.g. parammod) by running ParamConfigLanguageFileCreation on release branchagainst PRO and committing/pushing the results.
To do that, look into ParamConfigLanguageFileCreation#main : There are some lines where the property config location is defined. On release branch, uncomment the line where pro config location is defined, and commit+push that change. Then run the class.
If there are diffs in language files, perform a new release of common-lsa-utils-lib and re-release parammodi as well.
Prepare and perform rollout of LSA server and applications
If you release from command line it's recommended to close eclipse, disable eclipse' autobuild (Project -> Build Automatically) or close the project in eclipse. Otherwise eclipse might clear the project target folder while maven is using the compiled resources and will fail at this point.
Run command (please update the versions given in this example to the one of your project)
If you are doing a hotfix release where the major version does not change (leftmost number) you can just run:
mvn release:prepare release:perform
Recover from errors
To recover the project after a failed release attempt you have to call mvn release:rollback release:clean. This will also remove the temporary file release.properties that you might see in this situation.
Rollout of Services and Applications
The general workflow is:
CLEAN → COMPILE → VERIFY → INSTALL → DEPLOY/RELEASE → ROLLOUT
The rollout is done by Ansible (currently here: https://git.acc.gsi.de/fcc-commons/acoapp-ansible) where one can add or modify versions of existing applications in inventories//group_vars/applications.yml. Afterwards Ansible can be executed with the make command. This will apply all changes to the specified environment. (See also AppHowToRolloutWithAnsible for a very basic explanation focused on applications.)