Skip to content

Commit b0c0944

Browse files
authored
Merge pull request #148 from ktorio/vgoncharova/ktor-train
update EAP sample triggers
2 parents f5aab93 + 857a2be commit b0c0944

File tree

1 file changed

+61
-5
lines changed

1 file changed

+61
-5
lines changed

.teamcity/src/subprojects/train/TriggerProjectSamplesOnEAP.kt

Lines changed: 61 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,17 @@ package subprojects.train
22

33
import jetbrains.buildServer.configs.kotlin.*
44
import jetbrains.buildServer.configs.kotlin.buildFeatures.notifications
5+
import jetbrains.buildServer.configs.kotlin.buildSteps.script
56
import jetbrains.buildServer.configs.kotlin.failureConditions.BuildFailureOnText
67
import jetbrains.buildServer.configs.kotlin.failureConditions.failOnText
8+
import jetbrains.buildServer.configs.kotlin.triggers.finishBuildTrigger
79
import subprojects.*
810
import subprojects.build.*
911
import subprojects.build.samples.*
1012

1113
object EapConstants {
1214
const val PUBLISH_EAP_BUILD_TYPE_ID = "KtorPublish_AllEAP"
15+
const val PUBLISH_BUILD_PLUGIN_TYPE_ID = "KtorGradleBuildPlugin_Publish"
1316
}
1417

1518
object 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

Comments
 (0)