Add a command to assign release versions to Jira tickets [MAILPOET-1783]

This commit is contained in:
wxa
2019-02-12 09:48:33 +03:00
committed by M. Shull
parent 8a23a9def8
commit 84f0816dca
3 changed files with 171 additions and 12 deletions

View File

@@ -588,6 +588,16 @@ class RoboFile extends \Robo\Tasks {
);
}
protected function getReleaseVersionController($project) {
require_once './tasks/release/ReleaseVersionController.php';
$this->loadEnv();
return \MailPoetTasks\Release\ReleaseVersionController::createWithJiraCredentials(
getenv('WP_JIRA_TOKEN'),
getenv('WP_JIRA_USER'),
$project
);
}
public function testAcceptanceGroupTests() {
return $this->taskSplitTestFilesByGroups(4)
->projectRoot('.')
@@ -598,10 +608,7 @@ class RoboFile extends \Robo\Tasks {
public function writeReleaseVersion($version) {
$version = trim($version);
if (!preg_match('/\d+\.\d+\.\d+/', $version)) {
$this->yell('Incorrect version format', 40, 'red');
exit(1);
}
$this->validateVersion($version);
$this->taskReplaceInFile(__DIR__ . '/readme.txt')
->regex('/Stable tag:\s*\d+\.\d+\.\d+/i')
@@ -618,4 +625,34 @@ class RoboFile extends \Robo\Tasks {
->to(sprintf("'version' => '%s',", $version))
->run();
}
public function jiraReleaseVersion($opts = ['free' => null, 'premium' => null]) {
require_once './tasks/release/Jira.php';
if (empty($opts['free']) && empty($opts['premium'])) {
$this->yell('No Free or Premium version specified', 40, 'red');
exit(1);
}
$output = [];
if (!empty($opts['free'])) {
$this->validateVersion($opts['free']);
$output[] = $this->getReleaseVersionController(\MailPoetTasks\Release\Jira::PROJECT_MAILPOET)
->assignVersionToCompletedTickets($opts['free']);
}
if (!empty($opts['premium'])) {
$this->validateVersion($opts['premium']);
$output[] = $this->getReleaseVersionController(\MailPoetTasks\Release\Jira::PROJECT_PREMIUM)
->assignVersionToCompletedTickets($opts['premium']);
}
if($opts['quiet']) {
return;
}
$this->say(join("\n", $output));
}
private function validateVersion($version) {
if (!preg_match('/\d+\.\d+\.\d+/', $version)) {
$this->yell('Incorrect version format', 40, 'red');
exit(1);
}
}
}