ReleaseEngineering/TryChooser

TryChooser lets you select specific jobs you want to run on tryserver. You use TryChooser by putting a try: block in the commit message of the topmost changeset when you push to try.

Syntax Builder

This site will help you build the syntax line to get what you want. TryChooser Syntax Builder

Usage

try: OPTIONS

Options:
  -a --do-everything
      Run everything that we'd run if you pushed to mozilla-central: debug /
      opt builds, all tests, all talos.

  -b --build TYPE
      Choose what type of builds you'd like made:
        --build d   gives debug builds only
        --build o   gives optimized builds only
        --build do  gives both debug and optimized builds

  -p --platform LIST
      Choose which desktop platform(s) you'd like to build for with a
      comma-separated list:
        linux,linux64,macosx,macosx64,win32
      or specify 'none' or 'all'.

  -m --mobile LIST
      Choose which mobile platform(s) you'd like to build for with a
      comma-separated list:
        mobile-maemo5-qt,android,etc.
      or specify 'none' or 'all'.

  -u --unittests LIST
      Choose which unittests you'd like run:
        crashtest,reftest,mochitests
      or give a subset of tests:
        mochitest-{1,2,3,4,5,o},xpcshell,opengl,jsreftest
      or specify 'none' or 'all'.

  -t --talos LIST
      Choose which talos suites you'd like to run:
        tp4,tscroll,tspider,etc.
      or specify 'none' or 'all'.

Note that if you specify --do-everything TryChooser will ignore any other options you provide.

Defaults

If you don't specify an option or if you give an invalid value for an option, TryChooser will use its default for that option:

--build do
--platform all
--mobile all
--unittests all
--talos none

Examples

try: -a
Run what mozilla-central's automation does: all platforms, all tests, all talos:
try: -b do -u crashtest
Debug and optimized builds, all available desktop and mobile platforms, only crashtests, no talos:
try: -b d -p linux -u none
Linux debug build, all available mobile platforms, no unittests, no talos:
try: -b o -p none
Mobile-only optimized builds, all unit tests, no talos:
try: -b do -m none -u all -t chrome,nochrome
Debug and optimized builds for all desktop platforms, no mobile, all unittests, select talos:
try: -b o -u jsreftest,crashtest,mochitest-1 -t tp4,scroll
Opt builds on all available desktop and mobile platforms, select unittests, select talos

Workflow

Without MQ

If you're not using Mercurial Queues, you can use TryChooser by including a "try:" string in the message of the commit you push to try:

$ (edit your code)
$ hg commit -m "Bug XXXXXX - Change foo to bar.  try: --do-everything"
$ hg push -f ssh://hg.mozilla.org/try

With MQ

If you're using Mercurial Queues, you can use TryChooser by modifying the commit message of your topmost patch to include a "try:" string:

$ hg qgoto your-patch
$ hg qref -e
(text editor appears.  Include "try: --do-everything".)
$ hg push -f ssh://hg.mozilla.org

FAQ

What if I don't put "try:" in my commit message?

If you don't give a "try:" string in your commit message, you'll get the default set of builds and tests.

What if make a syntax error in my commit message?

If you pass an invalid parameter, TryChooser will ignore it and substitute the defailt in its place. For instance, if you specify try: -b f -u crashtest, you'll get both debug and optimized builds, since "f" is not a recognized argument. You'll only get crashtest run on those builds, however.

Where's the full list of unit tests and talos tests I can request?

List of test suites used by TryChooser is here.

To match up the Talos suite name to the tests it runs you can go here. (eg: 'chrome' runs ts:tdhtml:twinopen:tsspider)

If you need help building the syntax line you can also go to the TryChooser Syntax Builder page.

What do I do if I need to add or remove a job after I push?

File a bug with this link. It's helpful if you check the ftp dir first to see what builds have actually completed and uploaded (since that is what releng triggers your tests and talos from). Include the email-changeset identifier of your ftp dir (it's also included in the e-mails tryserver sends you); e.g. "Please trigger myname@gmail.com-6860bd333c84 linux crashtest, no talos".

Whoever is currently on buildduty will see the bug and submit your request.

Where are my builds/test/talos?

Sometimes TBPL is missing results (e.g. bug 590526), and sometimes it feels like it's been a while since you kicked the build off and you're getting antsy for results. Here are some things you can look into before pinging the person on buildduty:

  • Did the build compile successfully? If it didn't, you won't get unittests or talos results.
    • Look for your directory in the builds FTP server and see what has been uploaded. (You can also find here the email-changeset string that you'll need if you end up pinging releng.)
  • Check Running and Pending to view your build's status. These pages lie less often than TBPL.

Parsing details

The parser for TryChooser is here.

The basic algorithm is:

  • The commit message is split on 'try:'.
  • Whatever follows after 'try:' is passed to try_parser as a string.
  • The string is processed into a list of args handed to parse_known_args (thus keeping anything that is not a recognized argument from causing errors).