@@ -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