@@ -2,6 +2,8 @@ package builds
22
33import jetbrains.buildServer.configs.kotlin.BuildType
44import jetbrains.buildServer.configs.kotlin.Project
5+ import jetbrains.buildServer.configs.kotlin.ReuseBuilds
6+ import jetbrains.buildServer.configs.kotlin.buildFeatures.notifications
57import jetbrains.buildServer.configs.kotlin.sequential
68import jetbrains.buildServer.configs.kotlin.toId
79
@@ -16,13 +18,11 @@ enum class JavaPlatform(
1618 JDK_17 (JavaVersion .V_17 , platformITVersions = listOf (" 7.7.0" ))
1719}
1820
19- val DEFAULT_NEO4J_VERSION = Neo4jVersion .V_2025
20-
2121class Build (
2222 name : String ,
2323 forPullRequests : Boolean ,
24+ neo4jVersions : Set <Neo4jVersion >,
2425 forCompatibility : Boolean = false ,
25- neo4jVersion : Neo4jVersion = DEFAULT_NEO4J_VERSION ,
2626 customizeCompletion : BuildType .() -> Unit = {}
2727) :
2828 Project (
@@ -59,46 +59,55 @@ class Build(
5959 Neo4jVersion .V_NONE ,
6060 ),
6161 )
62- dependentBuildType(
63- Maven (
64- " ${name} -unit-tests-${java.javaVersion.version} " ,
65- " unit tests (${java.javaVersion.version} )" ,
66- " test" ,
67- java.javaVersion,
68- neo4jVersion,
69- ),
70- )
62+
7163 dependentBuildType(collectArtifacts(packaging))
7264
7365 parallel {
74- java.platformITVersions.forEach { confluentPlatformVersion ->
75- dependentBuildType(
76- IntegrationTests (
77- " ${name} -integration-tests-${java.javaVersion.version} -${confluentPlatformVersion} -${neo4jVersion.version} " ,
78- " integration tests (${java.javaVersion.version} , ${confluentPlatformVersion} , ${neo4jVersion.version} )" ,
79- java.javaVersion,
80- confluentPlatformVersion,
81- neo4jVersion,
82- ) {
83- dependencies {
84- artifacts(packaging) {
85- artifactRules =
86- """
66+ neo4jVersions.forEach { neo4jVersion ->
67+ sequential {
68+ dependentBuildType(
69+ Maven (
70+ " ${name} -unit-tests-${java.javaVersion.version} -${neo4jVersion.version} " ,
71+ " unit tests (${java.javaVersion.version} , ${neo4jVersion.version} )" ,
72+ " test" ,
73+ java.javaVersion,
74+ neo4jVersion,
75+ ),
76+ )
77+
78+ parallel {
79+ java.platformITVersions.forEach { confluentPlatformVersion ->
80+ dependentBuildType(
81+ IntegrationTests (
82+ " ${name} -integration-tests-${java.javaVersion.version} -${confluentPlatformVersion} -${neo4jVersion.version} " ,
83+ " integration tests (${java.javaVersion.version} , ${confluentPlatformVersion} , ${neo4jVersion.version} )" ,
84+ java.javaVersion,
85+ confluentPlatformVersion,
86+ neo4jVersion,
87+ ) {
88+ dependencies {
89+ artifacts(packaging) {
90+ artifactRules =
91+ """
8792 +:packages/*.jar => docker/plugins
8893 -:packages/*-kc-oss.jar
8994 """
90- .trimIndent()
91- }
92- }
93- },
94- )
95+ .trimIndent()
96+ }
97+ }
98+ },
99+ )
100+ }
101+ }
102+ }
95103 }
96104 }
97105 }
98106 }
99107 }
100108
101- dependentBuildType(complete)
109+ dependentBuildType(
110+ complete, reuse = if (forCompatibility) ReuseBuilds .NO else ReuseBuilds .SUCCESSFUL )
102111 if (! forPullRequests && ! forCompatibility)
103112 dependentBuildType(Release (" ${name} -release" , " release" , DEFAULT_JAVA_VERSION ))
104113 }
@@ -116,6 +125,26 @@ class Build(
116125 buildType(it)
117126 }
118127
128+ if (! forPullRequests) {
129+ complete.features {
130+ notifications {
131+ buildFailedToStart = true
132+ buildFailed = true
133+ firstFailureAfterSuccess = true
134+ firstSuccessAfterFailure = true
135+ buildProbablyHanging = true
136+
137+ branchFilter = " +:main"
138+
139+ notifierSettings = slackNotifier {
140+ connection = SLACK_CONNECTION_ID
141+ sendTo = SLACK_CHANNEL
142+ messageFormat = simpleMessageFormat()
143+ }
144+ }
145+ }
146+ }
147+
119148 complete.apply (customizeCompletion)
120149 },
121150 )
0 commit comments