Вопрос:

Как запланировать автоматическое резервное копирование в teamcity?

backup teamcity schedule

5507 просмотра

7 ответа

734 Репутация автора

Мы используем профессиональную версию Teamcity 6.5.6, которая дает мне возможность выполнить резервное копирование, но я не вижу возможности запланировать его на определенное время.

Я не уверен, поддерживает ли эта версия teamcity резервные копии по расписанию. Если это невозможно через teamcity GUI, интересно, есть ли другой вариант?

Может ли кто-нибудь помочь, пожалуйста?

Благодарю.

Автор: kranthi Источник Размещён: 11.05.2012 09:20

Ответы (7)


9 плюса

34707 Репутация автора

Решение

Вы можете использовать REST API для запуска резервного копирования. Мы фактически используем TeamCity для запуска запланированной сборки в полночь каждый день. Эта сборка делает вызов остальных API для резервного копирования.

Автор: Mike Two Размещён: 11.05.2012 10:22

19 плюса

1752 Репутация автора

Я написал скрипт Powershell для автоматического резервного копирования 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
Автор: Ivan Leonenko Размещён: 28.09.2012 11:15

9 плюса

1358 Репутация автора

Если вы не хотите писать программы для выполнения вашей задачи, просто запустите эту команду:

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

Автор: Alexander Kosenkov Размещён: 26.08.2013 08:07

6 плюса

1241 Репутация автора

Для тех, кто хочет запускать сборки из Mac OS (используйте Runner «Командная строка» в 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"
Автор: Denis Gladkiy Размещён: 29.11.2013 06:01

5 плюса

111 Репутация автора

Мы запускаем keepDB.cmd и планируем его с помощью планировщика заданий Windows. Это однострочная команда, не требующая дополнительного программного обеспечения. keepDB полностью задокументирован в документации TeamCity.

Автор: user2570487 Размещён: 24.04.2014 02:46

3 плюса

3402 Репутация автора

Вы также можете использовать переменную окружения, чтобы разрешить адрес сервера города команды во время сборки:

curl --basic --user user:pasword -X POST "%teamcity.serverUrl%/httpAuth/app/rest/server/backup?includeConfigs=true&includeDatabase=true&includeBuildLogs=true&fileName=ScheduledBackup"
Автор: Sveinung Kval Bakken Размещён: 09.01.2015 05:22

0 плюса

5025 Репутация автора

Начиная со сценария @Ivan Leonenko, я добавил несколько строк кода, чтобы дождаться окончания резервного копирования перед выходом.

function Execute-HTTPCommand() {
    param(
        [string] $method,
        [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 = $method

    if ($method -ne "GET")
    {
        $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,
        [string] $username,
        [string] $password
    )
    $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);

    Write-Host "Starting TeamCity backup"

    Execute-HTTPCommand "POST" $TeamCityURL $username $password
}

function Wait-TeamCityBackup() {
    param(
        [string] $server,
        [string] $username,
        [string] $password
    )

    $GetBackupStatusUrl = [System.String]::Format("{0}/httpAuth/app/rest/server/backup",
                                            $server);

    do {
        Start-Sleep -Seconds 1
        $backupStatus = Execute-HTTPCommand "GET" $GetBackupStatusUrl $username $password
        Write-Host $backupStatus
    } while ($backupStatus -eq 'Running')

}


$server = "http://YOUR_SERVER"
$addTimestamp = $true
$includeConfigs = $true
$includeDatabase = $true
$includeBuildLogs = $true
$includePersonalChanges = $true
$fileName = "TeamCity_Backup_"
$username = "USERNAME" # Must be a TeamCity Admin
$password = "PASSWORD"

Execute-TeamCityBackup $server $addTimestamp $includeConfigs $includeDatabase $includeBuildLogs $includePersonalChanges $fileName $username $password
Wait-TeamCityBackup $server $username $password
Автор: bubi Размещён: 04.03.2019 07:56
Вопросы из категории :
32x32