Building and Releasing Personas
Development Build
Building and releasing a development build of Personas is easy.
First, clone the repository:
hg clone http://hg.mozilla.org/labs/personas/ personas
Then build, package, and push the package to the distribution server:
cd personas/client/ make clean && make build channel=dev && make package channel=dev && make publish
You need an account on the distribution server with access to the distribution directory in order to do this.
Users who are using an older development build will be automatically updated to the build.
Stable Release Build
Building and releasing a stable release build of Personas is a bit more involved. The following procedure uses the example of building and releasing version 1.3.1, a minor update to version 1.3, off the client-1.3 branch.
Clone the repository:
hg clone http://hg.mozilla.org/labs/personas/ personas
Update your working copy to the release branch:
cd personas/ hg update -r client-1.3
Make sure the version string in client/client.mk represents the version you are releasing (in this case "1.3.1"). If it doesn't, change it, then commit your change:
hg commit -m"update version for next release"
Make a release build:
cd client/ make clean && make build channel=rel && make package channel=rel
You should now have a file called personas-1.3.1.xpi in the client/ directory. Rename the build file so its filename represents its status as a release candidate:
mv personas-1.3.1.xpi personas-1.3.1rc1.xpi
Push it to the distribution server:
scp personas-1.3.1rc1.xpi people.mozilla.com:/home/cbeard/public_html/personas/dist/
Tag the repository with a release tag identifying the revision you released as a release candidate:
hg tag client-release-1.3.1rc1
Publicize the build. Get QA to test it. Then repeat this procedure to create a new release candidate if a release blocker is found and fixed.
Once you have a release candidate with no blocker bugs, upload it to AMO and publicize the release.
Tag the repository with a release tag identifying the revision you released as the final release:
hg tag client-release-1.3.1
Update the version string in client/client.mk to reflect the next anticipated release off the given branch (f.e. "1.3.2"), then commit your change:
hg commit -m"update version for next anticipated release"
Push your changes back to the central repository:
hg push ssh://hg.mozilla.org/labs/personas/
Branching for a Stable Release
Before building and releasing a stable release from the trunk, you should create a branch to isolate changes that you make for the release (and subsequent minor update releases) from ongoing development. The following procedure uses the example of creating the client-1.4 branch for the 1.4 stable release:
Clone the repository:
hg clone http://hg.mozilla.org/labs/personas/ personas
Create the branch (which also updates your working copy to that branch), and commit the "change":
hg branch client-1.4 hg commit -m"create stable release branch for next release"
Change back to the trunk:
hg update -r default
Update the version string in client/client.mk to reflect the next anticipated release off the trunk (f.e. "1.5"), then commit your change:
hg commit -m"update version for next anticipated release"
Mercurial will tell you that it created a new head. That's as it should be.
Push your changes back to the central repository:
hg push -f ssh://hg.mozilla.org/labs/personas/
You have to use the -f option to force the push because you are creating a new remote head, and Mercurial won't do that by default.
Finally, publicize the branch so developers know about it, since Mercurial will warn them about the new head when they next pull from the central repository.