Page MenuHomePhabricator

Upgrading: Support for "Postponed" Lint and Unit Removed
Closed, ResolvedPublic

Description

Phabricator has technically supported "postponed" lint and unit tests for a long time, although this support has never been documented or recommended and no upstream code has ever used it.

This was an ancient hack to get some approximation of CI support. Harbormaster is now capable of providing that support in a more powerful way, and anything using postponed lint and unit tests should move to Harbormaster. Specifically, these things have changed in HEAD:

  • The differential.finishpostponedlinters API call no longer exists.
  • The differential.updateunitresults API call no longer exists.
  • The differential.setdiffproperty API call no longer has special casing to handle lint in a special way.
  • After D13868/D13869, Arcanist no longer recognizes the "postponed" statuses.

Generally, this means that lint and test engines which rely on the "postponed" mechanism will no longer function.

All of these mechanisms have been replaced by Harbormaster. In particular, Harbormaster can trigger builds when revisions are created, and harbormaster.sendmessage permits external scripts to upload unit test and lint results.

Event Timeline

epriestley raised the priority of this task from to Normal.
epriestley updated the task description. (Show Details)
epriestley added a subscriber: epriestley.
epriestley claimed this task.

I haven't seen any issues related to this in the last couple of weeks. I suspect this affects <5 installs worldwide.

From what I understand, there is no way to update 'arc unit + arc lint' build plan.

In my case, I have a lint.engine configured locally and no unit.engine.. which means arc unit will not run during arc diff. My plan was to run linting locally and run unit tests remotely (on jenkins) ..
I have configured harbormaster to kick off jenkins builds as I have outlined in T9478

With that in mind, I would not wan't 'arc unit + arc lint' plan to pass if I don't explicitly say so.
Image for reference:

at the least 'arc lint' should be separated from 'arc unit' (i know it is on the harbormaster side but not where it is actually displayed)

Also, looks like i can't edit the 'arc unit + arc lint` build plan! I know the limitations of harbormaster.sendmessage but
marking 'arc unit' as passed when it is not looks wacky. Only other option I'm left with is to specify an unit.engine locally and declare the tests as 'unsound' and then update them via harbormaster.

If I'm running my unit tests remotely, I would like to link people to those results, there is no way to embed a link via harbormaster.sendmessage and I just have to keep creating comments on the revision with build URLs.

I just want to understand what I'm doing wrong here, basically it looks like we're doomed if we don't use https://github.com/uber/phabricator-jenkins-plugin

From what I understand, there is no way to update 'arc unit + arc lint' build plan.

You might technically be able to, but the expectation is that you should not do this.

If I'm running my unit tests remotely, I would like to link people to those results, there is no way to embed a link via harbormaster.sendmessage and I just have to keep creating comments on the revision with build URLs.

You can use harbormaster.createartifact to create a "uri" artifact. The method has documentation, or see T8659, or examine the usage in the Uber plugin.

@ybv: see T9365 - some of what you're seeing is just UI acting up.
Anyway, once the rdio-diff-Phabricator_Master build is complete and calls harbormaster.sendmessage, you would see the new test resultss

@epriestley @avivey awesome! thanks so much for the pointers! Giving that a shot now.

@epriestley @avivey That worked just fine! :)
Only thing I'm not sure about how to make 'arc unit + arc lint' disappear and just have the harbormaster builds show up in the UI.