Implement explicit build step ordering in Harbormaster
Summary: This implements support for explicitly marking the sequence of build steps. Users can now drag and re-order build steps in plans, and artifact dependencies are re-calculated so that if you move "Run Command" before "Lease Host", the "Run Command" step has it's artifact setting cleared and thus the step becomes invalid. Test Plan: Re-ordered build steps and observed dependencies being correctly recalculated. Reviewers: epriestley, #blessed_reviewers Reviewed By: epriestley CC: Korvin, epriestley, aran Maniphest Tasks: T1049 Differential Revision: https://secure.phabricator.com/D7715
This commit is contained in:
2
resources/sql/patches/20131205.buildsteporder.sql
Normal file
2
resources/sql/patches/20131205.buildsteporder.sql
Normal file
@@ -0,0 +1,2 @@
|
||||
ALTER TABLE {$NAMESPACE}_harbormaster.harbormaster_buildstep
|
||||
ADD COLUMN sequence INT UNSIGNED NOT NULL;
|
||||
41
resources/sql/patches/20131205.buildstepordermig.php
Normal file
41
resources/sql/patches/20131205.buildstepordermig.php
Normal file
@@ -0,0 +1,41 @@
|
||||
<?php
|
||||
|
||||
$table = new HarbormasterBuildPlan();
|
||||
$conn_w = $table->establishConnection('w');
|
||||
$viewer = PhabricatorUser::getOmnipotentUser();
|
||||
|
||||
// Since HarbormasterBuildStepQuery has been updated to handle the
|
||||
// correct order, we can't use the built in database access.
|
||||
|
||||
foreach (new LiskMigrationIterator($table) as $plan) {
|
||||
$planname = $plan->getName();
|
||||
echo "Migrating steps in {$planname}...\n";
|
||||
|
||||
$rows = queryfx_all(
|
||||
$conn_w,
|
||||
"SELECT id, sequence FROM harbormaster_buildstep ".
|
||||
"WHERE buildPlanPHID = %s ".
|
||||
"ORDER BY id ASC",
|
||||
$plan->getPHID());
|
||||
|
||||
$sequence = 1;
|
||||
foreach ($rows as $row) {
|
||||
$id = $row['id'];
|
||||
$existing = $row['sequence'];
|
||||
if ($existing != 0) {
|
||||
echo " - {$id} (already migrated)...\n";
|
||||
continue;
|
||||
}
|
||||
echo " - {$id} to position {$sequence}...\n";
|
||||
queryfx(
|
||||
$conn_w,
|
||||
"UPDATE harbormaster_buildstep ".
|
||||
"SET sequence = %d ".
|
||||
"WHERE id = %d",
|
||||
$sequence,
|
||||
$id);
|
||||
$sequence++;
|
||||
}
|
||||
}
|
||||
|
||||
echo "Done.\n";
|
||||
Reference in New Issue
Block a user