import jetbrains.buildServer.configs.kotlin.BuildType import jetbrains.buildServer.configs.kotlin.Parameter import jetbrains.buildServer.configs.kotlin.ParameterSpecPassword import jetbrains.buildServer.configs.kotlin.Project import jetbrains.buildServer.configs.kotlin.buildSteps.script import jetbrains.buildServer.configs.kotlin.vcs.GitVcsRoot import java.io.File const val agentGemini = "GeminiCLI" object Google_Gemini_CLI_AI_Agent : Project({ id("Google_Gemini_CLI") name = "Google Gemini CLI AI Agent" vcsRoot(GeminiCLI) buildType(BuildAndTestGoogleGeminiCLI) val tenTasksSet = mutableListOf() val thirtyTasksSet = mutableListOf() val fiftyTasksSet = mutableListOf() subProject({ id("SWE_Bench_Lite_${agentGemini}_Tasks") name = "SWE-Bench Lite Tasks" tasks.forEachIndexed { index, task -> val taskConfiguration = createTaskForGeminiBuildType(task) if (index % 10 == 0 && tenTasksSet.size < 10) tenTasksSet.add(taskConfiguration) if (index % 7 == 0 && thirtyTasksSet.size < 30) thirtyTasksSet.add(taskConfiguration) if (index % 5 == 0 && fiftyTasksSet.size < 50) fiftyTasksSet.add(taskConfiguration) buildType(taskConfiguration) } }) buildType(create_SWE_Bench_Lite_XxTaskSlice(tenTasksSet, agentGemini)) buildType(create_SWE_Bench_Lite_XxTaskSlice(thirtyTasksSet, agentGemini)) buildType(create_SWE_Bench_Lite_XxTaskSlice(fiftyTasksSet, agentGemini)) }) object GeminiCLI: GitVcsRoot ({ name = "My project main repository" url = "https://github.com/google-gemini/gemini-cli.git" branch = "refs/heads/main" branchSpec = """ +:refs/heads/* """.trimIndent() checkoutPolicy = AgentCheckoutPolicy.USE_MIRRORS }) object BuildAndTestGoogleGeminiCLI: BuildType({ name = "Build and Test Gemini CLI" id("BuildAndTestGoogleGeminiCLI") vcs { root(GeminiCLI) } steps { script { name = "Install dependencies" dockerImage = "node:21" scriptContent = """ npm install """.trimIndent() } script { name = "Build Gemini CLI" dockerImage = "node:21" scriptContent = """ npm run build """.trimIndent() } script { name = "Preparing artifacts" dockerImage = "node:21" scriptContent = """ mkdir -p node cp -r /usr/local/* node/ mv bundle/gemini.js bundle/gemini.mjs """.trimIndent() } } artifactRules = """ +:bundle/gemini.mjs => agent.zip +:node => agent.zip!/node """.trimIndent() }) fun createTaskForGeminiBuildType(taskEnv: Task) = createTaskForAgentBuildType( agentGemini, taskEnv, BuildAndTestGoogleGeminiCLI, listOf( Parameter("env.GEMINI_API_KEY", "credentialsJSON:2de4f99d-b3dc-4654-a636-8bee3ad0b2e6", ParameterSpecPassword(readOnly = false)) ), File("scripts/run_gemini.sh"), )