More parameters for KotlinBuildPusher
This commit is contained in:
committed by
Vasily Levchenko
parent
1723571b3a
commit
caa6ed0d53
@@ -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
@@ -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")
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user