More parameters for KotlinBuildPusher

This commit is contained in:
Nikolay Krasko
2019-10-31 19:35:59 +03:00
committed by Vasily Levchenko
parent 1723571b3a
commit caa6ed0d53
2 changed files with 41 additions and 24 deletions
@@ -1,47 +1,57 @@
package org.jetbrains.kotlin package org.jetbrains.kotlin
import org.gradle.api.DefaultTask
import org.gradle.api.tasks.TaskAction
import io.ktor.client.HttpClient import io.ktor.client.HttpClient
import io.ktor.client.call.HttpClientCall
import io.ktor.client.request.get import io.ktor.client.request.get
import io.ktor.client.request.header import io.ktor.client.request.header
import io.ktor.client.request.post import io.ktor.client.request.post
import io.ktor.content.TextContent import io.ktor.content.TextContent
import io.ktor.http.ContentType import io.ktor.http.ContentType
import io.ktor.http.contentType
import kotlinx.coroutines.runBlocking import kotlinx.coroutines.runBlocking
import org.gradle.api.DefaultTask
import org.gradle.api.tasks.Input import org.gradle.api.tasks.Input
import org.gradle.api.tasks.TaskAction
import org.gradle.api.tasks.options.Option import org.gradle.api.tasks.options.Option
@Suppress("UnstableApiUsage")
open class KotlinBuildPusher: DefaultTask() { open class KotlinBuildPusher : DefaultTask() {
@Input @Input
@Option(option = "token", description = "Teamcity Bear token") @Option(option = "token", description = "Teamcity Bear token")
var token:String? = "" var token: String? = ""
@Input @Input
@Option(option = "buildServer", description = "Teamcity server") @Option(option = "buildServer", description = "Teamcity server")
var buildServer:String = "" var buildServer: String = ""
@Input
@Option(option = "compilerConfigurationId", description = "Teamcity configuration id")
var compilerConfigurationId: String = "Kotlin_dev_Compiler"
@Input
@Option(option = "overrideConfigurationId", description = "Teamcity kotlin override configuration id")
var overrideConfigurationId: String = "Kotlin_dev_DeployMavenArtifacts_OverrideNative"
@Input @Input
@Option(option = "kotlinVersion", description = "Kotlin Compiler Version") @Option(option = "kotlinVersion", description = "Kotlin Compiler Version")
var kotlinVersion:String = "" var kotlinVersion: String = ""
@Input @Input
@Option(option = "konanVersion", description = "Kotlin Native Compiler Version") @Option(option = "konanVersion", description = "Kotlin Native Compiler Version")
var konanVersion:String = "" var konanVersion: String = ""
@TaskAction @TaskAction
fun run() { fun run() {
requireNotNull(token, {"Teamcity Bear token required"}) requireNotNull(token, { "Teamcity Bear token required" })
val client = HttpClient() val client = HttpClient()
runBlocking { runBlocking {
val buildId = client.get<String>(scheme = "https", host = buildServer, path = "/app/rest/builds/buildType:(id:Kotlin_dev_Compiler),number:$kotlinVersion/id" ) { val buildId = client.get<String>(
scheme = "https",
host = buildServer,
path = "/app/rest/builds/buildType:(id:$compilerConfigurationId),number:$kotlinVersion/id"
) {
header("Authorization", "Bearer $token") header("Authorization", "Bearer $token")
} }
project.logger.info("pusher: buildId: $buildId") project.logger.info("pusher: buildId: $buildId")
/** /**
* <build> * <build>
* <buildType id="Kotlin_dev_DeployMavenArtifacts_OverrideNative"/> * <buildType id="Kotlin_dev_DeployMavenArtifacts_OverrideNative"/>
@@ -53,9 +63,9 @@ open class KotlinBuildPusher: DefaultTask() {
* </properties> * </properties>
* </build> * </build>
*/ */
val content = buildString{ val content = buildString {
build{ build {
buildType("Kotlin_dev_DeployMavenArtifacts_OverrideNative") buildType(overrideConfigurationId)
lastChanges { lastChanges {
change(buildId) change(buildId)
} }
@@ -65,7 +75,12 @@ open class KotlinBuildPusher: DefaultTask() {
} }
} }
project.logger.info("pusher: content: \"$content\"") project.logger.info("pusher: content: \"$content\"")
val res = client.post<String>(scheme = "https", host = buildServer, path = "/app/rest/buildQueue") {
val res = client.post<String>(
scheme = "https",
host = buildServer,
path = "/app/rest/buildQueue"
) {
header("Authorization", "Bearer $token") header("Authorization", "Bearer $token")
header("Origin", "https://$buildServer") header("Origin", "https://$buildServer")
body = TextContent(content, ContentType.Application.Xml) body = TextContent(content, ContentType.Application.Xml)
@@ -82,10 +97,10 @@ internal fun StringBuilder.paired(tag:String, body:StringBuilder.()->Unit) {
appendln("</$tag>") appendln("</$tag>")
} }
internal fun StringBuilder.build(body:StringBuilder.()->Unit) = paired("build", body) internal fun StringBuilder.build(body: StringBuilder.() -> Unit) = paired("build", body)
internal fun StringBuilder.buildType(id:String) = appendln("<buildType id=\"$id\"/>") internal fun StringBuilder.buildType(id: String) = appendln("<buildType id=\"$id\"/>")
internal fun StringBuilder.lastChanges(body:StringBuilder.()->Unit) = paired("lastChanges", body) internal fun StringBuilder.lastChanges(body: StringBuilder.() -> Unit) = paired("lastChanges", body)
internal fun StringBuilder.change(build:String) = appendln("<change locator=\"build:$build\"/>") internal fun StringBuilder.change(build: String) = appendln("<change locator=\"build:$build\"/>")
internal fun StringBuilder.properties(body:StringBuilder.()->Unit) = paired("properties", body) internal fun StringBuilder.properties(body: StringBuilder.() -> Unit) = paired("properties", body)
internal fun StringBuilder.property(key:String, value:String) = appendln("<property name=\"$key\" value=\"$value\"/>") internal fun StringBuilder.property(key: String, value: String) = appendln("<property name=\"$key\" value=\"$value\"/>")
+3 -1
View File
@@ -630,9 +630,11 @@ task clean {
} }
} }
task pusher(type: KotlinBuildPusher){ task pusher(type: KotlinBuildPusher){
kotlinVersion = project.kotlinVersion kotlinVersion = project.kotlinVersion
konanVersion = KonanVersionGeneratedKt.getCurrentKonanVersion() konanVersion = KonanVersionGeneratedKt.getCurrentKonanVersion()
buildServer = "teamcity.jetbrains.com" buildServer = "teamcity.jetbrains.com"
compilerConfigurationId = "Kotlin_dev_Compiler"
overrideConfigurationId = "Kotlin_dev_DeployMavenArtifacts_OverrideNative"
token = project.findProperty("teamcityBearToken") ?: System.getenv("TEAMCITY_BEAR_TOKEN") token = project.findProperty("teamcityBearToken") ?: System.getenv("TEAMCITY_BEAR_TOKEN")
} }