forked from neo4j/neo4j-kafka-connector
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCommon.kt
More file actions
157 lines (132 loc) · 5.26 KB
/
Common.kt
File metadata and controls
157 lines (132 loc) · 5.26 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
package builds
import jetbrains.buildServer.configs.kotlin.BuildFeatures
import jetbrains.buildServer.configs.kotlin.BuildSteps
import jetbrains.buildServer.configs.kotlin.BuildType
import jetbrains.buildServer.configs.kotlin.CompoundStage
import jetbrains.buildServer.configs.kotlin.FailureAction
import jetbrains.buildServer.configs.kotlin.Requirements
import jetbrains.buildServer.configs.kotlin.ReuseBuilds
import jetbrains.buildServer.configs.kotlin.buildFeatures.PullRequests
import jetbrains.buildServer.configs.kotlin.buildFeatures.commitStatusPublisher
import jetbrains.buildServer.configs.kotlin.buildFeatures.dockerRegistryConnections
import jetbrains.buildServer.configs.kotlin.buildFeatures.freeDiskSpace
import jetbrains.buildServer.configs.kotlin.buildFeatures.pullRequests
import jetbrains.buildServer.configs.kotlin.buildSteps.DockerCommandStep
import jetbrains.buildServer.configs.kotlin.buildSteps.MavenBuildStep
import jetbrains.buildServer.configs.kotlin.buildSteps.dockerCommand
import jetbrains.buildServer.configs.kotlin.buildSteps.maven
import jetbrains.buildServer.configs.kotlin.vcs.GitVcsRoot
const val GITHUB_OWNER = "neo4j"
const val GITHUB_REPOSITORY = "neo4j-kafka-connector"
const val MAVEN_DEFAULT_ARGS =
"--no-transfer-progress --batch-mode -Dmaven.repo.local=%teamcity.build.checkoutDir%/.m2/repository"
const val DEFAULT_BRANCH = "main"
val DEFAULT_JAVA_VERSION = JavaVersion.V_11
const val DEFAULT_CONFLUENT_PLATFORM_VERSION = "7.2.9"
// Look into Root Project's settings -> Connections
const val SLACK_CONNECTION_ID = "PROJECT_EXT_83"
const val SLACK_CHANNEL = "#team-connectors-feed"
// Look into Root Project's settings -> Connections
const val ECR_CONNECTION_ID = "PROJECT_EXT_124"
enum class LinuxSize(val value: String) {
SMALL("small"),
LARGE("large")
}
enum class JavaVersion(val version: String, val dockerImage: String) {
V_11(version = "11", dockerImage = "eclipse-temurin:11-jdk"),
V_17(version = "17", dockerImage = "eclipse-temurin:17-jdk"),
}
enum class Neo4jVersion(val version: String, val dockerImage: String) {
V_NONE("", ""),
V_4_4("4.4", "neo4j:4.4-enterprise"),
V_4_4_DEV(
"4.4-dev",
"535893049302.dkr.ecr.eu-west-1.amazonaws.com/build-service/neo4j:4.4-enterprise-debian-nightly"),
V_5("5", "neo4j:5-enterprise"),
V_5_DEV(
"5-dev",
"535893049302.dkr.ecr.eu-west-1.amazonaws.com/build-service/neo4j:5-enterprise-debian-nightly-bundle"),
V_2025("2025", "neo4j:2025-enterprise"),
V_2025_DEV(
"2025-dev",
"535893049302.dkr.ecr.eu-west-1.amazonaws.com/build-service/neo4j:2025-enterprise-debian-nightly-bundle"),
}
object Neo4jKafkaConnectorVcs :
GitVcsRoot(
{
id("Connectors_Neo4jKafkaConnector_Build")
name = "neo4j-kafka-connector"
url = "git@github.com:neo4j/neo4j-kafka-connector.git"
branch = "refs/heads/$DEFAULT_BRANCH"
branchSpec = "refs/heads/*"
authMethod = defaultPrivateKey { userName = "git" }
},
)
fun Requirements.runOnLinux(size: LinuxSize = LinuxSize.SMALL) {
startsWith("cloud.amazon.agent-name-prefix", "linux-${size.value}")
}
fun BuildType.thisVcs() = vcs {
root(Neo4jKafkaConnectorVcs)
cleanCheckout = true
}
fun BuildFeatures.enableCommitStatusPublisher() = commitStatusPublisher {
vcsRootExtId = Neo4jKafkaConnectorVcs.id.toString()
publisher = github {
githubUrl = "https://api.github.com"
authType = personalToken { token = "%github-commit-status-token%" }
}
}
fun BuildFeatures.enablePullRequests() = pullRequests {
vcsRootExtId = Neo4jKafkaConnectorVcs.id.toString()
provider = github {
authType = token { token = "%github-pull-request-token%" }
filterAuthorRole = PullRequests.GitHubRoleFilter.EVERYBODY
}
}
fun BuildFeatures.requireDiskSpace(size: String = "3gb") = freeDiskSpace {
requiredSpace = size
failBuild = true
}
fun BuildFeatures.loginToECR() = dockerRegistryConnections {
cleanupPushedImages = true
loginToRegistry = on { dockerRegistryId = ECR_CONNECTION_ID }
}
fun CompoundStage.dependentBuildType(bt: BuildType, reuse: ReuseBuilds = ReuseBuilds.SUCCESSFUL) =
buildType(bt) {
onDependencyCancel = FailureAction.CANCEL
onDependencyFailure = FailureAction.FAIL_TO_START
reuseBuilds = reuse
}
fun collectArtifacts(buildType: BuildType): BuildType {
buildType.artifactRules =
"""
+:packaging/target/*.jar => packages
+:packaging/target/*.zip => packages
"""
.trimIndent()
return buildType
}
fun BuildSteps.commonMaven(
javaVersion: JavaVersion,
init: MavenBuildStep.() -> Unit
): MavenBuildStep {
val maven =
this.maven {
// this is the settings name we uploaded to Connectors project
userSettingsSelection = "github"
localRepoScope = MavenBuildStep.RepositoryScope.MAVEN_DEFAULT
dockerImagePlatform = MavenBuildStep.ImagePlatform.Linux
dockerImage = javaVersion.dockerImage
dockerRunParameters = "--volume /var/run/docker.sock:/var/run/docker.sock"
}
init(maven)
return maven
}
fun BuildSteps.pullImage(version: Neo4jVersion): DockerCommandStep =
this.dockerCommand {
name = "pull neo4j test image"
commandType = other {
subCommand = "image"
commandArgs = "pull ${version.dockerImage}"
}
}