From 9d2ec52a958ca2fcd33ab9640fd9d0c190f54069 Mon Sep 17 00:00:00 2001 From: "Dmitriy.Panov" Date: Fri, 23 Nov 2018 15:43:22 +0300 Subject: [PATCH] IJI-9: fix success if no changes are found --- .../intellij/build/images/sync/checkIcons.kt | 28 +++++++++++++------ .../intellij/build/images/sync/reportUtils.kt | 5 ++-- .../intellij/build/images/sync/teamCity.kt | 7 +++-- 3 files changed, 26 insertions(+), 14 deletions(-) diff --git a/platform/build-scripts/icons/src/org/jetbrains/intellij/build/images/sync/checkIcons.kt b/platform/build-scripts/icons/src/org/jetbrains/intellij/build/images/sync/checkIcons.kt index 0aeb2485f8c4..fcf96efd4035 100644 --- a/platform/build-scripts/icons/src/org/jetbrains/intellij/build/images/sync/checkIcons.kt +++ b/platform/build-scripts/icons/src/org/jetbrains/intellij/build/images/sync/checkIcons.kt @@ -33,17 +33,29 @@ internal fun checkIcons(context: Context = Context(), loggerImpl: Consumer searchForChangedIconsByDesigners(context, devRepoVcsRoots) + context.iconsCommitHashesToSync.isNotEmpty() -> searchForChangedIconsByDesigners(context) context.devIconsCommitHashesToSync.isNotEmpty() -> searchForChangedIconsByDev(context, devRepoVcsRoots) else -> searchForAllChangedIcons(context, devRepoVcsRoots) } } - if (context.devChanges().isEmpty() && context.iconsChanges().isEmpty()) { - log("No changes are found") - } - else { - syncIcons(context) - report(context, skippedDirs.size) + when { + !context.iconsSyncRequired() && !context.devSyncRequired() -> { + if (isUnderTeamCity() && isPreviousBuildFailed()) { + context.doFail("No changes are found") + } + else { + log("No changes are found") + } + } + else -> { + syncIcons(context) + val report = report(context, skippedDirs.size) + if (isUnderTeamCity() && context.isFail()) { + context.doFail(report) + } else { + log(report) + } + } } } @@ -94,7 +106,7 @@ private fun asIcon(files: Collection, repo: File, root: File) = files .filter { ImageExtension.fromName(it) != null } .map { repo.resolve(it).toRelativeString(root) } -private fun searchForChangedIconsByDesigners(context: Context, devRepoVcsRoots: List) { +private fun searchForChangedIconsByDesigners(context: Context) { val iterator = context.iconsCommitHashesToSync.iterator() while (iterator.hasNext()) { val commit = iterator.next() diff --git a/platform/build-scripts/icons/src/org/jetbrains/intellij/build/images/sync/reportUtils.kt b/platform/build-scripts/icons/src/org/jetbrains/intellij/build/images/sync/reportUtils.kt index 6f4635f3919a..69ce153f4781 100644 --- a/platform/build-scripts/icons/src/org/jetbrains/intellij/build/images/sync/reportUtils.kt +++ b/platform/build-scripts/icons/src/org/jetbrains/intellij/build/images/sync/reportUtils.kt @@ -6,7 +6,7 @@ import java.util.* import java.util.stream.Stream import kotlin.streams.toList -internal fun report(context: Context, skipped: Int) { +internal fun report(context: Context, skipped: Int) : String { val (devIcons, icons) = context.devIcons.size to context.icons.size if (isUnderTeamCity()) { findCommitsToSync(context) @@ -48,8 +48,7 @@ internal fun report(context: Context, skipped: Int) { if (context.createdReviews.isNotEmpty()) { report += "\nCreated reviews: ${context.createdReviews.joinToString { it.url }}" } - log(report) - if (isUnderTeamCity() && context.isFail()) context.doFail(report) + return report } private fun findCommitsToSync(context: Context) { diff --git a/platform/build-scripts/icons/src/org/jetbrains/intellij/build/images/sync/teamCity.kt b/platform/build-scripts/icons/src/org/jetbrains/intellij/build/images/sync/teamCity.kt index 7d4b4808b9f3..ecacff3e1897 100644 --- a/platform/build-scripts/icons/src/org/jetbrains/intellij/build/images/sync/teamCity.kt +++ b/platform/build-scripts/icons/src/org/jetbrains/intellij/build/images/sync/teamCity.kt @@ -32,8 +32,7 @@ internal fun isNotificationRequired(context: Context) = // remind of failure every day (context.isFail() || // or check previous build and notify on fail -> success - teamCityGet("builds?locator=buildType:$BUILD_CONF,count:1") - .contains("status=\"FAILURE\"")) + isPreviousBuildFailed()) internal val DEFAULT_INVESTIGATOR by lazy { System.getProperty("intellij.icons.sync.default.investigator")?.takeIf { it.isNotBlank() } ?: error("Specify default investigator") @@ -105,4 +104,6 @@ internal fun triggeredBy() = System.getProperty("teamcity.build.triggeredBy.user ?.let { teamCityGet("users/username:$it/email") } ?.removeSuffix(System.lineSeparator()) -internal fun isScheduled() = System.getProperty("teamcity.build.triggeredBy")?.contains("Schedule") == true \ No newline at end of file +internal fun isScheduled() = System.getProperty("teamcity.build.triggeredBy")?.contains("Schedule") == true + +internal fun isPreviousBuildFailed() = teamCityGet("builds?locator=buildType:$BUILD_CONF,count:1").contains("status=\"FAILURE\"") \ No newline at end of file