Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.


Panel
titleOn this page

Table of Contents

...

If you need GitHub/JIRA privileges, Bamboo account, open a ticket to request it.

Prior to Release

Prior to any release make an initial decision and post to Talk on what will be included in the release.

...

  1. Write a post that announces the release date and modules to be included on Talk under the Software category. Ask, if there is a need to release modules in order to include latest changes before the platform release.
  2. Verify that there are no unreviewed open tickets against the version to be released. You can use this query https://goo.gl/WXqrI3 (adjust the fixVersion).
    1. Review/close tickets that are in Post Commit Review.
    2. Look carefully at In Progress tickets to see, if some of them have not been committed to a branch (back ported) already. You need to review/close such tickets as well. You can easily check, if any code was committed by searching for an issue id on a GitHub comparison page at https://github.com/openmrs/openmrs-core/compare/2.0.4...2.0.x (adjust the versions). 
    3. Move tickets to the next version that are In Progress or in Pre-Commit Review stage (use Manage Versions admin page for bulk moving of tickets, see the 4.a. step below).
  3. Create a new version for the next release. Using the Manage Versions in https://tickets.openmrs.org/plugins/servlet/project-config/TRUNK.
  4. Release the current version using the above admin page.
    1. When you release a version it will allow you to move non-closed tickets to the next version.
  5. Download the latest CIEL for OpenMRS 1.9.x (use 1.9.x regardless of the release version) as described here. Upload the version to our maven repository to be used in standalone by running (adjust the version and the file parameters to match the downloaded version of CIEL):

    Code Block
    mvn deploy:deploy-file -DgroupId=org.openmrs.contrib -DartifactId=ciel-dictionary -Dversion=1.9.9-20170409 -Dpackaging=zip -Dfile=openmrs_concepts_1.9.9_20170409.sql.zip -DrepositoryId=openmrs-repo-contrib -Durl=https://mavenrepo.openmrs.org/nexus/content/repositories/contrib


  6. Update the CIEL version in standalone's pom.
  7. Check if the branch to be released is green at https://ci.openmrs.org/browse/TRUNK and https://ci.openmrs.org/browse/OP-OPM/branches
  8. Do some last minute rudimentary testing as described in Testing Releases on snapshot artifacts published by CI.
  9. Release openmrs-core from CI by running the Release stage of the latest build for the corresponding branch at https://ci.openmrs.org/browse/TRUNK e.g. https://ci.openmrs.org/browse/TRUNK-OC2/latest (click the Play icon next to the Release stage on the left menu) 
  10. Once the release build turns green, release the corresponding platform branch from CI at https://ci.openmrs.org/browse/OP-OPM/branches. Click on the green branch build number and run the Release stage. Override the following vatiables; "maven.release.version" variable to make sure it matches the release version of core (for example 2.3.0-alpha, 2.3.0-beta or 2.3.0), "maven.development.version" to the correct SNAPSHOT if the version being release is a prerelease (for example 2.3.0-alpha, 2.3.0-alpha.2..., 2.3.0-beta etc.), "build.release.type" to "prereleases" or "releases" depending on whether the version to release is a prerelease or full release respectively so that the released war(s) and read-me(s) are uploaded to the correct release folders on sourceforge. Remember to update UAT Platform server instance by running the UAT Platform Deployment plan.
  11. In the file listing page on Sourceforge, open the recently released version, click the info "i" button next to the standalone to expand the details of the uploaded ZIP file. For "Download Button", type "OpenMRS Platform 2.0.5 Standalone". Under "Default Download For:" check all the option boxes. Click "Save" to save the settings.

  12. Create the release notes page as a child of Platform Release Notes and include JIRA filters showing all closed tickets (e.g. Platform Release Notes 1.11.1)
  13. Create a help desk case with https://help.openmrs.org/customer/portal/emails/new at a minimum of one working day prior to the scheduled release providing download links. DO NOT mark Impact as anything other than "Routine." 
    Use the following template for description (replace 2.0.5 with the correct version, the release date & time and the JIRA url, which you can determine from https://issues.openmrs.org/browse/TRUNK/?selectedTab=com.atlassian.jira.jira-projects-plugin:versions-panel):

    No Format
    In preparation for the release of OpenMRS Platform 2.0.5 on 21/04/2017 10:00 UTC please do:
    1. Update http://openmrs.org/help/report-a-bug/ to allow bug reports for Platform 2.0.5.
    (Do not include the rest, if it is not the latest LTE branch release)
    2. Update http://openmrs.org/download/ to point to Platform 2.0.5 standalone at http://sourceforge.net/projects/openmrs/files/releases/OpenMRS_Platform_2.0.5/openmrs-standalone-2.0.5.zip/download 
    3. Update http://openmrs.org/download/ to point to Platform 2.0.5 war at http://sourceforge.net/projects/openmrs/files/releases/OpenMRS_Platform_2.0.5/openmrs.war/download


  14. Create a new case at OpenMRS helpdesk requesting to update the OpenMRS.org home page and downloads page to the latest release. Please provide links to the downloads.
  15. Create a blog post about the full release(Note: this should be done only after releasing the Full Release not during the alpha or beta release) you have just made by creating a help desk case with https://help.openmrs.org/customer/portal/emails/new containing all the details in the description section to be included in the blog post which will be uploaded to https://openmrs.org/
  16. Write a post that announces the released on Talk under Software category similar to the blog post .
  17. With the exception of pre-releases, you need to release the version in jira, you will probably need admin privileges to do this, you can ask for them through the help desk or ask somebody with the privileges to help you release it in JIRA. 
    1. Go to JIRA
    2. Click the Projects menu item and select OpenMRS Core (TRUNK) from the dropdown.
    3. You should see a menu on the left panel on the page that gets loaded, select Releases.
    4. In the Actions column click the row matching the version you're releasing and select Release from the little pop up menu.
    5. Set the release date and click the Release button, note that you might have to move any unresolved issues to the next release.

...

Expand


  • When running: mvn release:prepare You may also get an error message in validating the generated JavaDoc files, which you can resolve by adding  -Darguments="-Dmaven.javadoc.skip=true" to skip the validation process. However this does not work with Java 8
  • When errors occur while running: mvn release:prepare you may want to rollback the release process to fix them, then use mvn release:rollback. However this has to be followed by the manual deletion of the tag that was created in the local git environment.
  • There are also times when you may get this error message: [ERROR] Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.1:prepare (default-cli) on project openmrs: Can't release project due to non released dependencies : This is caused by having SNAPSHOT dependencies (outside the current build) which should be released before you can release the project. Their released artifacts should be deployed to Nexus (through release process or manually if necessary). Then the pom.xml should be updated with the release versions and the trunk pom.xml should be bumped to their next SNAPSHOT versions, if development is continuing.
  • When running: mvn clean deploy --batch-mode  You may get an error message like this: Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.5:deploy (default-deploy) on project openmrs: Failed to deploy artifacts: Could not transfer artifact ............ Failed to transfer file ......... Return code is: 401 -> [Help 1].  Solving this requires you to have a nexus repository account, under the openmrs-repo-releases section, in your maven settings.xml file which should be in your MAVEN_HOME folder. If this file does not already exist, you need to create one. See the example maven settings.xml file attached: settings-example-mvnrepo.xml.
  • When running: mvn clean deploy --batch-mode  You may also get an error message like: Failed to transfer file: .........  Return code is: 400    The reason is that the Maven nexus release repo does not allow redeployment by default. To enable that, you could logon nexus and select the release repo, then change the configuration to allow redeployment there. But be aware that any projects using the release artifact will ONLY download the artifact once and thus the artifact you redeployed may not be able to be consumed by the projects, which may cause a lot of troubles. The solution is to manually remove the cached release artifact under .m2/repository so that Maven can download the new one. Because of the disadvantage for the above approach, i just logged onto the nexus repository and manually deleted the successfully deployed artifacts. Then i was able to deploy again.
  • When running: mvn clean deploy --batch-mode  You may also get an error message like: [ERROR] Java heap space -> [Help 1].  To solve this, increase the memory for maven. On my mac, i just typed this on the same shell terminal where i was deploying from: export MAVEN_OPTS="-Xmx512m -Xms128m -XX:MaxPermSize=512m"
  • When you are deploying a module to nexus repository using: mvn clean deploy command  You may get an error message like [ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy (default-deploy) on project...Return code is: 401, ReasonPhrase:Unauthorized. To solve this you need to add a server for the module repo by adding the following with nexus repository credentials to the list of servers in the file /M2_HOME/settings.xml .

    Code Block
    languagehtml/xml
    <server>
       <id>openmrs-repo-modules</id>
       <username>username</username>
       <password>password</password>
    </server>


...

If you need GitHub/JIRA privileges, Bamboo account, open a ticket to request it.

Prior to Release

Prior to any release make an initial decision and post to Talk on what will be included in the release.

...

  1. Write a post that announces the release date and modules to be included on Talk under the Software category. Ask, if there is a need to release modules in order to include latest changes before the platform release.
  2. Verify that there are no unreviewed open tickets against the version to be released. You can use this query https://goo.gl/WXqrI3 (adjust the fixVersion).
    1. Review/close tickets that are in Post Commit Review.
    2. Look carefully at In Progress tickets to see, if some of them have not been committed to a branch (back ported) already. You need to review/close such tickets as well. You can easily check, if any code was committed by searching for an issue id on a GitHub comparison page at https://github.com/openmrs/openmrs-core/compare/2.0.4...2.0.x (adjust the versions). 
    3. Move tickets to the next version that are In Progress or in Pre-Commit Review stage (use Manage Versions admin page for bulk moving of tickets, see the 4.a. step below).
  3. Create a new version for the next release. Using the Manage Versions in https://tickets.openmrs.org/plugins/servlet/project-config/TRUNK.
  4. Release the current version using the above admin page.
    1. When you release a version it will allow you to move non-closed tickets to the next version.
  5. Download the latest CIEL for OpenMRS 1.9.x (use 1.9.x regardless of the release version) as described here. Upload the version to our maven repository to be used in standalone by running (adjust the version and the file parameters to match the downloaded version of CIEL):

    Code Block
    mvn deploy:deploy-file -DgroupId=org.openmrs.contrib -DartifactId=ciel-dictionary -Dversion=1.9.9-20170409 -Dpackaging=zip -Dfile=openmrs_concepts_1.9.9_20170409.sql.zip -DrepositoryId=openmrs-repo-contrib -Durl=https://mavenrepo.openmrs.org/nexus/content/repositories/contrib


  6. Update the CIEL version in standalone's pom.
  7. Check if the branch to be released is green at https://ci.openmrs.org/browse/TRUNK and https://ci.openmrs.org/browse/OP-OPM/branches
  8. Do some last minute rudimentary testing as described in Testing Releases on snapshot artifacts published by CI.
  9. Release openmrs-core from CI by running the Release stage of the latest build for the corresponding branch at https://ci.openmrs.org/browse/TRUNK e.g. https://ci.openmrs.org/browse/TRUNK-OC2/latest (click the Play icon next to the Release stage on the left menu) 
  10. Once the release build turns green, release the corresponding platform branch from CI at https://ci.openmrs.org/browse/OP-OPM/branches. Click on the green branch build number and run the Release stage. Override the following vatiables; "maven.release.version" variable to make sure it matches the release version of core (for example 2.3.0-alpha, 2.3.0-beta or 2.3.0), "maven.development.version" to the correct SNAPSHOT if the version being release is a prerelease (for example 2.3.0-alpha, 2.3.0-alpha.2..., 2.3.0-beta etc.), "build.release.type" to "prereleases" or "releases" depending on whether the version to release is a prerelease or full release respectively so that the released war(s) and read-me(s) are uploaded to the correct release folders on sourceforge.
  11. In the file listing page on Sourceforge, open the recently released version, click the info "i" button next to the standalone to expand the details of the uploaded ZIP file. For "Download Button", type "OpenMRS Platform 2.0.5 Standalone". Under "Default Download For:" check all the option boxes. Click "Save" to save the settings.

  12. Create the release notes page as a child of Platform Release Notes and include JIRA filters showing all closed tickets (e.g. Platform Release Notes 1.11.1)
  13. Create a help desk case with https://help.openmrs.org/customer/portal/emails/new at a minimum of one working day prior to the scheduled release providing download links. DO NOT mark Impact as anything other than "Routine." 
    Use the following template for description (replace 2.0.5 with the correct version, the release date & time and the JIRA url, which you can determine from https://issues.openmrs.org/browse/TRUNK/?selectedTab=com.atlassian.jira.jira-projects-plugin:versions-panel):

    No Format
    In preparation for the release of OpenMRS Platform 2.0.5 on 21/04/2017 10:00 UTC please do:
    1. Update http://openmrs.org/help/report-a-bug/ to allow bug reports for Platform 2.0.5.
    (Do not include the rest, if it is not the latest LTE branch release)
    2. Update http://openmrs.org/download/ to point to Platform 2.0.5 standalone at http://sourceforge.net/projects/openmrs/files/releases/OpenMRS_Platform_2.0.5/openmrs-standalone-2.0.5.zip/download 
    3. Update http://openmrs.org/download/ to point to Platform 2.0.5 war at http://sourceforge.net/projects/openmrs/files/releases/OpenMRS_Platform_2.0.5/openmrs.war/download


  14. Create a new case at OpenMRS helpdesk requesting to update the OpenMRS.org home page and downloads page to the latest release. Please provide links to the downloads.
  15. Create a blog post about the full release you release(Note: this should be done only after releasing the Full Release not during the alpha or beta release) you have just made by creating a help desk case with https://help.openmrs.org/customer/portal/emails/new containing all the details details in the description section to be included in the blog post which will be uploaded to https://openmrs.org/
  16. Write a post that announces the released on Talk under Software category similar to the blog post .
  17. With the exception of pre-releases, you need to release the version in jira, you will probably need admin privileges to do this, you can ask for them through the help desk or ask somebody with the privileges to help you release it in JIRA. 
    1. Go to JIRA
    2. Click the Projects menu item and select OpenMRS Core (TRUNK) from the dropdown.
    3. You should see a menu on the left panel on the page that gets loaded, select Releases.
    4. In the Actions column click the row matching the version you're releasing and select Release from the little pop up menu.
    5. Set the release date and click the Release button, note that you might have to move any unresolved issues to the next release.

...

Expand


  • When running: mvn release:prepare You may also get an error message in validating the generated JavaDoc files, which you can resolve by adding  -Darguments="-Dmaven.javadoc.skip=true" to skip the validation process. However this does not work with Java 8
  • When errors occur while running: mvn release:prepare you may want to rollback the release process to fix them, then use mvn release:rollback. However this has to be followed by the manual deletion of the tag that was created in the local git environment.
  • There are also times when you may get this error message: [ERROR] Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.1:prepare (default-cli) on project openmrs: Can't release project due to non released dependencies : This is caused by having SNAPSHOT dependencies (outside the current build) which should be released before you can release the project. Their released artifacts should be deployed to Nexus (through release process or manually if necessary). Then the pom.xml should be updated with the release versions and the trunk pom.xml should be bumped to their next SNAPSHOT versions, if development is continuing.
  • When running: mvn clean deploy --batch-mode  You may get an error message like this: Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.5:deploy (default-deploy) on project openmrs: Failed to deploy artifacts: Could not transfer artifact ............ Failed to transfer file ......... Return code is: 401 -> [Help 1].  Solving this requires you to have a nexus repository account, under the openmrs-repo-releases section, in your maven settings.xml file which should be in your MAVEN_HOME folder. If this file does not already exist, you need to create one. See the example maven settings.xml file attached: settings-example-mvnrepo.xml.
  • When running: mvn clean deploy --batch-mode  You may also get an error message like: Failed to transfer file: .........  Return code is: 400    The reason is that the Maven nexus release repo does not allow redeployment by default. To enable that, you could logon nexus and select the release repo, then change the configuration to allow redeployment there. But be aware that any projects using the release artifact will ONLY download the artifact once and thus the artifact you redeployed may not be able to be consumed by the projects, which may cause a lot of troubles. The solution is to manually remove the cached release artifact under .m2/repository so that Maven can download the new one. Because of the disadvantage for the above approach, i just logged onto the nexus repository and manually deleted the successfully deployed artifacts. Then i was able to deploy again.
  • When running: mvn clean deploy --batch-mode  You may also get an error message like: [ERROR] Java heap space -> [Help 1].  To solve this, increase the memory for maven. On my mac, i just typed this on the same shell terminal where i was deploying from: export MAVEN_OPTS="-Xmx512m -Xms128m -XX:MaxPermSize=512m"
  • When you are deploying a module to nexus repository using: mvn clean deploy command  You may get an error message like [ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy (default-deploy) on project...Return code is: 401, ReasonPhrase:Unauthorized. To solve this you need to add a server for the module repo by adding the following with nexus repository credentials to the list of servers in the file /M2_HOME/settings.xml .

    Code Block
    languagehtml/xml
    <server>
       <id>openmrs-repo-modules</id>
       <username>username</username>
       <password>password</password>
    </server>


...