How to release reference-ui
The Prerequisites:
- Update all the repositories you want to release.
- Make sure that all the CHANGELOG.md files are up to date and the versions are set correctly (meaning if there was a breaking change the major version should be increased and so on).
- Make sure that all versions in the version.properties files match the ones in the CHANGELOG.md files.
- If there are some components that should not be released, their entries in the docker-compose.yml should be removed at this point.
The Order
The release must be done in a specific order or some unexpected behavior might (and most likely will) occur. To prevent such situation use the order provided here:
- ui-component
- auth-ui
- ui-layout
- referencedata-ui
- report-ui
- fulfillment-ui
- cce-ui
- stockmanagement-ui
- requisition-ui
- reference-ui
The Manual Way
Now, the actual list of steps to roll a full release of the reference-ui
- Repeat for every module you want to release in the order given in the previous section:
- Remove the SNAPSHOT suffix from both version.properties and CHANGELOG.md files
- Update docker-compose.yml files of the modules depending on this one.
- Commit the changes in modules you want to release and create a tag, don't push the changes yet.
- Repeat for every module you want to release in the order given in the previous section:
- Push the changes to master.
- Wait for the image to be built on the Docker Hub.
- Bump the version in the version.properties file to the new SNAPSHOT.
- Update docker-compose.yml files of the modules depending on this one.
- Commit the changes and push to master.
- Prepare a GitHub release.
- Wait for the SNAPSHOTS of all the release modules.
- Repeat for every module you didn't released in the order given in the previous section (there will be none for a full release):
- Commit and push the changes to master.
The Script Way
Prerequisites:
- Set OLMIS_HOME environmental variable to the directory you store all the UI repositories in.
- The script file release-reference-ui.sh.
What the script does:
- setting the correct version and date in the CHANGELOG.md
- getting rid of the SNAPSHOT suffix
- bumping the version to the new SNAPSHOT
- waiting for the image to be published on Docker Hub
- setting correct commit message depending on whether we're releasing the module or just bumping dependency version
- releasing components in the correct order
- it allows you to release only a set of components
- introduces concurrency where it makes sense
What it doesn't:
- check the correctness of the CHANGELOG.md file, it only sets a correct header
- create tags... yet
- allow the release of release candidates... yet
Steps:
Call the script. To do a full release you simply call
./release-reference-ui.sh
To only release a set of the UI modules simply pass them as the arguments. No specific order is required, the script will handle it. Example:
./release-reference-ui.sh ui-components referencedata-ui auth-ui
- Create tags and prepare a release on the GitHub.
OpenLMIS: the global initiative for powerful LMIS software