Jetpack/Release Process: Difference between revisions

Jump to navigation Jump to search
make terminology and procedures more consistent among release engineering steps
(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 's/(CURRENT VERSION)/(NEXT VERSION)/g' {} \;
  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 identifier (f.e. 1.2b1):
Set JPCV (Jetpack Current Version) to the current version (f.e. 1.2b1):


  export JPCV=`cat .version`
  export JPCV=`cat .version`


Set JPTV (Jetpack Test Version) to the test version being built (f.e. 1.2b2):
Set JPNV (Jetpack Next Version) to the next version being built (f.e. 1.2b2):


  export JPTV=(TEST VERSION)
  export JPNV=(NEXT VERSION)


If building a beta, set JPFV (Jetpack Final Version) to JPTV:
If building a beta, set JPFV (Jetpack Final Version) to JPNV:


  export JPFV=${JPTV}
  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}/${JPTV}/g" {} \;
  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 ${JPTV}"
  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-${JPTV}.zip --worktree-attributes --prefix addon-sdk-${JPFV}/ HEAD
  git archive --format=zip --output addon-sdk-${JPNV}.zip --worktree-attributes --prefix addon-sdk-${JPFV}/ HEAD
  git archive --format=tar --output addon-sdk-${JPTV}.tar --worktree-attributes --prefix addon-sdk-${JPFV}/ HEAD
  git archive --format=tar --output addon-sdk-${JPNV}.tar --worktree-attributes --prefix addon-sdk-${JPFV}/ HEAD
  gzip addon-sdk-${JPTV}.tar # makes addon-sdk-${JPTV}.tar.gz
  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-${JPTV}.tar.gz addon-sdk-${JPTV}.zip stage.mozilla.org:/pub/mozilla.org/labs/jetpack/
  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-${JPTV}.zip
  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-${JPTV}.tar.gz
  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 ${JPTV} stabilization
  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 ${JPTV}
  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 JPTV=(CANDIDATE VERSION)
  export JPCV=(CANDIDATE VERSION)
  export JPFV=(VERSION)
  export JPFV=(FINAL VERSION)
  cp addon-sdk-${JPTV}.zip addon-sdk-${JPFV}.zip
  cp addon-sdk-${JPCV}.zip addon-sdk-${JPFV}.zip
  cp addon-sdk-${JPTV}.tar.gz addon-sdk-${JPFV}.tar.gz
  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}
git push origin ${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 =
canmove, Confirmed users
2,056

edits

Navigation menu