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:

  1. ui-component
  2. auth-ui
  3. ui-layout
  4. referencedata-ui
  5. report-ui
  6. fulfillment-ui
  7. cce-ui
  8. stockmanagement-ui
  9. requisition-ui
  10. reference-ui

The Manual Way

Now, the actual list of steps to roll a full release of the reference-ui

  1. 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.
  2. Commit the changes in modules you want to release and create a tagdon't push the changes yet.
  3. 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.
  4. Wait for the SNAPSHOTS of all the release modules.
  5. 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:

  1. 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
  2. Create tags and prepare a release on the GitHub.

OpenLMIS: the global initiative for powerful LMIS software