Skip to content

Commit 6dcbb47

Browse files
committed
update Ktor EAP trigger settings: refine plugin and framework metadata fetch logic, improve version resolution and validation steps, and enhance fallback mechanisms for missing or invalid versions
1 parent 0cfba00 commit 6dcbb47

File tree

1 file changed

+53
-25
lines changed

1 file changed

+53
-25
lines changed

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

Lines changed: 53 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,8 @@ fun BuildSteps.createEAPGradlePluginInitScript() {
176176
177177
if curl -fsSL --connect-timeout 10 --max-time 20 --retry 3 --retry-delay 2 "${'$'}PLUGIN_METADATA_URL" -o "${'$'}TEMP_METADATA" 2>/dev/null; then
178178
echo "Successfully fetched plugin metadata"
179+
echo "Plugin metadata content:"
180+
cat "${'$'}TEMP_METADATA"
179181
180182
# Check if the exact framework version exists as plugin version
181183
if grep -q ">%env.KTOR_VERSION%<" "${'$'}TEMP_METADATA"; then
@@ -184,19 +186,24 @@ fun BuildSteps.createEAPGradlePluginInitScript() {
184186
else
185187
echo "Exact plugin version %env.KTOR_VERSION% not found"
186188
187-
# Try to find latest EAP plugin version that matches major.minor
188-
FRAMEWORK_BASE_VERSION=$(echo "%env.KTOR_VERSION%" | sed 's/-eap-.*//')
189-
echo "Looking for plugin versions matching base ${'$'}FRAMEWORK_BASE_VERSION..."
189+
# Try to find latest EAP plugin version - look for the latest tag first
190+
LATEST_PLUGIN_VERSION=$(grep -o "<latest>[^<]*</latest>" "${'$'}TEMP_METADATA" | sed 's/<latest>//;s/<\/latest>//')
190191
191-
# Extract latest EAP version for the same major.minor
192-
LATEST_PLUGIN_EAP=$(grep -o ">${'$'}{FRAMEWORK_BASE_VERSION}-eap-[0-9]*<" "${'$'}TEMP_METADATA" | sed 's/[><]//g' | sort -V | tail -n 1)
193-
194-
if [ -n "${'$'}LATEST_PLUGIN_EAP" ]; then
195-
echo "Found compatible plugin EAP version: ${'$'}LATEST_PLUGIN_EAP"
196-
echo "##teamcity[setParameter name='env.KTOR_GRADLE_PLUGIN_VERSION' value='${'$'}LATEST_PLUGIN_EAP']"
192+
if [ -n "${'$'}LATEST_PLUGIN_VERSION" ]; then
193+
echo "Found latest plugin version from metadata: ${'$'}LATEST_PLUGIN_VERSION"
194+
echo "##teamcity[setParameter name='env.KTOR_GRADLE_PLUGIN_VERSION' value='${'$'}LATEST_PLUGIN_VERSION']"
197195
else
198-
echo "No compatible EAP plugin version found, will use framework version and let Gradle handle resolution"
199-
echo "##teamcity[setParameter name='env.KTOR_GRADLE_PLUGIN_VERSION' value='%env.KTOR_VERSION%']"
196+
# Fallback: extract the highest version number from all versions
197+
echo "No <latest> tag found, extracting highest version from all versions"
198+
LATEST_PLUGIN_VERSION=$(grep -o ">[0-9][^<]*-eap-[0-9]*<" "${'$'}TEMP_METADATA" | sed 's/[><]//g' | sort -V | tail -n 1)
199+
200+
if [ -n "${'$'}LATEST_PLUGIN_VERSION" ]; then
201+
echo "Found latest plugin EAP version: ${'$'}LATEST_PLUGIN_VERSION"
202+
echo "##teamcity[setParameter name='env.KTOR_GRADLE_PLUGIN_VERSION' value='${'$'}LATEST_PLUGIN_VERSION']"
203+
else
204+
echo "No compatible EAP plugin version found, will use framework version and let Gradle handle resolution"
205+
echo "##teamcity[setParameter name='env.KTOR_GRADLE_PLUGIN_VERSION' value='%env.KTOR_VERSION%']"
206+
fi
200207
fi
201208
fi
202209
else
@@ -207,7 +214,7 @@ fun BuildSteps.createEAPGradlePluginInitScript() {
207214
rm -f "${'$'}TEMP_METADATA"
208215
fi
209216
210-
echo "Final plugin version to use: ${'$'}{KTOR_GRADLE_PLUGIN_VERSION:-unknown}"
217+
echo "Final plugin version to use: %env.KTOR_GRADLE_PLUGIN_VERSION%"
211218
""".trimIndent()
212219
}
213220

@@ -220,6 +227,13 @@ fun BuildSteps.createEAPGradlePluginInitScript() {
220227
echo "Using Ktor Framework EAP version: %env.KTOR_VERSION%"
221228
echo "Using Ktor Gradle Plugin version: %env.KTOR_GRADLE_PLUGIN_VERSION%"
222229
230+
# Validate that we have a proper plugin version
231+
if [[ "%env.KTOR_GRADLE_PLUGIN_VERSION%" =~ ^-eap- ]]; then
232+
echo "ERROR: Invalid plugin version detected: %env.KTOR_GRADLE_PLUGIN_VERSION%"
233+
echo "Plugin version should not start with '-eap-', falling back to framework version"
234+
echo "##teamcity[setParameter name='env.KTOR_GRADLE_PLUGIN_VERSION' value='%env.KTOR_VERSION%']"
235+
fi
236+
223237
# Fix build.gradle.kts files in Gradle plugin samples to replace version catalog aliases
224238
echo "Fixing build.gradle.kts files in gradle plugin samples..."
225239
find samples -name "build.gradle.kts" -type f 2>/dev/null | while read build_file; do
@@ -732,9 +746,16 @@ object TriggerProjectSamplesOnEAP : Project({
732746
733747
if curl -fsSL --connect-timeout 10 --max-time 30 --retry 3 --retry-delay 2 "${'$'}METADATA_URL" -o "${'$'}TEMP_METADATA" 2>/dev/null; then
734748
echo "Successfully fetched framework metadata"
749+
echo "Framework metadata content:"
750+
cat "${'$'}TEMP_METADATA"
751+
752+
# Extract the latest EAP version - try latest tag first
753+
LATEST_EAP_VERSION=$(grep -o "<latest>[^<]*</latest>" "${'$'}TEMP_METADATA" | sed 's/<latest>//;s/<\/latest>//')
735754
736-
# Extract the latest EAP version
737-
LATEST_EAP_VERSION=$(grep -o ">.*-eap-[0-9]*<" "${'$'}TEMP_METADATA" | sed 's/[><]//g' | sort -V | tail -n 1)
755+
if [ -z "${'$'}LATEST_EAP_VERSION" ]; then
756+
# Fallback to extracting from versions list
757+
LATEST_EAP_VERSION=$(grep -o ">[0-9][^<]*-eap-[0-9]*<" "${'$'}TEMP_METADATA" | sed 's/[><]//g' | sort -V | tail -n 1)
758+
fi
738759
739760
if [ -n "${'$'}LATEST_EAP_VERSION" ]; then
740761
echo "Found latest EAP framework version: ${'$'}LATEST_EAP_VERSION"
@@ -797,6 +818,8 @@ object TriggerProjectSamplesOnEAP : Project({
797818
798819
if curl -fsSL --connect-timeout 10 --max-time 30 --retry 3 --retry-delay 2 "${'$'}PLUGIN_METADATA_URL" -o "${'$'}TEMP_METADATA" 2>/dev/null; then
799820
echo "Successfully fetched plugin metadata"
821+
echo "Plugin metadata content:"
822+
cat "${'$'}TEMP_METADATA"
800823
801824
# Check if the exact framework version exists as plugin version
802825
if grep -q ">${'$'}FRAMEWORK_VERSION<" "${'$'}TEMP_METADATA"; then
@@ -805,19 +828,24 @@ object TriggerProjectSamplesOnEAP : Project({
805828
else
806829
echo "Exact plugin version ${'$'}FRAMEWORK_VERSION not found"
807830
808-
# Try to find latest EAP plugin version that matches major.minor
809-
FRAMEWORK_BASE_VERSION=$(echo "${'$'}FRAMEWORK_VERSION" | sed 's/-eap-.*//')
810-
echo "Looking for plugin versions matching base ${'$'}FRAMEWORK_BASE_VERSION..."
811-
812-
# Extract latest EAP version for the same major.minor
813-
LATEST_PLUGIN_EAP=$(grep -o ">${'$'}{FRAMEWORK_BASE_VERSION}-eap-[0-9]*<" "${'$'}TEMP_METADATA" | sed 's/[><]//g' | sort -V | tail -n 1)
831+
# Try to find latest EAP plugin version - look for the latest tag first
832+
LATEST_PLUGIN_VERSION=$(grep -o "<latest>[^<]*</latest>" "${'$'}TEMP_METADATA" | sed 's/<latest>//;s/<\/latest>//')
814833
815-
if [ -n "${'$'}LATEST_PLUGIN_EAP" ]; then
816-
echo "Found compatible plugin EAP version: ${'$'}LATEST_PLUGIN_EAP"
817-
PLUGIN_VERSION="${'$'}LATEST_PLUGIN_EAP"
834+
if [ -n "${'$'}LATEST_PLUGIN_VERSION" ]; then
835+
echo "Found latest plugin version from metadata: ${'$'}LATEST_PLUGIN_VERSION"
836+
PLUGIN_VERSION="${'$'}LATEST_PLUGIN_VERSION"
818837
else
819-
echo "No compatible EAP plugin version found, using framework version: ${'$'}FRAMEWORK_VERSION"
820-
PLUGIN_VERSION="${'$'}FRAMEWORK_VERSION"
838+
# Fallback: extract the highest version number from all versions
839+
echo "No <latest> tag found, extracting highest version from all versions"
840+
LATEST_PLUGIN_VERSION=$(grep -o ">[0-9][^<]*-eap-[0-9]*<" "${'$'}TEMP_METADATA" | sed 's/[><]//g' | sort -V | tail -n 1)
841+
842+
if [ -n "${'$'}LATEST_PLUGIN_VERSION" ]; then
843+
echo "Found latest plugin EAP version: ${'$'}LATEST_PLUGIN_VERSION"
844+
PLUGIN_VERSION="${'$'}LATEST_PLUGIN_VERSION"
845+
else
846+
echo "No compatible EAP plugin version found, using framework version: ${'$'}FRAMEWORK_VERSION"
847+
PLUGIN_VERSION="${'$'}FRAMEWORK_VERSION"
848+
fi
821849
fi
822850
fi
823851

0 commit comments

Comments
 (0)