Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: updated release process with versions now being pushed to docker hub

...

  • Demo data and seed data: make sure you have demo data that is sufficient to demonstrate the features of this release. Your demo data might be built into the repositories and used in the build process OR be prepared to run a one-time database load script/command.
  • Features are completed for this release and are checked in.
  • All automated tests pass.
  • Release notes and other documentation/publicity is ready for distribution.
  • The Release Manager (so named) has certifications for remote UAT environment and a docker client installed on the machine he'll be releasing from.Release Manager has docker hub credentials to push tagged imagesto.

Steps

When you are ready to create and publish a release:

  1. Select a tag name such as '3.0.0-beta' based on the OpenLMIS Releases guidelines in the wiki.Tag each GitHub repository with that same
  2. tag. In each service, set the serviceVersion property in the gradle.properties file to the version you've chosen.  Tag this commit with that same version and push to GitHub.  Do this for each service/repo UI module in the project, including the API services , and the AngularJS UI repo, and the Blue distribution.  DON'T update Blue (reference distribution) yet.
    1. Do we need a release branch? For the 3.0 Beta release, we do not need a release branch, only a tag. If there are any later fixes we need to apply to the 3.0 Beta, we would issue a new beta release (eg, 3.0 Beta R1) to publish additional, specific fixes.
    2. Do we need a code freeze? We do not need a "code freeze" process. We will add the tag in Git, and everyone can keep committing further work on master as usual. Updates to master will be automatically built and deployed at the Test site (test.openlmis.org), but not the UAT site (uat.openlmis.org).
    3. Confirm that your release tags appear in GitHub and in Docker Hub.
      1. Look under the Releases tab of each repository, eg https://github.com/OpenLMIS/openlmis-requisition/releases.
  3. Ensure you have checked out (git) locally every repository tagged at the tag you created.  Confirm with "git describe"
  4. Build each service and and publish to docker hub
    1. Build service image locally
      1. ./docker-compose f dockercompose.builder.yml run builder
      1. ./docker-compose f dockercompose.builder.yml build image
      2. Confirm that the Images on your local machine are built
    1. Tag those Images with the tag you defined locally and publish to docker hub
  5. Set CI/CD to build that specific tag
    1. TBD: The exact steps for this are still being determined. It may be necessary to use the Configure pages in Jenkins to set that specific tag to be in use.
    2. Confirm that the build has published images to Docker Hub tagged with your release tag.
      1. Look on the Tags page of each repository, eg https://hub.docker.com/r/openlmis/requisition/tags/
  6. Trigger a Jenkins job to deploy to UAT.
    1. Log in at build.openlmis.org and click the Schedule a Build button on every job that ends in "deploy to uat"?
    2. ...wait for Jenkins CI/CD to run the build and deploy it to the UAT environment...
    3. Confirm that the build completes successfully.
      1. You can watch the status at build.openlmis.org. If there are any errors, stop and debug those issues.
  7. Confirm that the UAT site is running your release.
    1. Look at the UAT site (uat.openlmis.org) and test out an area of functionality so you can confirm that the latest features for this release are present.
  8. Load the Demo Data, if needed (you'll need remote docker machine access)
    1. For 3.0 Beta, we will manually run a command-line script to load the demo data into the UAT environment. In the future, we ultimately want Jenkins to load the demo data into the UAT environment.
      1. https://docsLook under Tags in each Docker Hub repository.  e.g. https://hub.docker.com/enginer/referenceopenlmis/commandlinerequisition/push/
      2. Confirm the tag exists on Docker Hub for each image pushed
  9. Checkout openlmis-deployment, update the UAT enviornment's docker-compose file with the right tag
  10. Set your docker connection settings to UAT environment
  11. Remove all running containers from UAT host
  12. Kick off one (any) of the "deploy to uat" jobs on Jenkins
  13. Load demo data manually into UAT host's postgres container
  14. Navigate to uat.openlmis.org and ensure it works

Alternative steps (after step 2 above) if OLMIS-1105 and OLMIS-1106 are done:

      1. tags/  .   You'll need to wait for the Jenkins jobs to complete and be succesfull so give this a few minutes.
  1. Update docker-compose.yml for Blue with the release chosen
    1. For each of the services deployed as a the new version on DockerHub, update the version in the docker-compose.yml file to the version you're releasing.
  2. Update docker-compose.yml for the UAT deployment script with the release chosen which is at https://github.com/OpenLMIS/openlmis-deployment/blob/master/deployment/uat_env/docker-compose.yml
    1. For each of the services deployed as a the new version on DockerHub, update the version in the docker-compose.yml file to the version you're releasing.
  3. Kick off each *-deploy-to-uat Jobs on Jenkins
    1. Wait about 1 minute between starting each job
    2. Confirm UAT has the deployed service.  e.g. for the auth service:  http://uat.openlmis.org/auth  check that the version is the one chosen.
  4. Load demo data manually into UAT host's postgres container
  5. Navigate to uat.openlmis.org and ensure it works

Once all these steps are completed and verified, the release process is complete. At this point you can conduct communication tasks such as sharing the URL and Release Announcement to stakeholders. Congratulations!