Change getting next release version

[PREMIUM-147]
This commit is contained in:
Jan Lysý
2020-10-16 10:46:33 +02:00
committed by Pavel Dohnal
parent 713cb18d81
commit 709ccf3857
3 changed files with 32 additions and 2 deletions

View File

@@ -779,7 +779,7 @@ class RoboFile extends \Robo\Tasks {
}
public function releasePublish($version = null) {
$version = $this->releaseVersionGetNext($version);
$version = $this->releaseVersionGetPrepared($version);
return $this->collectionBuilder()
->addCode(function () use ($version) {
return $this->releaseCheckPullRequest($version);
@@ -825,6 +825,15 @@ class RoboFile extends \Robo\Tasks {
return $version;
}
public function releaseVersionGetPrepared($version = null) {
if (!$version) {
$version = $this->getReleaseVersionController()
->getPreparedVersion();
}
$this->validateVersion($version);
return $version;
}
public function releaseVersionAssign($version = null, $opts = []) {
$version = $this->releaseVersionGetNext($version);
try {
@@ -891,7 +900,7 @@ class RoboFile extends \Robo\Tasks {
}
public function releasePublishJira($version = null) {
$version = $this->releaseVersionGetNext($version);
$version = $this->releaseVersionGetPrepared($version);
$jiraController = $this->createJiraController();
$jiraVersion = $jiraController->releaseVersion($version);
$this->say("JIRA version '$jiraVersion[name]' was released.");

View File

@@ -90,6 +90,22 @@ class JiraController {
return reset($version['values']);
}
public function getPreparedReleaseVersion(?string $project = null): array {
$project = $project ?: $this->project;
$response = $this->httpClient->get("project/$project/version", [
'query' => [
'maxResults' => 1,
'orderBy' => '-sequence',
'status' => 'unreleased',
],
]);
$version = json_decode($response->getBody()->getContents(), true);
if (empty($version) || empty($version['values'])) {
throw new \Exception('No prepared version found');
}
return reset($version['values']);
}
/**
* @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/#api-api-3-version-post
*/

View File

@@ -58,6 +58,11 @@ class ReleaseVersionController {
return $nextVersion;
}
public function getPreparedVersion(): string {
$version = $this->jira->getPreparedReleaseVersion();
return $version['name'];
}
private function getUnreleasedDoneIssues($project = null) {
$project = $project ?: $this->project;
$jql = "project = $project AND status = Done AND (fixVersion = EMPTY OR fixVersion IN unreleasedVersions()) AND updated >= -52w";