Skip to content
This repository was archived by the owner on Apr 17, 2019. It is now read-only.

Release Process

huanghao edited this page Mar 19, 2015 · 1 revision

IRIS release steps:

Prepare:

  • make sure all tickets for this release have been resolved
  • make sure all patches for this release have been merged into devel branch
  • make sure all files in iris-panel project have their own license header
  • make sure all license headers are the same

1: update and commit release notes in devel branch specify the changes of this version in doc/RELEAST_NOTES

2: create release branch git push origin refs/heads/devel:refs/heads/release-xxx xxx means the version of this release

3: check obs project: IRIS:Pre-release, if the packages build succeeded login to https://build.otctools.jf.intel.com/project/list_public check the build results of IRIS:Pre-release project

4: commit bump version to this release branch update Version and Release code in iris.spec file, use Semantic Versioning example: current version is 0.1, and release version is 0.1.1, so update iris.spec file: update version code Version: 0.1 Release: 0.<CI_CNT>.<B_CNT> to Version: 0.1.1 Release: 1.<CI_CNT>.<B_CNT> Semantic Versioning: http://semver.org/

5: make tag on release branch create a release tag on master branch for ansible project git tag -a v0.x.x -m 'tag for IRIS Version 0.x.x release' push this tag to gerrit git push origin v0.x.x

6: prepare ansible project we use ansible playbook to verify and deploy IRIS project link: https://otctools.jf.intel.com/review/#/admin/projects/infrastructure/ansible/playbooks/iris

    make sure this project is on master branch and its master branch is up-to-date.
      git checkout master

    make tag on master branch for release like step 5
      git tag -a for_IRIS_0.x.x_release -m 'tag for IRIS Version 0.x.x release'
      git push origin for_IRIS_0.x.x_release

7: prepare roles project we use roles project to provide roles for ansible project project link: https://otctools.jf.intel.com/review/#/admin/projects/infrastructure/ansible/roles

    make sure this project is on master branch and its master branch is up-to-date.
    make tag on master branch for release like step 5
      git tag -a for_IRIS_0.x.x_release -m 'tag for IRIS Version 0.x.x release'
      git push origin for_IRIS_0.x.x_release

8: verify ansible playbook against rpm in IRIS:Pre-release change test repo to http://download.otctools.jf.intel.com/IRIS:/Pre-release/openSUSE_13.1/ in host_vars of ansible project recommend using vagrant, please visit http://www.vagrantup.com/ for help

    checkout release tag in ansible project and roles project
      git pull
      git checkout for_IRIS_0.x.x_release -b for_IRIS_0.x.x_release

    run ansible to deploy IRIS to your test server
      ansible-playbook -i vagrant base.yml site.yml
    then check all of your changes

9: force push release-xxx branch back to master branch git push -f origin refs/heads/release-xxx:refs/heads/master

10: publish to internal download server go to https://otctools.jf.intel.com/ci/view/Release/job/IRIS-release cleck Build with Parameters, edit requires parameters, chose download.otctools.jf.intel.com and set release_id to the version number published this time. go to http://download.otctools.jf.intel.com/staging/iris/archive/ you will see your release version

11: verify staging archive, the same as step 8 change repo to http://download.otctools.jf.intel.com/staging/iris/archive/version xxx/openSUSE_13.1/ run ansible and check

12: publish to outside archive dir go to https://otctools.jf.intel.com/ci/view/Release/job/IRIS-release click Build with Parameters, edit requires parameters, chose download.tizen.org go to http://download.tizen.org/iris/archive/ you will see your release version

13: verify outside archive, the same as step 8 change reop to http://download.tizen.org/iris/archive/version xxx/openSUSE_13.1/ run ansible and check

14: prepare private playbook private playbook project is infrastructure/ansible/private/panel.tizen.org change repo to release version, commit to Gerrit but only merged by admin

   after merged, make a tag for release like step 5
      git tag -a for_IRIS_0.x.x_release -m 'tag for IRIS Version 0.x.x release'
      git push origin for_IRIS_0.x.x_release

15: prepare release note and deploy ticket write release note and create deploy ticket on Tizen JIRA Release Note: https://otctools.jf.intel.com/pm/projects/iris/wiki/Release_note_for_iris_022 JIRA: https://bugs.tizen.org/jira/browse/TINF/component/11900

    post release steps and preparation info to this JIRA ticket
    assigne to Reviewer to check it for this version

16: backup db: after reviewer agree, he will assign deploy ticket to deployer at first, deployer should backup db for rollback

    $ mysqldump $(db-name) \
        --host=$(host-name) \
        --user=$(db-user) -p > iris-db-$(date +%Y%m%d).sql

17: start deploy: after backup, deplyer starts to deploy IRIS after deploy, deployer should do some verification which is relatively simple and the outcome exercises as much core IRIS functionality as possible. The verification should be done by introducing known data and verifying that the outcome is as expected.

    There are two types of verifications.
    1) Deployer will verify if the deployment is right by checking some basic logic in web pages.
       Check version: Open https://panel.tizen.org/, at the bottom of this page currently version should be 0.x.x
       Check packagedb: Open https://panel.tizen.org/app/packagedb/, 7 buttons should be list.
       Check submissions: Open https://panel.tizen.org/app/submissions/opened/, several submissions should be list.
    2) Developers will verify if all features are right.
       This verification is according to special version.

18: verify the production after deployment the JIRA ticket will be assigned back to requester after deploy, when verification on production env was done, the requester should go back to JIRA, post comments saying release is ok and verified, and finally close that ticket.

19: rollback instructions if any problem occurs in above step 17 or 18 1) use the tag for previous version in all related projects 2) run playbook to deploy the last releae version 3) if necessary, restore the db backup made in step 16. It only happens if data corrupts in release process. 4) verify the rollback

    Note: The 3rd step may lead to data lost.
    The loss of data is limited to what has happened inbetween backup and restore.
    while the deployment happens, the admin could pause other writers

20: publish to outside lastest-release after deployed go to https://otctools.jf.intel.com/ci/view/Release/job/IRIS-release click Build with Parameters, edit requires parameters, chose download.tizen.org chose Update latest-release go to http://download.tizen.org/iris/latest-release/ you will see your release version

21: cherry pick hotfix of release branch back to devel branch if any

22: commit bump new version in devel branch update current version to next version in iris.spec file, alse use Semantic Versioning please see the example in step 4

23: mail to inform the relevant personnel

24: if necessary, write IRIS-Announcement, announcement file path is prjplan/misc/release-notes

25: if necessary, e-mail Announcement

26: if necessary, update release notes to tizen wiki https://wiki.tizen.org/wiki/IRIS

27: if necessary, update iris-panel latest devel branch and push release branch on github https://github.com/01org/iris-panel

Clone this wiki locally