Поменять параметр в билде, используя TeamCity API
В данной заметке приведу пример powershell скрипта, которым меняю настройки проекта используя API Teamcity. К сожалению у TeamCity нет нативного «интерфейса» через который это можно было было сделать. Простой пример. Предположим, у вас 2 TeamCity. Скажем, на первый это основной сервер. А на втором вы собираете всякие демо стенды. Также вы хотите что бы количество FXCOP warnings было не ниже чем на основном. Для этого последним шагом можно добавить скрипт, который дернет API и передаст нужное значение. Ниже пример на powershell, который передаст FXCOP warnings на другой сервер:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
param( [string]$TeamcityUsername = "teamcity_api", [string]$TeamcityPassword = "teamcity_pass", [string]$TeamcityBuildID = "build_project_id", [string]$TeamcityBaseUrl = "https://buildserver", [string]$FxcopWarnings = "92" ) function getAuthHeader($user, $pass) { $pair = "$($user):$($pass)" $bytes = [System.Text.Encoding]::ASCII.GetBytes($pair) $base64 = [System.Convert]::ToBase64String($bytes) $basicAuthValue = "Basic $base64" return $basicAuthValue } [xml]$response = Invoke-WebRequest -UseBasicParsing -Method PUT -Uri $($TeamcityBaseUrl + "/app/rest/buildTypes/id:${TeamcityBuildID}/parameters/env.fxcop.warnings") -Body $("<property name='env.fxcop.warnings' value='$FxcopWarnings'/>") -Headers @{ Authorization = $(getAuthHeader $teamcityUsername $teamcityPassword) } -ContentType "application/xml" |