From c9b25cbb2786bd1193ab0b47b57686671bd88d5d Mon Sep 17 00:00:00 2001
From: Alex Plate <aleksei.plate@jetbrains.com>
Date: Tue, 4 Mar 2025 17:38:12 +0200
Subject: [PATCH] Remove experimental TC releases

---
 .../CreateNewReleaseBranchFromMaster.kt       |  72 ------------
 .../_Self/buildTypes/PrintReleaseBranch.kt    |  42 -------
 .../_Self/buildTypes/ReleaseEapFromBranch.kt  | 110 ------------------
 .teamcity/_Self/subprojects/Releases.kt       |   7 --
 scripts/build.gradle.kts                      |   7 --
 .../calculateNewEapVersionFromBranch.kt       |  49 --------
 6 files changed, 287 deletions(-)
 delete mode 100644 .teamcity/_Self/buildTypes/CreateNewReleaseBranchFromMaster.kt
 delete mode 100644 .teamcity/_Self/buildTypes/PrintReleaseBranch.kt
 delete mode 100644 .teamcity/_Self/buildTypes/ReleaseEapFromBranch.kt
 delete mode 100644 scripts/src/main/kotlin/scripts/release/calculateNewEapVersionFromBranch.kt

diff --git a/.teamcity/_Self/buildTypes/CreateNewReleaseBranchFromMaster.kt b/.teamcity/_Self/buildTypes/CreateNewReleaseBranchFromMaster.kt
deleted file mode 100644
index 3c0348053..000000000
--- a/.teamcity/_Self/buildTypes/CreateNewReleaseBranchFromMaster.kt
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright 2003-2024 The IdeaVim authors
- *
- * Use of this source code is governed by an MIT-style
- * license that can be found in the LICENSE.txt file or at
- * https://opensource.org/licenses/MIT.
- */
-
-package _Self.buildTypes
-
-import _Self.IdeaVimBuildType
-import jetbrains.buildServer.configs.kotlin.v2019_2.CheckoutMode
-import jetbrains.buildServer.configs.kotlin.v2019_2.DslContext
-import jetbrains.buildServer.configs.kotlin.v2019_2.buildFeatures.sshAgent
-import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.script
-
-object CreateNewReleaseBranchFromMaster : IdeaVimBuildType({
-  name = "EXP: Create new release branch from master"
-
-  vcs {
-    root(DslContext.settingsRoot)
-    branchFilter = "+:<default>"
-
-    checkoutMode = CheckoutMode.AUTO
-  }
-
-  steps {
-    script {
-      name = "Calculate next potential release version"
-      scriptContent = """
-        #!/bin/bash
-
-        # Fetch all remote branches
-        git fetch --all
-
-        # Get a list of all branches matching the pattern releases/x.y.z
-        branches=${'$'}(git branch -r | grep -oE 'releases/[0-9]+\.[0-9]+\.x')
-
-        # If no matching branches are found, print a message and exit
-        if [[ -z "${'$'}branches" ]]; then
-            echo "No release branches found"
-            exit 1
-        fi
-
-        # Find the largest release version
-        largest_release=${'$'}(echo "${'$'}branches" | sort -V | tail -n 1)
-
-        # Print the largest release
-        echo "Largest release branch: ${'$'}largest_release"
-        echo "##teamcity[setParameter name='env.POTENTIAL_VERSION' value='${'$'}largest_release']"
-      """.trimIndent()
-    }
-
-    script {
-      name = "Show potential release version"
-      scriptContent = """
-                #!/bin/bash
-                echo "Calculated or user-provided parameter value is: %env.POTENTIAL_VERSION%"
-            """.trimIndent()
-    }
-  }
-
-  params {
-    param("env.POTENTIAL_VERSION", "")
-  }
-
-  features {
-    sshAgent {
-      teamcitySshKey = "IdeaVim ssh keys"
-    }
-  }
-})
\ No newline at end of file
diff --git a/.teamcity/_Self/buildTypes/PrintReleaseBranch.kt b/.teamcity/_Self/buildTypes/PrintReleaseBranch.kt
deleted file mode 100644
index 97c61e951..000000000
--- a/.teamcity/_Self/buildTypes/PrintReleaseBranch.kt
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright 2003-2024 The IdeaVim authors
- *
- * Use of this source code is governed by an MIT-style
- * license that can be found in the LICENSE.txt file or at
- * https://opensource.org/licenses/MIT.
- */
-
-package _Self.buildTypes
-
-import _Self.IdeaVimBuildType
-import _Self.vcsRoots.ReleasesVcsRoot
-import jetbrains.buildServer.configs.kotlin.v2019_2.CheckoutMode
-import jetbrains.buildServer.configs.kotlin.v2019_2.buildFeatures.sshAgent
-import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.script
-
-object PrintReleaseBranch : IdeaVimBuildType({
-  name = "EXP: Print release branch"
-
-  vcs {
-    root(ReleasesVcsRoot)
-    branchFilter = "+:heads/releases/*"
-
-    checkoutMode = CheckoutMode.AUTO
-  }
-
-  steps {
-
-    script {
-      name = "Print current branch"
-      scriptContent = """
-                echo "Current branch is: %teamcity.build.branch%"
-            """.trimIndent()
-    }
-  }
-
-  features {
-    sshAgent {
-      teamcitySshKey = "IdeaVim ssh keys"
-    }
-  }
-})
\ No newline at end of file
diff --git a/.teamcity/_Self/buildTypes/ReleaseEapFromBranch.kt b/.teamcity/_Self/buildTypes/ReleaseEapFromBranch.kt
deleted file mode 100644
index 9d833624c..000000000
--- a/.teamcity/_Self/buildTypes/ReleaseEapFromBranch.kt
+++ /dev/null
@@ -1,110 +0,0 @@
-package _Self.buildTypes
-
-import _Self.Constants.EAP_CHANNEL
-import _Self.Constants.RELEASE_EAP
-import _Self.IdeaVimBuildType
-import _Self.vcsRoots.ReleasesVcsRoot
-import jetbrains.buildServer.configs.kotlin.v2019_2.CheckoutMode
-import jetbrains.buildServer.configs.kotlin.v2019_2.ParameterDisplay
-import jetbrains.buildServer.configs.kotlin.v2019_2.buildFeatures.sshAgent
-import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.gradle
-import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.script
-import jetbrains.buildServer.configs.kotlin.v2019_2.failureConditions.BuildFailureOnMetric
-import jetbrains.buildServer.configs.kotlin.v2019_2.failureConditions.failOnMetricChange
-
-object ReleaseEapFromBranch : IdeaVimBuildType({
-  name = "EXP: Publish EAP Build from branch"
-  description = "Build and publish EAP of IdeaVim plugin"
-
-  artifactRules = "build/distributions/*"
-
-  params {
-    param("env.ORG_GRADLE_PROJECT_ideaVersion", RELEASE_EAP)
-    password(
-      "env.ORG_GRADLE_PROJECT_publishToken",
-      "credentialsJSON:61a36031-4da1-4226-a876-b8148bf32bde",
-      label = "Password"
-    )
-    param("env.ORG_GRADLE_PROJECT_publishChannels", EAP_CHANNEL)
-    password(
-      "env.ORG_GRADLE_PROJECT_slackUrl",
-      "credentialsJSON:a8ab8150-e6f8-4eaf-987c-bcd65eac50b5",
-      label = "Slack Token"
-    )
-    password(
-      "env.YOUTRACK_TOKEN",
-      "credentialsJSON:2479995b-7b60-4fbb-b095-f0bafae7f622",
-      display = ParameterDisplay.HIDDEN
-    )
-  }
-
-  vcs {
-    root(ReleasesVcsRoot)
-    branchFilter = """
-      +:heads/releases/*
-      """.trimIndent()
-
-    checkoutMode = CheckoutMode.AUTO
-  }
-
-  steps {
-    script {
-      name = "Pull git tags"
-      scriptContent = "git fetch --tags origin"
-    }
-    script {
-      name = "Pull git history"
-      scriptContent = "git fetch --unshallow"
-    }
-    gradle {
-      name = "Calculate new eap version from branch"
-      tasks = "scripts:calculateNewEapVersionFromBranch"
-      jdkHome = "/usr/lib/jvm/java-21-amazon-corretto"
-    }
-    gradle {
-      name = "Set TeamCity build number"
-      tasks = "scripts:setTeamCityBuildNumber"
-      jdkHome = "/usr/lib/jvm/java-21-amazon-corretto"
-    }
-    gradle {
-      name = "Add release tag"
-      tasks = "scripts:addReleaseTag"
-      jdkHome = "/usr/lib/jvm/java-21-amazon-corretto"
-    }
-    gradle {
-      name = "Publish plugin"
-      tasks = "publishPlugin"
-      jdkHome = "/usr/lib/jvm/java-21-amazon-corretto"
-    }
-    script {
-      name = "Push changes to the repo"
-      scriptContent = """
-      branch=$(git branch --show-current)
-      echo current branch is ${'$'}branch
-      git push origin %build.number%
-      """.trimIndent()
-    }
-    gradle {
-      name = "YouTrack post release actions"
-      tasks = "scripts:eapReleaseActions"
-    }
-  }
-
-  features {
-    sshAgent {
-      teamcitySshKey = "IdeaVim ssh keys"
-    }
-  }
-
-  failureConditions {
-    failOnMetricChange {
-      metric = BuildFailureOnMetric.MetricType.ARTIFACT_SIZE
-      threshold = 5
-      units = BuildFailureOnMetric.MetricUnit.PERCENTS
-      comparison = BuildFailureOnMetric.MetricComparison.DIFF
-      compareTo = build {
-        buildRule = lastSuccessful()
-      }
-    }
-  }
-})
diff --git a/.teamcity/_Self/subprojects/Releases.kt b/.teamcity/_Self/subprojects/Releases.kt
index 0a01f6dd7..bffe2fd4e 100644
--- a/.teamcity/_Self/subprojects/Releases.kt
+++ b/.teamcity/_Self/subprojects/Releases.kt
@@ -1,11 +1,8 @@
 package _Self.subprojects
 
-import _Self.buildTypes.CreateNewReleaseBranchFromMaster
-import _Self.buildTypes.PrintReleaseBranch
 import _Self.buildTypes.PublishVimEngine
 import _Self.buildTypes.ReleaseDev
 import _Self.buildTypes.ReleaseEap
-import _Self.buildTypes.ReleaseEapFromBranch
 import _Self.buildTypes.ReleaseMajor
 import _Self.buildTypes.ReleaseMinor
 import _Self.buildTypes.ReleasePatch
@@ -41,8 +38,4 @@ object Releases : Project({
   buildType(ReleaseEap)
   buildType(ReleaseDev)
   buildType(PublishVimEngine)
-
-  buildType(CreateNewReleaseBranchFromMaster)
-  buildType(PrintReleaseBranch)
-  buildType(ReleaseEapFromBranch)
 })
diff --git a/scripts/build.gradle.kts b/scripts/build.gradle.kts
index 6f8d7fe9c..edd8b65a6 100644
--- a/scripts/build.gradle.kts
+++ b/scripts/build.gradle.kts
@@ -107,13 +107,6 @@ tasks.register("calculateNewEapVersion", JavaExec::class) {
   args = listOf("${rootProject.rootDir}")
 }
 
-tasks.register("calculateNewEapVersionFromBranch", JavaExec::class) {
-  group = "release"
-  mainClass.set("scripts.release.CalculateNewEapVersionFromBranchKt")
-  classpath = sourceSets["main"].runtimeClasspath
-  args = listOf("${rootProject.rootDir}")
-}
-
 tasks.register("calculateNewDevVersion", JavaExec::class) {
   group = "release"
   mainClass.set("scripts.release.CalculateNewDevVersionKt")
diff --git a/scripts/src/main/kotlin/scripts/release/calculateNewEapVersionFromBranch.kt b/scripts/src/main/kotlin/scripts/release/calculateNewEapVersionFromBranch.kt
deleted file mode 100644
index e65a67f99..000000000
--- a/scripts/src/main/kotlin/scripts/release/calculateNewEapVersionFromBranch.kt
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright 2003-2023 The IdeaVim authors
- *
- * Use of this source code is governed by an MIT-style
- * license that can be found in the LICENSE.txt file or at
- * https://opensource.org/licenses/MIT.
- */
-
-package scripts.release
-
-fun main(args: Array<String> ) {
-  val projectDir = args[0]
-  println("Working directory: $projectDir")
-  val branch = withRepo(projectDir) { it.branch }
-  val (majorBranchVersion, minorBranchVersion) = versions(branch)
-  val versions = getVersionsExistingVersionsFor(majorBranchVersion, minorBranchVersion, projectDir)
-  val maxExistingVersion = versions.keys.maxOrNull()
-
-  val nextVersion = if (maxExistingVersion != null) {
-    if (maxExistingVersion.suffixTokens.isEmpty()) {
-      maxExistingVersion.nextPatch().withSuffix("eap.1").value
-    }
-    else {
-      check(maxExistingVersion.suffixTokens.size == 2) {
-        "We should have exactly two suffix tokens. Current tokens: ${maxExistingVersion.suffixTokens.toList()}"
-      }
-      check(maxExistingVersion.suffixTokens[0] == "eap") {
-        "First suffix token must be eap. Current tokens: ${maxExistingVersion.suffixTokens.toList()}"
-      }
-
-      val newEapNumber = maxExistingVersion.suffixTokens[1].toInt().inc()
-      maxExistingVersion.withSuffix("eap.$newEapNumber").value
-    }
-  } else {
-    "$majorBranchVersion.$minorBranchVersion.0-eap.1"
-  }
-
-
-  println("Next eap version: $nextVersion")
-  println("##teamcity[setParameter name='env.ORG_GRADLE_PROJECT_version' value='$nextVersion']")
-}
-
-private val regex = "releases/(\\d+)\\.(\\d+)\\.x".toRegex()
-private fun versions(branchName: String): Pair<Int, Int> {
-  val match = regex.matchEntire(branchName) ?: error("Cannot match branch: $branchName")
-  val major = match.groups[1]
-  val minor = match.groups[2]
-  return major!!.value.toInt() to minor!!.value.toInt()
-}
\ No newline at end of file