-
Notifications
You must be signed in to change notification settings - Fork 10
Release Process
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