canmove, Confirmed users
2,056
edits
(create tarball/ZIP archive in current directory instead of home directory) |
(make terminology and procedures more consistent among release engineering steps) |
||
Line 119: | Line 119: | ||
git checkout stabilization | git checkout stabilization | ||
git merge master | git merge master | ||
Set JPCV (Jetpack Current Version) to the current version identifier on the development branch (f.e. 1.2a0): | |||
export JPCV=`cat .version` | |||
Set JPNV (Jetpack Next Version) to the next version identifier on the development branch (f.e. 1.3a0): | |||
export JPNV=(NEXT VERSION) | |||
Change the version identifier on the master branch for the next development cycle: | Change the version identifier on the master branch for the next development cycle: | ||
git checkout master | git checkout master | ||
find . -type f -exec perl -pi -e | find . -type f -exec perl -pi -e "s/${JPCV}/${JPNV}/g" {} \; | ||
Verify that the version identifiers were changed correctly. In particular, make sure the find/replace command didn't modify strings that aren't SDK version identifiers but look similar to them (f.e. a version identifier in the jQuery library). | Verify that the version identifiers were changed correctly. In particular, make sure the find/replace command didn't modify strings that aren't SDK version identifiers but look similar to them (f.e. a version identifier in the jQuery library). | ||
Line 129: | Line 137: | ||
Commit the changes: | Commit the changes: | ||
git commit -a -m"update SDK version for next development cycle" | git commit -a -m"update SDK version to ${JPNV} for next development cycle" | ||
Check out the stabilization branch: | Check out the stabilization branch: | ||
Line 167: | Line 175: | ||
== Spin Test Builds == | == Spin Test Builds == | ||
To ensure the release meets our quality standards, spin test builds and distribute them to testers. Do this at least weekly during the stabilization period, spinning beta builds initially and release candidate builds ultimately. | To ensure the release meets our quality standards, spin test builds and distribute them to testers. Do this at least weekly during the stabilization period, spinning beta builds initially and one or more release candidate builds ultimately. | ||
Clone the canonical repository, and enter the clone's working directory, and check out the stabilization branch: | Clone the canonical repository, and enter the clone's working directory, and check out the stabilization branch: | ||
Line 175: | Line 183: | ||
git checkout stabilization | git checkout stabilization | ||
Set JPCV (Jetpack Current Version) to the current version | Set JPCV (Jetpack Current Version) to the current version (f.e. 1.2b1): | ||
export JPCV=`cat .version` | export JPCV=`cat .version` | ||
Set | Set JPNV (Jetpack Next Version) to the next version being built (f.e. 1.2b2): | ||
export | export JPNV=(NEXT VERSION) | ||
If building a beta, set JPFV (Jetpack Final Version) to | If building a beta, set JPFV (Jetpack Final Version) to JPNV: | ||
export JPFV=${ | export JPFV=${JPNV} | ||
Otherwise, when building a release candidate, set JPFV to the version being released (f.e. 1.2): | Otherwise, when building a release candidate, set JPFV to the version being released (f.e. 1.2): | ||
Line 193: | Line 201: | ||
Change the version identifier in source files to the one for the test build: | Change the version identifier in source files to the one for the test build: | ||
find . -type f -exec perl -pi -e "s/${JPCV}/${ | find . -type f -exec perl -pi -e "s/${JPCV}/${JPNV}/g" {} \; | ||
Verify that the version identifiers were changed correctly. In particular, make sure the find/replace command didn't modify strings that aren't SDK version identifiers but look similar to them (f.e. a version identifier in the jQuery library). | Verify that the version identifiers were changed correctly. In particular, make sure the find/replace command didn't modify strings that aren't SDK version identifiers but look similar to them (f.e. a version identifier in the jQuery library). | ||
Line 199: | Line 207: | ||
Commit the changes: | Commit the changes: | ||
git commit -a -m"update SDK version for test build | git commit -a -m"update SDK version to ${JPNV} for next test build" | ||
Create a tarball and a ZIP archive: | Create a tarball and a ZIP archive: | ||
git archive --format=zip --output addon-sdk-${ | git archive --format=zip --output addon-sdk-${JPNV}.zip --worktree-attributes --prefix addon-sdk-${JPFV}/ HEAD | ||
git archive --format=tar --output addon-sdk-${ | git archive --format=tar --output addon-sdk-${JPNV}.tar --worktree-attributes --prefix addon-sdk-${JPFV}/ HEAD | ||
gzip addon-sdk-${ | gzip addon-sdk-${JPNV}.tar # makes addon-sdk-${JPNV}.tar.gz | ||
{{note|a beta expands to a directory whose name contains the test version (f.e. addon-sdk-1.2b2), but a candidate expands to a directory whose name contains the final version (f.e. addon-sdk-1.2), so we can bless a candidate simply by renaming its tarball/ZIP archive.}} | {{note|a beta expands to a directory whose name contains the test version (f.e. addon-sdk-1.2b2), but a candidate expands to a directory whose name contains the final version (f.e. addon-sdk-1.2), so we can bless a candidate simply by renaming its tarball/ZIP archive.}} | ||
Line 211: | Line 219: | ||
Copy the tarball/ZIP archive to the distribution server: | Copy the tarball/ZIP archive to the distribution server: | ||
scp addon-sdk-${ | scp addon-sdk-${JPNV}.tar.gz addon-sdk-${JPNV}.zip stage.mozilla.org:/pub/mozilla.org/labs/jetpack/ | ||
Verify that the tarball/ZIP archive is ready for distribution by running integration checks on it: | Verify that the tarball/ZIP archive is ready for distribution by running integration checks on it: | ||
mkdir TEST_ZIP && cd TEST_ZIP && python ../bin/integration-scripts/integration-check --url https://ftp.mozilla.org/pub/mozilla.org/labs/jetpack/addon-sdk-${ | mkdir TEST_ZIP && cd TEST_ZIP && python ../bin/integration-scripts/integration-check --url https://ftp.mozilla.org/pub/mozilla.org/labs/jetpack/addon-sdk-${JPNV}.zip | ||
cd .. | cd .. | ||
mkdir TEST_TGZ && cd TEST_TGZ && python ../bin/integration-scripts/integration-check --url https://ftp.mozilla.org/pub/mozilla.org/labs/jetpack/addon-sdk-${ | mkdir TEST_TGZ && cd TEST_TGZ && python ../bin/integration-scripts/integration-check --url https://ftp.mozilla.org/pub/mozilla.org/labs/jetpack/addon-sdk-${JPNV}.tar.gz | ||
cd .. | cd .. | ||
Line 224: | Line 232: | ||
Tag the repository with the test version: | Tag the repository with the test version: | ||
git tag ${ | git tag ${JPNV} stabilization | ||
Push the stabilization branch and the tag to the canonical repository: | Push the stabilization branch and the tag to the canonical repository: | ||
git push origin stabilization ${ | git push origin stabilization ${JPNV} | ||
Notify testers about the build via a post to the discussion forum. Have them run automated and manual tests (including submitting generated XPIs to the [https://preview.addons.mozilla.org/ AMO test server]) and report any bugs they discover. | Notify testers about the build via a post to the discussion forum. Have them run automated and manual tests (including submitting generated XPIs to the [https://preview.addons.mozilla.org/ AMO test server]) and report any bugs they discover. | ||
Line 279: | Line 287: | ||
Generate and expand the docs: | Generate and expand the docs: | ||
cfx sdocs --baseurl="https://addons.mozilla.org/en-US/developers/docs/sdk/(VERSION)/" | cfx sdocs --baseurl="https://addons.mozilla.org/en-US/developers/docs/sdk/(FINAL VERSION)/" | ||
tar xzf addon-sdk-docs.tgz | tar xzf addon-sdk-docs.tgz | ||
Line 309: | Line 317: | ||
ssh stage.mozilla.org | ssh stage.mozilla.org | ||
cd /pub/mozilla.org/labs/jetpack/ | cd /pub/mozilla.org/labs/jetpack/ | ||
export | export JPCV=(CANDIDATE VERSION) | ||
export JPFV=(VERSION) | export JPFV=(FINAL VERSION) | ||
cp addon-sdk-${ | cp addon-sdk-${JPCV}.zip addon-sdk-${JPFV}.zip | ||
cp addon-sdk-${ | cp addon-sdk-${JPCV}.tar.gz addon-sdk-${JPFV}.tar.gz | ||
== Update Latest Builds Redirect == | == Update Latest Builds Redirect == | ||
Line 318: | Line 326: | ||
Use a text editor like vi or emacs to update the /pub/mozilla.org/labs/jetpack/.htaccess file on ftp.mozilla.org to redirect the "latest" symlinks to the new release, making the content of the file look like this: | Use a text editor like vi or emacs to update the /pub/mozilla.org/labs/jetpack/.htaccess file on ftp.mozilla.org to redirect the "latest" symlinks to the new release, making the content of the file look like this: | ||
Redirect 307 /pub/mozilla.org/labs/jetpack/addon-sdk-latest.zip https://ftp.mozilla.org/pub/mozilla.org/labs/jetpack/addon-sdk-(VERSION).zip | Redirect 307 /pub/mozilla.org/labs/jetpack/addon-sdk-latest.zip https://ftp.mozilla.org/pub/mozilla.org/labs/jetpack/addon-sdk-(FINAL VERSION).zip | ||
Redirect 307 /pub/mozilla.org/labs/jetpack/addon-sdk-latest.tar.gz https://ftp.mozilla.org/pub/mozilla.org/labs/jetpack/addon-sdk-(VERSION).tar.gz | Redirect 307 /pub/mozilla.org/labs/jetpack/addon-sdk-latest.tar.gz https://ftp.mozilla.org/pub/mozilla.org/labs/jetpack/addon-sdk-(FINAL VERSION).tar.gz | ||
Redirect 307 /pub/mozilla.org/labs/jetpack/jetpack-sdk-latest.zip https://ftp.mozilla.org/pub/mozilla.org/labs/jetpack/addon-sdk-(VERSION).zip | Redirect 307 /pub/mozilla.org/labs/jetpack/jetpack-sdk-latest.zip https://ftp.mozilla.org/pub/mozilla.org/labs/jetpack/addon-sdk-(FINAL VERSION).zip | ||
Redirect 307 /pub/mozilla.org/labs/jetpack/jetpack-sdk-latest.tar.gz https://ftp.mozilla.org/pub/mozilla.org/labs/jetpack/addon-sdk-(VERSION).tar.gz | Redirect 307 /pub/mozilla.org/labs/jetpack/jetpack-sdk-latest.tar.gz https://ftp.mozilla.org/pub/mozilla.org/labs/jetpack/addon-sdk-(FINAL VERSION).tar.gz | ||
Test the symlinks to ensure they correctly provide the new release. | Test the symlinks to ensure they correctly provide the new release. | ||
Line 339: | Line 347: | ||
Set JPFV to the version being released (f.e. 1.2): | Set JPFV to the version being released (f.e. 1.2): | ||
export JPFV=(VERSION) | export JPFV=(FINAL VERSION) | ||
Clone the canonical repository and enter its working directory: | Clone the canonical repository and enter its working directory: | ||
Line 357: | Line 365: | ||
Push the release branch and tag to the canonical repository: | Push the release branch and tag to the canonical repository: | ||
git push origin release | git push origin release ${JPFV} | ||
== Notify Community == | == Notify Community == | ||
Line 364: | Line 371: | ||
Notify the discussion forum about the release. Include a link to the release tag: | Notify the discussion forum about the release. Include a link to the release tag: | ||
https://github.com/mozilla/addon-sdk/tree/(VERSION) | https://github.com/mozilla/addon-sdk/tree/(FINAL VERSION) | ||
= Bask = | = Bask = |