Changeset View
Changeset View
Standalone View
Standalone View
src/applications/harbormaster/engine/HarbormasterBuildEngine.php
Show First 20 Lines • Show All 491 Lines • ▼ Show 20 Lines | private function updateBuildable(HarbormasterBuildable $buildable) { | ||||
$object = id(new PhabricatorObjectQuery()) | $object = id(new PhabricatorObjectQuery()) | ||||
->setViewer($viewer) | ->setViewer($viewer) | ||||
->withPHIDs(array($buildable->getBuildablePHID())) | ->withPHIDs(array($buildable->getBuildablePHID())) | ||||
->executeOne(); | ->executeOne(); | ||||
if (!$object) { | if (!$object) { | ||||
return; | return; | ||||
} | } | ||||
if (!($object instanceof PhabricatorApplicationTransactionInterface)) { | $publish_phid = $object->getHarbormasterPublishablePHID(); | ||||
if (!$publish_phid) { | |||||
return; | return; | ||||
} | } | ||||
// TODO: Publishing these transactions is causing a race. See T8650. | if ($publish_phid === $object->getPHID()) { | ||||
// We shouldn't be publishing to diffs anyway. | $publish = $object; | ||||
if ($object instanceof DifferentialDiff) { | } else { | ||||
$publish = id(new PhabricatorObjectQuery()) | |||||
->setViewer($viewer) | |||||
->withPHIDs(array($publish_phid)) | |||||
->executeOne(); | |||||
if (!$publish) { | |||||
return; | |||||
} | |||||
} | |||||
if (!($publish instanceof PhabricatorApplicationTransactionInterface)) { | |||||
return; | return; | ||||
} | } | ||||
$template = $object->getApplicationTransactionTemplate(); | $template = $publish->getApplicationTransactionTemplate(); | ||||
if (!$template) { | if (!$template) { | ||||
return; | return; | ||||
} | } | ||||
$template | $template | ||||
->setTransactionType(PhabricatorTransactions::TYPE_BUILDABLE) | ->setTransactionType(PhabricatorTransactions::TYPE_BUILDABLE) | ||||
->setMetadataValue( | ->setMetadataValue( | ||||
'harbormaster:buildablePHID', | 'harbormaster:buildablePHID', | ||||
$buildable->getPHID()) | $buildable->getPHID()) | ||||
->setOldValue($old_status) | ->setOldValue($old_status) | ||||
->setNewValue($new_status); | ->setNewValue($new_status); | ||||
$harbormaster_phid = id(new PhabricatorHarbormasterApplication()) | $harbormaster_phid = id(new PhabricatorHarbormasterApplication()) | ||||
->getPHID(); | ->getPHID(); | ||||
$daemon_source = PhabricatorContentSource::newForSource( | $daemon_source = PhabricatorContentSource::newForSource( | ||||
PhabricatorDaemonContentSource::SOURCECONST); | PhabricatorDaemonContentSource::SOURCECONST); | ||||
$editor = $object->getApplicationTransactionEditor() | $editor = $publish->getApplicationTransactionEditor() | ||||
->setActor($viewer) | ->setActor($viewer) | ||||
->setActingAsPHID($harbormaster_phid) | ->setActingAsPHID($harbormaster_phid) | ||||
->setContentSource($daemon_source) | ->setContentSource($daemon_source) | ||||
->setContinueOnNoEffect(true) | ->setContinueOnNoEffect(true) | ||||
->setContinueOnMissingFields(true); | ->setContinueOnMissingFields(true); | ||||
$editor->applyTransactions( | $editor->applyTransactions( | ||||
$object->getApplicationTransactionObject(), | $publish->getApplicationTransactionObject(), | ||||
array($template)); | array($template)); | ||||
} | } | ||||
private function releaseAllArtifacts(HarbormasterBuild $build) { | private function releaseAllArtifacts(HarbormasterBuild $build) { | ||||
$targets = id(new HarbormasterBuildTargetQuery()) | $targets = id(new HarbormasterBuildTargetQuery()) | ||||
->setViewer(PhabricatorUser::getOmnipotentUser()) | ->setViewer(PhabricatorUser::getOmnipotentUser()) | ||||
->withBuildPHIDs(array($build->getPHID())) | ->withBuildPHIDs(array($build->getPHID())) | ||||
->withBuildGenerations(array($build->getBuildGeneration())) | ->withBuildGenerations(array($build->getBuildGeneration())) | ||||
Show All 26 Lines |