如何在teamcity中安排自动备份?

kra*_*thi 21 backup teamcity schedule

我们正在使用Teamcity 6.5.6专业版,这使我可以选择运行备份但我没有看到任何选项来安排它到特定时间.

我不确定这个版本的teamcity是否支持预定备份.如果通过teamcity GUI无法实现,我想知道是否还有其他选择?

有人可以帮忙吗?

谢谢.

Iva*_*nko 19

为TeamCity自动备份编写了Powershell脚本,您可以安排并运行备份.

这是代码:

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
Run Code Online (Sandbox Code Playgroud)

  • @PaulZahra,默认情况下,备份文件是在 <TeamCity Data Directory>/backup 中创建的,这里有一个如何找到它的链接 https://confluence.jetbrains.com/display/TCD10/TeamCity+Data+Directory (2认同)
  • @IvanLeonenko顺便说一句......刚刚在这里找到你的脚本......这可能会让你感兴趣(它有一些细微的变化)...... https://blogs.endjin.com/2013/08/a-step-by-自动化 teamcity 备份步骤指南/ (2认同)

Mik*_*Two 9

您可以使用REST API来运行备份.我们实际上使用TeamCity在每天午夜运行预定的构建.该构建调用其余的api来进行备份.

  • 由于这个建议,我能够基于REST API构建解决方案.源代码托管在github上,这是一篇描述它如何工作的博客文章:http://daniellang.net/how-to-automate-teamcity-backups-using-its-rest-api/ (4认同)

Ale*_*kov 9

如果您不想编写程序来执行任务,只需运行以下命令:

wget --user=*** --password=*** "http://localhost:8085/httpAuth/app/rest/server/backup?includeConfigs=true&includeDatabase=true&includeBuildLogs=true&fileName=ScheduledBackup-" --post-data= 
Run Code Online (Sandbox Code Playgroud)

应使用您的TeamCity登录信息替换星标.

在Windows上,您可以将WGET作为Cygwin软件包的一部分


Den*_*kiy 6

对于那些想要从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"
Run Code Online (Sandbox Code Playgroud)


小智 5

我们运行maintainDB.cmd并使用Windows任务计划程序安排它,它是一行命令,不需要额外的软件.maintainDB完整记录在TeamCity文档中.