{"action":"opened","issue":{"url":"https://api.github.com/repos/servo/saltfs/issues/372","repository_url":"https://api.github.com/repos/servo/saltfs","labels_url":"https://api.github.com/repos/servo/saltfs/issues/372/labels{/name}","comments_url":"https://api.github.com/repos/servo/saltfs/issues/372/comments","events_url":"https://api.github.com/repos/servo/saltfs/issues/372/events","html_url":"https://github.com/servo/saltfs/issues/372","id":154739401,"number":372,"title":"Use steps.Compile for `mach package` on Buildbot","user":{"login":"aneeshusa","id":2085567,"avatar_url":"https://avatars.githubusercontent.com/u/2085567?v=3","gravatar_id":"","url":"https://api.github.com/users/aneeshusa","html_url":"https://github.com/aneeshusa","followers_url":"https://api.github.com/users/aneeshusa/followers","following_url":"https://api.github.com/users/aneeshusa/following{/other_user}","gists_url":"https://api.github.com/users/aneeshusa/gists{/gist_id}","starred_url":"https://api.github.com/users/aneeshusa/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aneeshusa/subscriptions","organizations_url":"https://api.github.com/users/aneeshusa/orgs","repos_url":"https://api.github.com/users/aneeshusa/repos","events_url":"https://api.github.com/users/aneeshusa/events{/privacy}","received_events_url":"https://api.github.com/users/aneeshusa/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/servo/saltfs/labels/E-easy","name":"E-easy","color":"02e10c"},{"url":"https://api.github.com/repos/servo/saltfs/labels/L-python","name":"L-python","color":"bfd4f2"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":0,"created_at":"2016-05-13T15:31:28Z","updated_at":"2016-05-13T15:31:28Z","closed_at":null,"body":"We use `./mach package -r` to [package Android APKs](https://github.com/servo/saltfs/blob/783e4f66c2fce1bc23176619b30bf7bf4133bb6c/buildbot/master/files/config/steps.yml#L56) on the android-nightly builder; the next step is then to upload the built package via S3.\r\n\r\nCurrently, the packaging step is broken (should be fixed by #290); however, even though it fails, Buildbot still tries to run the next step of uploading to S3. This is because there is no heuristic for `./mach package` and it is run as a regular `ShellCommand`.\r\n\r\nInstead, we should add a heuristic in the `make_step` function in the `buildbot/master/files/config/factories.py` file that checks for `./mach package` and uses steps.Compile to create that step. This a) is a closer semantic match (we're \"compiling\" the APK), and b) will stop the build if the packaging fails, so Buildbot doesn't try the S3 upload step.\r\n\r\nThis can simply check for `package` as an argument to mach instead of using a more complicated regex as the other heuristics do, because currently there is only one type of packaging: Android APK."}}