mirror of
https://we.phorge.it/source/phorge.git
synced 2024-12-23 05:50:55 +01:00
Don't run Herald build rules when Differential revisions are updated automatically
Summary: Ref T2543. After D18731, Herald build rules run more often, but now incorrectly try to run builds when Diffusion closes a revision because a commit landed. Test Plan: Made some mundane updates locally; this is tricky to test comprehensively locally so I'm mostly planning to just push it to `secure`. Reviewers: amckinley Reviewed By: amckinley Maniphest Tasks: T2543 Differential Revision: https://secure.phabricator.com/D18745
This commit is contained in:
parent
28cec2f8a2
commit
7fa0d066bc
2 changed files with 24 additions and 4 deletions
|
@ -1204,16 +1204,32 @@ final class DifferentialTransactionEditor
|
||||||
// edited the title or changed subscribers), prevent "Run build plan"
|
// edited the title or changed subscribers), prevent "Run build plan"
|
||||||
// and other similar rules from acting yet, since the build results will
|
// and other similar rules from acting yet, since the build results will
|
||||||
// not (or, at least, should not) change unless the actual source changes.
|
// not (or, at least, should not) change unless the actual source changes.
|
||||||
|
// We also don't run Differential builds if the update was caused by
|
||||||
|
// discovering a commit, as the expectation is that Diffusion builds take
|
||||||
|
// over once things land.
|
||||||
$has_update = false;
|
$has_update = false;
|
||||||
|
$has_commit = false;
|
||||||
|
|
||||||
$type_update = DifferentialTransaction::TYPE_UPDATE;
|
$type_update = DifferentialTransaction::TYPE_UPDATE;
|
||||||
foreach ($xactions as $xaction) {
|
foreach ($xactions as $xaction) {
|
||||||
if ($xaction->getTransactionType() == $type_update) {
|
if ($xaction->getTransactionType() != $type_update) {
|
||||||
$has_update = true;
|
continue;
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($xaction->getMetadataValue('isCommitUpdate')) {
|
||||||
|
$has_commit = true;
|
||||||
|
} else {
|
||||||
|
$has_update = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$has_update) {
|
if ($has_commit) {
|
||||||
|
$adapter->setForbiddenAction(
|
||||||
|
HeraldBuildableState::STATECONST,
|
||||||
|
DifferentialHeraldStateReasons::REASON_LANDED);
|
||||||
|
} else if (!$has_update) {
|
||||||
$adapter->setForbiddenAction(
|
$adapter->setForbiddenAction(
|
||||||
HeraldBuildableState::STATECONST,
|
HeraldBuildableState::STATECONST,
|
||||||
DifferentialHeraldStateReasons::REASON_UNCHANGED);
|
DifferentialHeraldStateReasons::REASON_UNCHANGED);
|
||||||
|
|
|
@ -5,6 +5,7 @@ final class DifferentialHeraldStateReasons
|
||||||
|
|
||||||
const REASON_DRAFT = 'differential.draft';
|
const REASON_DRAFT = 'differential.draft';
|
||||||
const REASON_UNCHANGED = 'differential.unchanged';
|
const REASON_UNCHANGED = 'differential.unchanged';
|
||||||
|
const REASON_LANDED = 'differential.landed';
|
||||||
|
|
||||||
public function explainReason($reason) {
|
public function explainReason($reason) {
|
||||||
$reasons = array(
|
$reasons = array(
|
||||||
|
@ -14,6 +15,9 @@ final class DifferentialHeraldStateReasons
|
||||||
self::REASON_UNCHANGED => pht(
|
self::REASON_UNCHANGED => pht(
|
||||||
'The update which triggered Herald did not update the diff for '.
|
'The update which triggered Herald did not update the diff for '.
|
||||||
'this revision, so builds will not run.'),
|
'this revision, so builds will not run.'),
|
||||||
|
self::REASON_LANDED => pht(
|
||||||
|
'The update which triggered Herald was an automatic update in '.
|
||||||
|
'response to discovering a commit, so builds will not run.'),
|
||||||
);
|
);
|
||||||
|
|
||||||
return idx($reasons, $reason);
|
return idx($reasons, $reason);
|
||||||
|
|
Loading…
Reference in a new issue