-
Notifications
You must be signed in to change notification settings - Fork 4.5k
/
project.kt
52 lines (40 loc) · 2.15 KB
/
project.kt
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
import jetbrains.buildServer.configs.kotlin.v2019_2.BuildType
import jetbrains.buildServer.configs.kotlin.v2019_2.Project
const val providerName = "azurerm"
fun AzureRM(environment: String, configuration : ClientConfiguration) : Project {
return Project{
vcsRoot(providerRepository)
var pullRequestBuildConfig = pullRequestBuildConfiguration(environment, configuration)
buildType(pullRequestBuildConfig)
var buildConfigs = buildConfigurationsForServices(services, providerName, environment, configuration)
buildConfigs.forEach { buildConfiguration ->
buildType(buildConfiguration)
}
}
}
fun buildConfigurationsForServices(services: Map<String, String>, providerName : String, environment: String, config : ClientConfiguration): List<BuildType> {
var list = ArrayList<BuildType>()
var locationsForEnv = locations.get(environment)!!
services.forEach { (serviceName, displayName) ->
// TODO: overriding locations
var defaultTestConfig = testConfiguration(defaultParallelism, defaultStartHour)
var testConfig = serviceTestConfigurationOverrides.getOrDefault(serviceName, defaultTestConfig)
var runNightly = runNightly.getOrDefault(environment, false)
var service = serviceDetails(serviceName, displayName, environment)
var buildConfig = service.buildConfiguration(providerName, runNightly, testConfig.startHour, testConfig.parallelism)
buildConfig.params.ConfigureAzureSpecificTestParameters(environment, config, locationsForEnv)
list.add(buildConfig)
}
return list
}
fun pullRequestBuildConfiguration(environment: String, configuration: ClientConfiguration) : BuildType {
var locationsForEnv = locations.get(environment)!!
var pullRequest = pullRequest("! Run Pull Request", environment)
var buildConfiguration = pullRequest.buildConfiguration(providerName)
buildConfiguration.params.ConfigureAzureSpecificTestParameters(environment, configuration, locationsForEnv)
return buildConfiguration
}
class testConfiguration(parallelism: Int, startHour: Int) {
var parallelism = parallelism
var startHour = startHour
}