web-dev-qa-db-ja.com

あるサーバーから別のサーバーへのTeamCityビルド構成のインポート/エクスポート

1つのTeamCityビルド構成をサーバー間で移動する最良の方法は何ですか?

ビルドをテストするTeamCityのローカルインスタンスがあります。次に、ビルドが十分に成熟したら、メインのTeamCityサーバーで手動で作成(眼球コピー)します。

これを行うエクスポートおよびインポート機能はありますか?

30
Ace

残念ながら、そのようなことはありません。 TeamCity 8は、ビルドIDを導入することで状況を少し改善しました(プロジェクト名+ビルド構成名、上書き可能)。これにより、ビルド構成を「手動でコピー」できます。

基本的に、すべてのTeamCityビルド構成は、実際にはBuildServer\config\projects \フォルダーおよびサブフォルダー内の単なるXMLファイルです。私はこれを試していませんが、IDが衝突しない場合は、プロジェクトフォルダーをコピーするか、新しいTeamCityインスタンスの適切な宛先に構成XMLを構築することができるはずです。少なくとも、この方法で既存のプロジェクトを更新で確実に上書きすることができます(ビルド構成を動的に「オンザフライ」で変更するために過去に行ったことです)。

もちろん、ビルド構成が他のビルド/アーティファクトに依存している場合、それらのIDも一致する必要があるため、それらもコピーするか、IDを適宜調整する必要があります。エージェントの要件についても同様です。

編集:

TeamCity 9をリリースすると、組み込みのTeamCityサーバー間でプロジェクトを移動するためのはるかに優れたオプションがあります。

TeamCityは、サーバー間でプロジェクトを移動する機能を提供します。すべてのデータ(設定、ビルド、変更履歴など)とTeamCityユーザーアカウントを使用して、プロジェクトをサーバー間で転送できます。必要なのは、インポートするプロジェクトを含む通常のバックアップファイルをソースTeamCityサーバーに作成し、バックアップファイルをターゲットサーバーの/ importディレクトリに配置し、[管理]のインポート手順に従うだけです。プロジェクトのインポートページ。

完全な概要については、 TeamCity 9の新機能 を参照してください。

36
BrokenGlass

TeamCity 9以降の場合:

  1. TeamCityの両方のインスタンスが同じバージョンを実行していることを確認してください。
  2. TeamCityからデータをエクスポートする :ソースマシンでWeb UIを使用して、Administration -> Backupそして、基本的なバックアップを行います。作成されたバックアップファイルのパスが表示されます。
  3. TeamCityへのデータのインポート
    1. ターゲットサーバーで、Web UIを開き、Administration -> Projects Import。これにより、インポートディレクトリへのパスがわかります。
    2. バックアップファイルをインポートディレクトリにコピーし、Web UIを更新して、[インポートスコープの構成]をクリックします。
    3. インポートするデータのプロジェクトとカテゴリを選択します。質問はビルド構成に関するものであるため、ユーザーとグループのインポートをオフにします。 「インポートを開始」をクリックします。
14
Martin Eden

TeamCity 9にはこの機能が組み込まれています- https://confluence.jetbrains.com/display/TCD9/Projects+Import

2
sppc42

プロジェクトのインポート機能は、1つのビルド構成だけを復元するのに十分な粒度ではないことがわかりましたが、APIを介してこれを行うことができました。 PowerShellを使用して、ソースに対してinvoke-webrequestを呼び出すことができます。

$serviceAccountCredentials = New-Object System.Management.Automation.PSCredential -ArgumentList @('<domain>\<user>',(ConvertTo-SecureString -String 'Password' -AsPlainText -Force))

$settings = Invoke-RestMethod -Method Get -Uri 'http://<TeamCity_Build_server>/httpAuth/app/rest/buildTypes/id:<buildID>/settings' -Credential $serviceAccountCredentials
$parameters = Invoke-RestMethod -Method Get -Uri 'http://<TeamCity_Build_server>/httpAuth/app/rest/buildTypes/id:<buildID>/parameters' -Credential $serviceAccountCredentials
$steps = Invoke-RestMethod -Method Get -Uri 'http://<TeamCity_Build_server>/httpAuth/app/rest/buildTypes/id:<buildID>/steps' -Credential $serviceAccountCredentials
$features = Invoke-RestMethod -Method Get -Uri 'http://<TeamCity_Build_server>/httpAuth/app/rest/buildTypes/id:<buildID>/features' -Credential $serviceAccountCredentials
$triggers = Invoke-RestMethod -Method Get -Uri 'http://<TeamCity_Build_server>/httpAuth/app/rest/buildTypes/id:<buildID>/triggers' -Credential $serviceAccountCredentials
$agentReqs = Invoke-RestMethod -Method Get -Uri 'http://<TeamCity_Build_server>/httpAuth/app/rest/buildTypes/id:<buildID>/agent-requirements' -Credential $serviceAccountCredentials
$artifactDep = Invoke-RestMethod -Method Get -Uri 'http://<TeamCity_Build_server>/httpAuth/app/rest/buildTypes/id:<buildID>/artifact-dependencies' -Credential $serviceAccountCredentials
$snapshotDep = Invoke-RestMethod -Method Get -Uri 'http://<TeamCity_Build_server>/httpAuth/app/rest/buildTypes/id:<buildID>/snapshot-dependencies' -Credential $serviceAccountCredentials
$vcsRoot = Invoke-RestMethod -Method Get -Uri 'http://<TeamCity_Build_server>/httpAuth/app/rest/buildTypes/id:<buildID>/vcs-root-entries' -Credential $serviceAccountCredentials

その後、XMLを宛先に渡すことができます。

#import settings
Invoke-RestMethod -Method put -Uri 'http://<TeamCity_Build_server>/httpAuth/app/rest/buildTypes/id:<buildID>/settings' -body $settings.OuterXml -ContentType application/xml -Credential $serviceAccountCredentials
#import parameters
Invoke-RestMethod -Method put -Uri 'http://<TeamCity_Build_server>/httpAuth/app/rest/buildTypes/id:<buildID>/parameters' -body $parameters.OuterXml -ContentType application/xml -Credential $serviceAccountCredentials
#import steps
Invoke-RestMethod -Method put -Uri 'http://<TeamCity_Build_server>/httpAuth/app/rest/buildTypes/id:<buildID>/steps' -body $steps.OuterXml -ContentType application/xml -Credential $serviceAccountCredentials
#import features
Invoke-RestMethod -Method put -Uri 'http://<TeamCity_Build_server>/httpAuth/app/rest/buildTypes/id:<buildID>/features' -body $features.OuterXml -ContentType application/xml -Credential $serviceAccountCredentials
#import triggers
Invoke-RestMethod -Method put -Uri 'http://<TeamCity_Build_server>/httpAuth/app/rest/buildTypes/id:<buildID>/triggers' -body $triggers.OuterXml -ContentType application/xml -Credential $serviceAccountCredentials
#Import VCS root setting
Invoke-RestMethod -Method put -Uri 'http://<TeamCity_Build_server>/httpAuth/app/rest/buildTypes/id:<buildID>/vcs-root-entries' -body $VCSRoots.OuterXml -ContentType application/xml -Credential $serviceAccountCredentials

ビルド構成に関するTeamCity APIドキュメントは、次の場所から入手できます。 https://confluence.jetbrains.com/display/TW/REST+API#RESTAPI-BuildConfigurationAndTemplateSettings

0
Tim Aitken