Create github release
[MAILPOET-2004]
This commit is contained in:
15
RoboFile.php
15
RoboFile.php
@@ -539,6 +539,9 @@ class RoboFile extends \Robo\Tasks {
|
|||||||
->addCode(function () use ($version) {
|
->addCode(function () use ($version) {
|
||||||
return $this->releaseChangelogWrite($version);
|
return $this->releaseChangelogWrite($version);
|
||||||
})
|
})
|
||||||
|
->addCode(function () use ($version) {
|
||||||
|
$this->releaseCreatePullRequest($version);
|
||||||
|
})
|
||||||
->run();
|
->run();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -595,6 +598,18 @@ class RoboFile extends \Robo\Tasks {
|
|||||||
->run();
|
->run();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function releaseCreatePullRequest($version) {
|
||||||
|
$this->taskGitStack()
|
||||||
|
->stopOnFail()
|
||||||
|
->add('-A')
|
||||||
|
->commit('Release ' . $version)
|
||||||
|
->tag($version)
|
||||||
|
->exec('git push --set-upstream git@github.com:mailpoet/mailpoet.git release --follow-tags')
|
||||||
|
->run();
|
||||||
|
$this->createGitHubController()
|
||||||
|
->createReleasePullRequest($version);
|
||||||
|
}
|
||||||
|
|
||||||
public function releasePublish($version = null) {
|
public function releasePublish($version = null) {
|
||||||
$version = $this->releaseVersionGetNext($version);
|
$version = $this->releaseVersionGetNext($version);
|
||||||
return $this->collectionBuilder()
|
return $this->collectionBuilder()
|
||||||
|
@@ -14,6 +14,8 @@ class GitHubController {
|
|||||||
|
|
||||||
const RELEASE_SOURCE_BRANCH = 'release';
|
const RELEASE_SOURCE_BRANCH = 'release';
|
||||||
|
|
||||||
|
const QA_GITHUB_LOGIN = 'michelleshull';
|
||||||
|
|
||||||
/** @var string */
|
/** @var string */
|
||||||
private $zip_filename;
|
private $zip_filename;
|
||||||
|
|
||||||
@@ -32,6 +34,31 @@ class GitHubController {
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function createReleasePullRequest($version) {
|
||||||
|
$response = $this->http_client->post('pulls', [
|
||||||
|
'json' => [
|
||||||
|
'title' => 'Release ' . $version,
|
||||||
|
'head' => self::RELEASE_SOURCE_BRANCH,
|
||||||
|
'base' => 'master',
|
||||||
|
],
|
||||||
|
]);
|
||||||
|
$response = json_decode($response->getBody()->getContents(), true);
|
||||||
|
$pull_request_number = $response['number'];
|
||||||
|
if (!$pull_request_number) {
|
||||||
|
throw new \Exception('Failed to create a new release pull request');
|
||||||
|
}
|
||||||
|
$this->assignPullRequest($pull_request_number);
|
||||||
|
}
|
||||||
|
|
||||||
|
private function assignPullRequest($pull_request_number) {
|
||||||
|
$this->http_client->post("pulls/$pull_request_number/requested_reviewers", [
|
||||||
|
'json' => ['reviewers' => [self::QA_GITHUB_LOGIN]],
|
||||||
|
]);
|
||||||
|
$this->http_client->post("issues/$pull_request_number/assignees", [
|
||||||
|
'json' => ['assignees' => [self::QA_GITHUB_LOGIN]],
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
public function publishRelease($version, $changelog, $release_zip_path) {
|
public function publishRelease($version, $changelog, $release_zip_path) {
|
||||||
$this->ensureNoDraftReleaseExists();
|
$this->ensureNoDraftReleaseExists();
|
||||||
$this->ensureReleaseDoesNotExistYet($version);
|
$this->ensureReleaseDoesNotExistYet($version);
|
||||||
|
Reference in New Issue
Block a user