diff --git a/main/resources/teamcity/settings.kts b/main/resources/teamcity/settings.kts index 94ad36b..437aee6 100755 --- a/main/resources/teamcity/settings.kts +++ b/main/resources/teamcity/settings.kts @@ -50,18 +50,18 @@ project { reuseBuilds = ReuseBuilds.NO } } - val deploys = platforms.map { deploy(it, deployVersion) } + val deploys = platforms.associateWith { deploy(it, deployVersion) } val deployPublish = deployPublish(deployVersion).apply { dependsOnSnapshot(buildAll, onFailure = FailureAction.IGNORE) dependsOnSnapshot(BUILD_CREATE_STAGING_REPO_ABSOLUTE_ID) { reuseBuilds = ReuseBuilds.NO } - deploys.forEach { - dependsOnSnapshot(it) - } + deploys + .filter { (platform, _) -> !singleAgentMacDeployment || platform == Platform.MacOS } + .forEach { dependsOnSnapshot(it.value) } } - buildTypesOrder = listOf(buildAll, buildVersion, *builds.toTypedArray(), deployPublish, deployVersion, *deploys.toTypedArray()) + buildTypesOrder = listOf(buildAll, buildVersion, *builds.toTypedArray(), deployPublish, deployVersion, *deploys.values.toTypedArray()) additionalConfiguration() } diff --git a/main/resources/teamcity/utils.kt b/main/resources/teamcity/utils.kt index 663bb6f..7d86dc9 100644 --- a/main/resources/teamcity/utils.kt +++ b/main/resources/teamcity/utils.kt @@ -10,6 +10,7 @@ const val teamcitySuffixParameter = "teamcitySuffix" const val releaseVersionParameter = "releaseVersion" const val libraryStagingRepoDescription = "<>" +const val singleAgentMacDeployment: Boolean = <> val platforms = Platform.values() const val jdk = "<>" diff --git a/main/src/kotlinx/team/infra/Publishing.kt b/main/src/kotlinx/team/infra/Publishing.kt index d1a643e..6308a07 100644 --- a/main/src/kotlinx/team/infra/Publishing.kt +++ b/main/src/kotlinx/team/infra/Publishing.kt @@ -33,6 +33,11 @@ open class PublishingConfiguration @Inject constructor(val objects: ObjectFactor fun include(vararg name: String) { includeProjects.addAll(name) } + + /** + * Build all artifacts for publishing and deploy them from a single mac agent. + */ + var singleAgentMacDeployment: Boolean = false } open class SonatypeConfiguration { diff --git a/main/src/kotlinx/team/infra/TeamCity.kt b/main/src/kotlinx/team/infra/TeamCity.kt index 6483f09..7d41513 100644 --- a/main/src/kotlinx/team/infra/TeamCity.kt +++ b/main/src/kotlinx/team/infra/TeamCity.kt @@ -55,6 +55,7 @@ fun Project.configureTeamCityConfigGenerator(teamcity: TeamCityConfiguration, pu text .replace("<>", libraryStagingRepoDescription) .replace("<>", teamcity.jdk) + .replace("<>", publishing.singleAgentMacDeployment.toString()) } copyResource(teamcityDir, "additionalConfiguration.kt", override = false) copyResource(teamcityDir, "settings.kts")