Ответ 1
Для запуска резервного копирования вы можете использовать REST API. Мы фактически используем TeamCity для запуска запланированной сборки в полночь каждый день. Эта сборка делает вызов для остальных api для резервного копирования.
Мы используем профессиональную версию Teamcity 6.5.6, которая дает мне возможность запускать резервную копию, но я не вижу возможности запланировать ее в определенное время.
Я не уверен, поддерживает ли эта версия teamcity плановые резервные копии. Если это невозможно через teamcity GUI, интересно, есть ли другой вариант?
Может ли кто-нибудь помочь?
Спасибо.
Для запуска резервного копирования вы можете использовать REST API. Мы фактически используем TeamCity для запуска запланированной сборки в полночь каждый день. Эта сборка делает вызов для остальных api для резервного копирования.
Я написал Powershell script для автоматического резервного копирования TeamCity, который вы можете планировать и запускать резервное копирование.
Здесь код:
function Execute-HTTPPostCommand() {
param(
[string] $url,
[string] $username,
[string] $password
)
$authInfo = $username + ":" + $password
$authInfo = [System.Convert]::ToBase64String([System.Text.Encoding]::Default.GetBytes($authInfo))
$webRequest = [System.Net.WebRequest]::Create($url)
$webRequest.ContentType = "text/html"
$PostStr = [System.Text.Encoding]::Default.GetBytes("")
$webrequest.ContentLength = $PostStr.Length
$webRequest.Headers["Authorization"] = "Basic " + $authInfo
$webRequest.PreAuthenticate = $true
$webRequest.Method = "POST"
$requestStream = $webRequest.GetRequestStream()
$requestStream.Write($PostStr, 0, $PostStr.length)
$requestStream.Close()
[System.Net.WebResponse] $resp = $webRequest.GetResponse();
$rs = $resp.GetResponseStream();
[System.IO.StreamReader] $sr = New-Object System.IO.StreamReader -argumentList $rs;
[string] $results = $sr.ReadToEnd();
return $results;
}
function Execute-TeamCityBackup() {
param(
[string] $server,
[string] $addTimestamp,
[string] $includeConfigs,
[string] $includeDatabase,
[string] $includeBuildLogs,
[string] $includePersonalChanges,
[string] $fileName
)
$TeamCityURL = [System.String]::Format("{0}/httpAuth/app/rest/server/backup?addTimestamp={1}&includeConfigs={2}&includeDatabase={3}&includeBuildLogs={4}&includePersonalChanges={5}&fileName={6}",
$server,
$addTimestamp,
$includeConfigs,
$includeDatabase,
$includeBuildLogs,
$includePersonalChanges,
$fileName);
Execute-HTTPPostCommand $TeamCityURL "USER" "PASSWORD"
}
$server = "http://YOUR_SERVER"
$addTimestamp = $true
$includeConfigs = $true
$includeDatabase = $true
$includeBuildLogs = $true
$includePersonalChanges = $true
$fileName = "TeamCity_Backup_"
Execute-TeamCityBackup $server $addTimestamp $includeConfigs $includeDatabase $includeBuildLogs $includePersonalChanges $fileName
Если вы не хотите писать программы для выполнения своей задачи, просто запустите эту команду:
wget --user=*** --password=*** "http://localhost:8085/httpAuth/app/rest/server/backup?includeConfigs=true&includeDatabase=true&includeBuildLogs=true&fileName=ScheduledBackup-" --post-data=
где звезды должны быть заменены на вашу регистрационную информацию TeamCity.
В Windows вы можете получить WGET в составе пакета Cygwin
Для тех, кто хочет запускать сборки из Mac OS (используйте "командной строки" на TeamCity):
curl --basic --user user:password -X POST "http://team.city.server:8111/httpAuth/app/rest/server/backup?includeConfigs=true&includeDatabase=true&includeBuildLogs=true&fileName=ScheduledBackup"
Мы запускаем maintainDB.cmd и планируем его с помощью Планировщика заданий Windows, это одна строка и не требует дополнительного программного обеспечения. maintainDB полностью задокументирован в документации TeamCity.
Вы также можете использовать переменную окружения для разрешения адреса сервера городской команды во время сборки:
curl --basic --user user:pasword -X POST "%teamcity.serverUrl%/httpAuth/app/rest/server/backup?includeConfigs=true&includeDatabase=true&includeBuildLogs=true&fileName=ScheduledBackup"