git: Check for CI status before closing the PR

This commit is contained in:
Oliver Davies 2020-05-22 23:11:37 +01:00
parent 16dd74bfe7
commit f98ebdba1e

View file

@ -20,6 +20,9 @@ class ClosesPullRequests
private $localBranch; private $localBranch;
private $remoteBranch; private $remoteBranch;
private const CI_PENDING = 'pending';
private const CI_SUCCESS = 'success';
public function __construct() public function __construct()
{ {
$this->localBranch = exec('git rev-parse --abbrev-ref HEAD'); $this->localBranch = exec('git rev-parse --abbrev-ref HEAD');
@ -28,6 +31,18 @@ class ClosesPullRequests
$this->remoteBranch = str_replace('origin/', '', $this->remoteBranch); $this->remoteBranch = str_replace('origin/', '', $this->remoteBranch);
} }
function confirmCiStatusIsPassing(): void
{
echo 'Confirming ci-status on PR is green...' . PHP_EOL;
// TODO: Check for failures, or skip if there is no CI.
switch (exec('hub ci-status')) {
case self::CI_PENDING:
die('CI pending');
break;
}
}
function fetchOrigin(): void function fetchOrigin(): void
{ {
print 'Fetching origin to confirm local and remote in sync...' print 'Fetching origin to confirm local and remote in sync...'
@ -72,7 +87,7 @@ class ClosesPullRequests
public function __invoke(): void public function __invoke(): void
{ {
// TODO: Check the CI status of the branch. Don't merge if it's failing. $this->confirmCiStatusIsPassing();
// TODO: Check that the current branch has a tracking branch. // TODO: Check that the current branch has a tracking branch.
$this->fetchOrigin(); $this->fetchOrigin();
// TODO: Ensure both branches are up to date. // TODO: Ensure both branches are up to date.