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) {
|
||||
return $this->releaseChangelogWrite($version);
|
||||
})
|
||||
->addCode(function () use ($version) {
|
||||
$this->releaseCreatePullRequest($version);
|
||||
})
|
||||
->run();
|
||||
}
|
||||
|
||||
@@ -595,6 +598,18 @@ class RoboFile extends \Robo\Tasks {
|
||||
->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) {
|
||||
$version = $this->releaseVersionGetNext($version);
|
||||
return $this->collectionBuilder()
|
||||
|
@@ -14,6 +14,8 @@ class GitHubController {
|
||||
|
||||
const RELEASE_SOURCE_BRANCH = 'release';
|
||||
|
||||
const QA_GITHUB_LOGIN = 'michelleshull';
|
||||
|
||||
/** @var string */
|
||||
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) {
|
||||
$this->ensureNoDraftReleaseExists();
|
||||
$this->ensureReleaseDoesNotExistYet($version);
|
||||
|
Reference in New Issue
Block a user