Change logic of release next version

Premium should have the same minor version like free when is released.
Free will be released only with a patch version when premium branch
doesn't exist.
We assume that premium isn't released when branch doesn't exist.
[MAILPOET-3152]
This commit is contained in:
Jan Lysý
2020-10-07 16:52:57 +02:00
committed by Pavel Dohnal
parent 050bd93548
commit b7fde9dd93
4 changed files with 42 additions and 29 deletions

View File

@@ -7,11 +7,15 @@ class ReleaseVersionController {
/** @var JiraController */
private $jira;
/** @var GitHubController */
private $github;
/** @var string */
private $project;
public function __construct(JiraController $jira, $project) {
public function __construct(JiraController $jira, GitHubController $github, $project) {
$this->jira = $jira;
$this->github = $github;
$this->project = $project;
}
@@ -35,39 +39,25 @@ class ReleaseVersionController {
public function determineNextVersion() {
$lastVersion = $this->jira->getLastReleasedVersion();
$partToIncrement = VersionHelper::PATCH;
$partToIncrement = VersionHelper::MINOR;
if ($this->project === JiraController::PROJECT_MAILPOET) {
$freeIncrement = $this->checkProjectVersionIncrement(JiraController::PROJECT_MAILPOET);
$premiumIncrement = $this->checkProjectVersionIncrement(JiraController::PROJECT_PREMIUM);
$isPremiumReleased = $this->github->projectBranchExists(
JiraController::PROJECT_PREMIUM,
GitHubController::RELEASE_SOURCE_BRANCH
);
if (in_array(VersionHelper::MINOR, [$freeIncrement, $premiumIncrement])) {
$partToIncrement = VersionHelper::MINOR;
if (!$isPremiumReleased) {
$partToIncrement = VersionHelper::PATCH;
}
} elseif ($this->project === JiraController::PROJECT_PREMIUM) {
$lastVersion = $this->jira->getLastReleasedVersion(JiraController::PROJECT_MAILPOET);
}
$nextVersion = VersionHelper::incrementVersion($lastVersion['name'], $partToIncrement);
return $nextVersion;
}
private function checkProjectVersionIncrement($project) {
$issues = $this->getUnreleasedDoneIssues($project);
$partToIncrement = VersionHelper::PATCH;
$fieldId = JiraController::VERSION_INCREMENT_FIELD_ID;
foreach ($issues as $issue) {
if (!empty($issue['fields'][$fieldId]['value'])
&& $issue['fields'][$fieldId]['value'] === VersionHelper::MINOR
) {
$partToIncrement = VersionHelper::MINOR;
break;
}
}
return $partToIncrement;
}
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";