Jak zaplanować automatyczne kopie zapasowe w teamcity?

Używamy wersji TeamCity 6.5.6 professional, która daje mi możliwość uruchomienia kopii zapasowej, ale nie widzę opcji zaplanowania jej na konkretny czas.

Nie jestem pewien, czy ta wersja teamcity obsługuje nawet zaplanowane kopie zapasowe. Jeśli nie jest to możliwe przez GUI teamcity, zastanawiam się, czy jest jakaś inna opcja?

Czy ktoś mógłby mi pomóc?

Dzięki.
Author: kranthi, 2012-05-11

6 answers

Możesz użyć REST API do uruchomienia kopii zapasowej. W rzeczywistości korzystamy z TeamCity, aby uruchamiać zaplanowaną budowę każdego dnia o północy. Ta kompilacja wywołuje API rest w celu wykonania kopii zapasowej.

 9
Author: Mike Two,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-05-11 10:22:57

Napisałem skrypt Powershell dla TeamCity auto backups , który można zaplanować i uruchomić backup.

Oto kod:

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
 18
Author: Ivan Leonenko,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-28 19:55:20

Jeśli nie chcesz pisać programów do wykonania zadania, po prostu uruchom to polecenie:

wget --user=*** --password=*** "http://localhost:8085/httpAuth/app/rest/server/backup?includeConfigs=true&includeDatabase=true&includeBuildLogs=true&fileName=ScheduledBackup-" --post-data= 

Gdzie gwiazdki należy zastąpić danymi logowania do TeamCity.

W systemie Windows możesz pobrać WGET jako część pakietu Cygwin

 9
Author: Alexander Kosenkov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-26 08:07:58

Dla tych, którzy chcą uruchamiać Kompilacje z Mac OS (użyj runnera "command line" w 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"
 5
Author: Denis Gladkiy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-11-29 06:01:10

Uruchamiamy maintainDB.cmd i zaplanuj go za pomocą Harmonogramu zadań systemu Windows, jest to polecenie jednoliniowe i nie wymaga dodatkowego oprogramowania. maintainDB jest w pełni udokumentowane w dokumentacji TeamCity.

 4
Author: user2570487,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-24 14:46:18

Możesz również użyć zmiennej środowiskowej, aby adres serwera team city został rozwiązany w czasie budowania:

curl --basic --user user:pasword -X POST "%teamcity.serverUrl%/httpAuth/app/rest/server/backup?includeConfigs=true&includeDatabase=true&includeBuildLogs=true&fileName=ScheduledBackup"
 2
Author: Sveinung Kval Bakken,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-09 17:22:24