Update GithubBuild to allow for testing pull requests, hopefully
This commit is contained in:
parent
a2997713d1
commit
1739afeca6
|
@ -9,6 +9,7 @@
|
|||
|
||||
namespace PHPCI\Model\Build;
|
||||
|
||||
use PHPCI\Builder;
|
||||
use PHPCI\Model\Build\RemoteGitBuild;
|
||||
|
||||
/**
|
||||
|
@ -115,4 +116,29 @@ class GithubBuild extends RemoteGitBuild
|
|||
|
||||
return $link;
|
||||
}
|
||||
|
||||
protected function postCloneSetup(Builder $builder, $cloneTo)
|
||||
{
|
||||
$buildType = $this->getExtra('build_type');
|
||||
|
||||
$success = true;
|
||||
|
||||
try {
|
||||
if (!empty($buildType) && $buildType == 'pull_request') {
|
||||
$remoteUrl = $this->getExtra('remote_url');
|
||||
$remoteBranch = $this->getExtra('remote_branch');
|
||||
|
||||
$cmd = 'cd "%s" && git checkout -b phpci/' . $this->getId() . ' %s && git pull %s %s';
|
||||
$success = $builder->executeCommand($cmd, $cloneTo, $this->getBranch(), $remoteUrl, $remoteBranch);
|
||||
}
|
||||
} catch (\Exception $ex) {
|
||||
$success = false;
|
||||
}
|
||||
|
||||
if ($success) {
|
||||
$success = parent::postCloneSetup($builder, $cloneTo);
|
||||
}
|
||||
|
||||
return $success;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -65,12 +65,8 @@ class RemoteGitBuild extends Build
|
|||
$cmd .= ' -b %s %s "%s"';
|
||||
$success = $builder->executeCommand($cmd, $this->getBranch(), $this->getCloneUrl(), $cloneTo);
|
||||
|
||||
if (!empty($commit) && $commit != 'Manual') {
|
||||
$cmd = 'cd "%s" && git checkout %s';
|
||||
if (IS_WIN) {
|
||||
$cmd = 'cd /d "%s" && git checkout %s';
|
||||
}
|
||||
$builder->executeCommand($cmd, $cloneTo, $this->getCommitId());
|
||||
if ($success) {
|
||||
$success = $this->postCloneSetup($builder, $cloneTo);
|
||||
}
|
||||
|
||||
return $success;
|
||||
|
@ -104,15 +100,8 @@ class RemoteGitBuild extends Build
|
|||
|
||||
$success = $builder->executeCommand($cmd, $this->getBranch(), $this->getCloneUrl(), $cloneTo);
|
||||
|
||||
// Checkout a specific commit if we need to:
|
||||
$commit = $this->getCommitId();
|
||||
|
||||
if (!empty($commit) && $commit != 'Manual') {
|
||||
$cmd = 'cd "%s" && git checkout %s';
|
||||
if (IS_WIN) {
|
||||
$cmd = 'cd /d "%s" && git checkout %s';
|
||||
}
|
||||
$builder->executeCommand($cmd, $cloneTo, $this->getCommitId());
|
||||
if ($success) {
|
||||
$success = $this->postCloneSetup($builder, $cloneTo);
|
||||
}
|
||||
|
||||
// Remove the key file and git wrapper:
|
||||
|
@ -122,6 +111,24 @@ class RemoteGitBuild extends Build
|
|||
return $success;
|
||||
}
|
||||
|
||||
protected function postCloneSetup(Builder $builder, $cloneTo)
|
||||
{
|
||||
$success = true;
|
||||
$commit = $this->getCommitId();
|
||||
|
||||
if (!empty($commit) && $commit != 'Manual') {
|
||||
$cmd = 'cd "%s" && git checkout %s';
|
||||
|
||||
if (IS_WIN) {
|
||||
$cmd = 'cd /d "%s" && git checkout %s';
|
||||
}
|
||||
|
||||
$success = $builder->executeCommand($cmd, $cloneTo, $this->getCommitId());
|
||||
}
|
||||
|
||||
return $success;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an SSH key file on disk for this build.
|
||||
* @param $cloneTo
|
||||
|
|
Loading…
Reference in a new issue