@@ -2,14 +2,17 @@ package subprojects.train
22
33import jetbrains.buildServer.configs.kotlin.*
44import jetbrains.buildServer.configs.kotlin.buildFeatures.notifications
5+ import jetbrains.buildServer.configs.kotlin.buildSteps.script
56import jetbrains.buildServer.configs.kotlin.failureConditions.BuildFailureOnText
67import jetbrains.buildServer.configs.kotlin.failureConditions.failOnText
8+ import jetbrains.buildServer.configs.kotlin.triggers.finishBuildTrigger
79import subprojects.*
810import subprojects.build.*
911import subprojects.build.samples.*
1012
1113object EapConstants {
1214 const val PUBLISH_EAP_BUILD_TYPE_ID = " KtorPublish_AllEAP"
15+ const val PUBLISH_BUILD_PLUGIN_TYPE_ID = " KtorGradleBuildPlugin_Publish"
1316}
1417
1518object TriggerProjectSamplesOnEAP : Project({
@@ -32,14 +35,46 @@ object TriggerProjectSamplesOnEAP : Project({
3235
3336 params {
3437 defaultGradleParams()
35- param("env.KTOR_VERSION ", "%dep.KtorPublish_AllEAP .build.number%")
3638 param("teamcity.build.skipDependencyBuilds", "true")
39+ param("teamcity.runAsFirstBuild", "true")
3740 }
3841
39- dependencies {
40- artifacts(RelativeId (EapConstants .PUBLISH_EAP_BUILD_TYPE_ID )) {
41- artifactRules = " "
42- buildRule = lastSuccessful()
42+ steps {
43+ script {
44+ name = " Get latest EAP version from Maven metadata"
45+ scriptContent = """
46+ #!/bin/bash
47+ set -e
48+
49+ # Fetch the latest EAP version from the Ktor BOM metadata
50+ METADATA_URL="https://maven.pkg.jetbrains.space/public/p/ktor/eap/io/ktor/ktor-bom/maven-metadata.xml"
51+ echo "Fetching metadata from ${' $' } METADATA_URL"
52+
53+ # Create a temporary file for the metadata
54+ TEMP_FILE=$(mktemp)
55+
56+ # Download the metadata file
57+ if ! curl -s "${' $' } METADATA_URL" -o "${' $' } TEMP_FILE"; then
58+ echo "Failed to download metadata from ${' $' } METADATA_URL"
59+ rm -f "${' $' } TEMP_FILE"
60+ exit 1
61+ fi
62+
63+ # Extract the latest version using grep and sed
64+ # This pattern looks for a <latest>version</latest> tag
65+ LATEST_VERSION=$(grep -o '<latest>[^<]*</latest>' "${' $' } TEMP_FILE" | sed 's/<latest>\(.*\)<\/latest>/\1/')
66+
67+ # Clean up temp file
68+ rm -f "${' $' } TEMP_FILE"
69+
70+ if [ -z "${' $' } LATEST_VERSION" ]; then
71+ echo "Failed to extract latest version from metadata"
72+ exit 1
73+ fi
74+
75+ echo "Latest Ktor EAP version: ${' $' } LATEST_VERSION"
76+ echo "##teamcity[setParameter name='env.KTOR_VERSION' value='${' $' } LATEST_VERSION']"
77+ """ .trimIndent()
4378 }
4479 }
4580
@@ -72,13 +107,15 @@ object TriggerProjectSamplesOnEAP : Project({
72107
73108 params {
74109 param("env.KTOR_VERSION ", "%dep.KtorEAPVersionResolver .env.KTOR_VERSION %")
110+ param("teamcity.build.skipDependencyBuilds", "true")
75111 }
76112
77113 dependencies {
78114 dependency(RelativeId ("KtorEAPVersionResolver ")) {
79115 snapshot {
80116 onDependencyFailure = FailureAction .FAIL_TO_START
81117 onDependencyCancel = FailureAction .FAIL_TO_START
118+ reuseBuilds = ReuseBuilds .SUCCESSFUL
82119 }
83120 }
84121 }
@@ -124,12 +161,22 @@ object TriggerProjectSamplesOnEAP : Project({
124161
125162 params {
126163 param("env.KTOR_VERSION ", "%dep.KtorEAPVersionResolver .env.KTOR_VERSION %")
164+ param("env.USE_LATEST_KTOR_GRADLE_PLUGIN ", "true")
165+
127166 }
128167
129168 requirements {
130169 agent(Agents .OS .Linux , hardwareCapacity = Agents .MEDIUM )
131170 }
132171
172+ triggers {
173+ finishBuildTrigger {
174+ buildType = EapConstants .PUBLISH_BUILD_PLUGIN_TYPE_ID
175+ successfulOnly = true
176+ branchFilter = " +:*"
177+ }
178+ }
179+
133180 dependencies {
134181 dependency(RelativeId ("KtorEAPVersionResolver ")) {
135182 snapshot {
@@ -163,6 +210,14 @@ object TriggerProjectSamplesOnEAP : Project({
163210 equals("env.ANDROID_HOME ", "%android-sdk.location%")
164211 }
165212
213+ triggers {
214+ finishBuildTrigger {
215+ buildType = EapConstants .PUBLISH_EAP_BUILD_TYPE_ID
216+ successfulOnly = true
217+ branchFilter = " +:*"
218+ }
219+ }
220+
166221 dependencies {
167222 dependency(RelativeId ("KtorEAPVersionResolver ")) {
168223 snapshot {
@@ -192,6 +247,7 @@ object TriggerProjectSamplesOnEAP : Project({
192247 defaultGradleParams()
193248 param("env.GIT_BRANCH ", "%teamcity.build.branch%")
194249 param("env.KTOR_VERSION ", "%dep.KtorEAPVersionResolver .env.KTOR_VERSION %")
250+ param("teamcity.build.skipDependencyBuilds", "true")
195251 }
196252
197253 dependencies {
0 commit comments