Fixes versions regexes in different parts of infrastructure (#3917)
This commit is contained in:
@@ -42,7 +42,7 @@ open class BuildRegister : DefaultTask() {
|
||||
val buildInfoTokens: Int = 4
|
||||
val additionalInfoTokens: Int = 3
|
||||
val compileTimeSamplesNumber: Int = 2
|
||||
val buildNumberTokens: Int = 3
|
||||
val buildNumberRegex: Regex = "\\d+(\\.\\d+)+(-M\\d)?-(\\w+)-\\d+".toRegex()
|
||||
val performanceServer = "https://kotlin-native-perf-summary.labs.jb.gg"
|
||||
|
||||
private fun sendPostRequest(url: String, body: String) : String {
|
||||
@@ -174,11 +174,8 @@ open class BuildRegister : DefaultTask() {
|
||||
}
|
||||
}
|
||||
|
||||
val buildNumberParts = buildNumber.split("-")
|
||||
if (buildNumberParts.size != buildNumberTokens) {
|
||||
error("Wrong format of build number $buildNumber.")
|
||||
}
|
||||
val (_, buildType, _) = buildNumberParts
|
||||
val matchResult = buildNumberRegex.find(buildNumber) ?: error("Wrong format of build number $buildNumber.")
|
||||
val buildType = matchResult.groups[3]!!.value
|
||||
|
||||
// Send post request to register build.
|
||||
val requestBody = buildString {
|
||||
|
||||
@@ -55,7 +55,7 @@ open class CollisionDetector : DefaultTask() {
|
||||
resolvedConflicts[outputPath] = processedFile
|
||||
} else {
|
||||
// Skip class files from ignored libraries if version of libraries had collision are the same.
|
||||
val versionRegex = "\\d+\\.\\d+(\\.\\d+)?(-\\w+(-\\d+)?)?".toRegex()
|
||||
val versionRegex = "\\d+\\.\\d+(\\.\\d+)?(-M\\d)?(-\\w+(-\\d+)?)?".toRegex()
|
||||
val currentVersion = versionRegex.find(processedFile.name)?.groupValues?.get(0)
|
||||
val collisionLibVersion = versionRegex.find(filesInfo.getValue(outputPath))?.groupValues?.get(0)
|
||||
if (outputPath.endsWith(".class") && currentVersion == collisionLibVersion) {
|
||||
|
||||
@@ -0,0 +1,72 @@
|
||||
/*
|
||||
* Copyright 2010-2019 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
|
||||
package org.jetbrains.build
|
||||
|
||||
import org.jetbrains.report.*
|
||||
import org.jetbrains.report.json.*
|
||||
|
||||
data class Build(val buildNumber: String, val startTime: String, val finishTime: String, val branch: String,
|
||||
val commits: String, val buildType: String, val failuresNumber: Int, val executionTime: String,
|
||||
val compileTime: String, val codeSize: String, val bundleSize: String?) {
|
||||
|
||||
companion object: EntityFromJsonFactory<Build> {
|
||||
override fun create(data: JsonElement): Build {
|
||||
if (data is JsonObject) {
|
||||
val buildNumber = elementToString(data.getRequiredField("buildNumber"), "buildNumber")
|
||||
val startTime = elementToString(data.getRequiredField("startTime"), "startTime")
|
||||
val finishTime = elementToString(data.getRequiredField("finishTime"), "finishTime")
|
||||
val branch = elementToString(data.getRequiredField("branch"), "branch")
|
||||
val commits = elementToString(data.getRequiredField("commits"), "commits")
|
||||
val buildType = elementToString(data.getRequiredField("buildType"), "buildType")
|
||||
val failuresNumber = elementToInt(data.getRequiredField("failuresNumber"), "failuresNumber")
|
||||
val executionTime = elementToString(data.getRequiredField("executionTime"), "executionTime")
|
||||
val compileTime = elementToString(data.getRequiredField("compileTime"), "compileTime")
|
||||
val codeSize = elementToString(data.getRequiredField("codeSize"), "codeSize")
|
||||
val bundleSize = elementToStringOrNull(data.getRequiredField("bundleSize"), "bundleSize")
|
||||
return Build(buildNumber, startTime, finishTime, branch, commits, buildType, failuresNumber, executionTime,
|
||||
compileTime, codeSize, bundleSize)
|
||||
} else {
|
||||
error("Top level entity is expected to be an object. Please, check origin files.")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun formatTime(time: String, targetZone: Int = 3): String {
|
||||
val matchResult = "^\\d{8}T(\\d{2})(\\d{2})\\d{2}((\\+|-)\\d{2})".toRegex().find(time)?.groupValues
|
||||
matchResult?.let {
|
||||
val timeZone = matchResult[3].toInt()
|
||||
val timeDifference = targetZone - timeZone
|
||||
var hours = (matchResult[1].toInt() + timeDifference)
|
||||
if (hours > 23) {
|
||||
hours -= 24
|
||||
}
|
||||
return "${if (hours < 10) "0$hours" else "$hours"}:${matchResult[2]}"
|
||||
} ?: error { "Wrong format of time $startTime" }
|
||||
}
|
||||
val date: String by lazy {
|
||||
val matchResult = "^(\\d{4})(\\d{2})(\\d{2})".toRegex().find(startTime)?.groupValues
|
||||
matchResult?.let { "${matchResult[3]}/${matchResult[2]}/${matchResult[1]}" }
|
||||
?: error { "Wrong format of time $startTime" }
|
||||
}
|
||||
val formattedStartTime: String by lazy {
|
||||
formatTime(startTime)
|
||||
}
|
||||
val formattedFinishTime: String by lazy {
|
||||
formatTime(finishTime)
|
||||
}
|
||||
}
|
||||
@@ -49,7 +49,7 @@ object LocalCache {
|
||||
buildsDescription.forEach {
|
||||
if (!it.isEmpty()) {
|
||||
val buildNumber = it.substringBefore(',')
|
||||
if (!"\\d+(\\.\\d+)+-\\w+-\\d+".toRegex().matches(buildNumber)) {
|
||||
if (!"\\d+(\\.\\d+)+(-M\\d)?-\\w+-\\d+".toRegex().matches(buildNumber)) {
|
||||
error("Build number $buildNumber differs from expected format. File with data for " +
|
||||
"target $onlyTarget could be corrupted.")
|
||||
}
|
||||
|
||||
@@ -263,7 +263,7 @@ fun main(args: Array<String>) {
|
||||
val branchesUrl = "$serverUrl/branches/${parameters["target"]}"
|
||||
|
||||
val branches: Array<String> = JSON.parse(sendGetRequest(branchesUrl))
|
||||
val releaseBranches = branches.filter { "^v\\d+\\.\\d+\\.\\d+-fixes$".toRegex().find(it) != null }
|
||||
val releaseBranches = branches.filter { "^v\\d+(\\.\\d+)+(-M\\d)?-fixes$".toRegex().find(it) != null }
|
||||
|
||||
// Fill autocomplete list.
|
||||
val buildsNumbersUrl = "$serverUrl/buildsNumbers/${parameters["target"]}"
|
||||
|
||||
Reference in New Issue
Block a user