override suspend fun runBuild()

in teamcity-rest-client-impl/src/main/kotlin/org/jetbrains/teamcity/rest/coroutines/implementation.kt [1411:1462]


    override suspend fun runBuild(
        parameters: Map<String, String>?,
        queueAtTop: Boolean,
        cleanSources: Boolean?,
        rebuildAllDependencies: Boolean,
        comment: String?,
        logicalBranchName: String?,
        agentId: String?,
        personal: Boolean,
        revisions: List<SpecifiedRevision>?,
        dependencies: List<BuildId>?
    ): Build {
        val request = TriggerBuildRequestBean()

        request.buildType = BuildTypeBean().apply { id = this@BuildConfigurationImpl.idString }
        request.branchName = logicalBranchName
        comment?.let { commentText -> request.comment = CommentBean().apply { text = commentText } }
        request.personal = personal
        request.triggeringOptions = TriggeringOptionsBean().apply {
            this.cleanSources = cleanSources
            this.rebuildAllDependencies = rebuildAllDependencies
            this.queueAtTop = queueAtTop
        }
        parameters?.let { parametersMap ->
            val parametersBean = ParametersBean(parametersMap.map { ParameterBean(it.key, it.value) })
            request.properties = parametersBean
        }
        if (!agentId.isNullOrEmpty())
            request.agent = BuildAgentBean().apply { id = agentId }
        request.`snapshot-dependencies` = dependencies?.let { deps ->
            BuildListBean().apply {
                build = deps.map {
                    BuildBean().apply { id = it.stringId }
                }
            }
        }
        request.revisions = revisions?.let { r ->
            RevisionsBean().apply {
                revision = r.map {
                    RevisionBean().apply {
                        version = it.version
                        vcsBranchName = it.vcsBranchName
                        `vcs-root-instance` = VcsRootInstanceBean().apply {
                            `vcs-root-id` = it.vcsRootId.stringId
                        }
                    }
                }
            }
        }
        val triggeredBuildBean = instance.service.triggerBuild(request)
        return instance.build(BuildId(triggeredBuildBean.id!!.toString()))
    }