TeamCity オンプレミス 2025.11 ヘルプ

アーティファクトの依存関係

このページでは、あるビルドから別のビルドにファイルを渡すことができる TeamCity アーティファクトの依存関係の構成について詳しく説明します。例: 一般的なデプロイビルド構成は、他の (本番) 構成によって生成されたファイルを公開します。

アーティファクトは以下から渡すことができます:

  • 同じビルドチェーン内のターゲット構成の前に実行される構成。

  • ターゲット構成と同じビルドチェーンの一部ではない個別の構成。

  • 同じ構成の以前のビルド。

Web UI を使用したアーティファクトの依存関係の設定

ビルド構成にアーティファクト依存関係を追加するには、以下のようにします。

  1. ビルド構成を編集するときは、依存関係ページを開きます。

    Add artifact dependency
  2. 新しいアーティファクト依存関係を追加するをクリックして、次の設定を指定します。

    Add artifact dependency dialog
    • 依存先 — 現在のビルド構成が依存するビルド構成。

    • からアーティファクトを入手する — アーティファクトを取得するビルドの型:

      • 最新の成功したビルド - アーティファクトは最新のリビジョンの成功した依存関係ビルドから取得されます (最新の変更 ID)

      • 最新の固定ビルド - アーティファクトは最新のリビジョンの固定依存関係ビルドから取得されます (最新の変更 ID)

      • 最新の完成したビルド: スナップショットの依存関係もビルド構成で構成されている場合、アーティファクトは現在のビルドと同じソースのビルドから取得されます

      • 同じチェーンからビルドする - このオプションは、スナップショット依存関係があり、同じソースのビルドからアーティファクトを取得したい場合に便利です。

      • 指定されたビルド番号でビルドする

      • 指定されたタグが付いた最新の完成したビルド

    • ビルド番号 — アーティファクトの正確なビルド番号。このフィールドは、_ からアーティファクトを入手するリストで特定のビルド番号を持つビルドを選択した場合に使用できます。

    • ビルドタグ — 使用するアーティファクトのビルドのタグ。TeamCity は、このタグを持つ最新の完了ビルド(成功または失敗)からアーティファクトを取得します。このフィールドは、リストからアーティファクトを取得するで「指定されたタグを持つ最新の完了ビルド」を選択した場合に表示されます。

    • ブランチフィルターの作成ブランチフィルターを設定して、ソースビルドを一致するブランチのものだけに制限できます。指定しない場合は、デフォルトのブランチが使用されます。このフィールドは、依存関係に VCS ルート設定で指定されたブランチがある場合に表示されます。

    • アーティファクトルール — ダウンロードするファイルとフォルダー、および保存する場所を指定する文字列式。詳細については、このセクションを参照してください: アーティファクトルール

    • アーティファクトをダウンロードする前に宛先パスを消去する — このオプションをオンにすると、アーティファクトをコピーする前に宛先ディレクトリの内容が削除されます。これはすべての包括的ルールに適用されます。

  3. 新しい依存関係を追加するには、「保存」をクリックします。

いつでも、カスタムアーティファクトの依存関係を持つビルドを起動できます。

アーティファクトルール

アーティファクトルールは、ソースビルドのどのアーティファクトをダウンロードするか、およびエージェントストレージのどこに保存するかを指定します。

個々のアーティファクトルールは新しい行から始まり、次の構文を持つ必要があります。

[+:|-:|?:]SourcePath[!ArchivePath][=>DestinationPath]

ルールの順序は関係ありません。1 つのアーティファクトを、別々のルールを使用して複数の場所にダウンロードできます。複数のルールが同じアーティファクトファイルを対象とし、同じダウンロードディレクトリを指定している場合、最も具体的なルール(最初のワイルドカードシンボルの前の接頭辞が最も長いルール)が適用されます。

接頭辞

  • +: 接頭辞は、必須の包括的なアーティファクト依存関係を指定します。これはデフォルトの接頭辞であり、接頭辞のないすべてのルールは包括的として扱われることを意味します (+:mylib.dll ルールと mylib.dll ルールは同一です)。

  • -: 接頭辞を使用すると、ダウンロードまたは解凍から特定のファイルを除外できます。例: アーティファクトの依存関係として渡したいディレクトリにビルドに関係のないファイルがいくつか含まれている場合は、必要なファイルをすべて調べて +:directory/file 構文を使用して含めるか、ディレクトリ全体 (+:directory) を追加して無視するファイルをいくつか除外 (-:directory/junkfile) することができます。

  • ?: 接頭辞を使用すると、オプションの包含依存関係を作成できます。ビルドが +:... ルールで参照されているアーティファクトを取得できない場合、このビルドは失敗し、「アーティファクトの依存関係を解決できませんでした」というメッセージが表示されます。?:... ルールを使用すると、依存ビルドを実行できます (必要なアーティファクトが見つからなかったという警告がビルドログに出力されます)。?: 接頭辞を使用すると、スタンドアロンファイル (?:/myfile.txt) とアーカイブからのファイル (?:dist.zip!myfile.txt) の両方をオプションとしてラベル付けできます。詳細については、次の例を参照してください: オプションの依存関係

ソースパス

SourcePath は、「ソース」ビルドのアーティファクトのディレクトリを基準にする必要があります。パスは特定のファイル、ディレクトリを識別することも、ワイルドカードを使用して複数のファイルを一致させることもできます。Ant のようなワイルドカードがサポートされています。

ダウンロードされたアーティファクトは、最初の * または ? ワイルドカードから始まる「ソース」ディレクトリ構造を保持します。

アーカイブパス

ArchivePath はダウンロードした圧縮アーティファクトを抽出するために使用されます。zip7zipjartartar.gz がサポートされています。

ArchivePath は、SourcePath の一般的なルールに従います。ant のようなワイルドカードが許可され、アーカイブ内で一致したファイルは、最初のワイルドカード一致に対応するディレクトリ (宛先パスを基準) に配置されます。例: release.zip!*.dll ルールは、release.zip アーティファクトのルートにあるすべての .dll ファイルを抽出します。

宛先パス

DestinationPath は、ダウンロードされたアーティファクトが配置されるエージェント上の宛先ディレクトリを指定します。パスが相対パスの場合 (推奨)、ビルドチェックアウトディレクトリに対して解決されます。必要に応じて、アーティファクトをダウンロードする前に宛先ディレクトリをクリーンアップできます。宛先パスが空の場合、アーティファクトはチェックアウトルートに直接ダウンロードされます。

排他的 (-: 接頭辞で始まる) ルールでは、宛先パスは無視されます。

サンプル

ターゲットディレクトリからすべてのファイルをダウンロードする

ソースビルドのターゲット a/b ディレクトリから依存ビルドの lib ディレクトリにすべてのファイルをコピーするには、a/b/**=>lib ルールを追加します。コピーされたファイルはソース階層を保持します。例: サブディレクトリにホストされている a/b/c/file.txt ファイルは、lib/c/file.txt フォルダーに配置されます。

パターンに一致するすべてのファイルをダウンロードする

ワイルドカードを使用すると、複数のファイルに一度に一致するパターンを指定できます。例: **/*.txt=>lib ルールは、すべてのテキストファイルをエージェントの lib ディレクトリにダウンロードします。

ルールは元のディレクトリ構造を保持することに注意してください。例: a/b/c/file.txt ファイルは lib/a/b/c/file.txt として保存されます。

アーカイブからファイルを抽出する

アーティファクトルールのアーカイブパス部分を使用すると、依存ビルドがターゲットアーカイブからダウンロードするファイルを指定できます。

  • a.zip!**=>destination ルールは、アーカイブ全体を destination ライブラリに解凍します。アーカイブはそのまま解凍され、サブフォルダーの内部階層は保持されます。

  • release-*.zip!*.dll=>dlls ルールは、release-*.zip パターンに一致するすべてのアーカイブから *.dll ライブラリを抽出し、これらのライブラリを dlls ディレクトリに保存します。

  • a.zip!a/b/c/**/*.dll=>dlls ルールは、a/b/c とそのサブディレクトリからすべての .dll ファイルを dlls ディレクトリに抽出します。このルールに一致するファイルは、a/b/c パスなしで保存されます。

無関係なファイルを除外する

-: 接頭辞を使用してアーティファクトルールを開始し、このパターンに一致するファイルは依存ビルドによってダウンロードされないよう TeamCity に指示します。

  • 次の 2 つのルールにより、bad ディレクトリにある exclude.txt ファイルを除くすべてのディレクトリからすべてのテキストファイルがダウンロードされます。ダウンロードされたファイルは texts フォルダーに保存されます。

    **/*.txt=>texts -:bad/exclude.txt
  • 次の一連のルールは、release で始まるすべてのアーカイブを検索し、その .dll ライブラリを解凍して、dlls ディレクトリに保存します。release-0.0.1.zip アーカイブの Bad.dll ファイルはスキップされます。

    +:release-*.zip!**/*.dll=>dlls -:release-0.0.1.zip!Bad.dll
  • 以下の組み合わせにより、すべてのアーティファクトが target ディレクトリにダウンロードされます。依存ビルドでは、excl/must_have.txt ファイルを除いて、excl ディレクトリが完全に無視されます。

    **/*.*=>target -:excl/**/*.* +:excl/must_have.txt=>target

隠されたアーティファクトをダウンロード

.teamcity ディレクトリに配置されたアーティファクトは非表示とみなされます。これらのアーティファクトは、デフォルトではワイルドカードによって無視されます。
何らかの目的で .teamcity ディレクトリのファイルを含める場合は、必ず .teamcity で始まるアーティファクトパスを明示的に追加してください。例:

  • .teamcity/properties/*.properties

  • .teamcity/*.*

オプションの依存関係

次の Kotlin DSL コードは、output.txt アーティファクトファイルを生成する構成を示しています。

import jetbrains.buildServer.configs.kotlin.* import jetbrains.buildServer.configs.kotlin.buildSteps.script object ConfigA : BuildType({ name = "ConfigA" artifactRules = "+:output.txt" steps { script { id = "simpleRunner" scriptContent = """ touch output.txt echo "Config A running..." > output.txt """.trimIndent() } } })

依存ビルド構成では、独自のスクリプトでこの output.txt ファイルを使用します。ただし、スクリプトの if ... else ステートメントにより、ターゲットファイルが見つからない場合に代替のアクションを実行できます。

import jetbrains.buildServer.configs.kotlin.* import jetbrains.buildServer.configs.kotlin.buildSteps.script object ConfigB : BuildType({ name = "ConfigB" vcs { cleanCheckout = true } steps { script { id = "simpleRunner" scriptContent = """ FILE=output.txt if [ ! -f ${'$'}FILE ] then echo "No source file exists" else cat ${'$'}FILE fi """.trimIndent() } } dependencies { dependency(ConfigA) { snapshot { reuseBuilds = ReuseBuilds.NO } artifacts { artifactRules = "?:output.txt" } } } })

?:output.txt 依存関係により、ターゲットファイルが見つからなくても依存ビルドを開始できます。この場合、ビルドログに対応する警告が含まれます。

Optional dependency warning

エージェントのホームディレクトリにアーティファクトをダウンロードする

デフォルトでは、アーティファクトはエージェントの作業ディレクトリにのみダウンロードでき、エージェントのホームディレクトリへのダウンロードは禁止されています。デフォルトをオーバーライドするには、 buildAgent.properties : teamcity.artifactDependenciesResolution.bannedList および teamcity.artifactDependenciesResolution.allowedList でコンマ区切りのパスを指定して、アーティファクトをダウンロードするためのカスタムルールを設定します。禁止リストにパスを追加すると、許可リストにない限り、このディレクトリへのアーティファクトのダウンロードが禁止されます。

Ant ビルドスクリプトを使用したアーティファクトの依存関係の設定

このセクションでは、ビルドスクリプト内で TeamCity ビルドアーティファクトをダウンロードする方法について説明します。これらの命令は、TeamCity の外部からアーティファクトをダウンロードするためにも使用できます。

ビルド間のアーティファクトの依存関係を処理するために、このソリューションは TeamCity UI で依存関係を構成するよりも複雑ですが、柔軟性を高めることができます。例: この方法で依存関係を管理すると、個人用ビルドを開始して、ビルドが依存関係と互換性があることを確認できます。

Ant ビルドスクリプトで依存関係を設定するには

1\. Ivy をダウンロードします。

2\. ビルドのクラスパスに Ivy を追加します。

3\. TeamCity リポジトリに関するメタ情報を含む ivyconf.xml ファイルを作成します。このファイルの内容は次のとおりです。

<ivysettings> <property name='ivy.checksums' value=''/> <caches defaultCache="${teamcity.build.tempDir}/.ivy/cache"/> <statuses>     <status name='integration' integration='true'/> </statuses> <resolvers>     <url name='teamcity-rep' alwaysCheckExactRevision='yes' checkmodified='true'>         <ivy pattern='http://YOUR_TEAMCITY_HOST_NAME/httpAuth/repository/download/[module]/[revision]/teamcity-ivy.xml' />         <artifact pattern='http://YOUR_TEAMCITY_HOST_NAME/httpAuth/repository/download/[module]/[revision]/[artifact](.[ext])' />     </url> </resolvers> <modules>     <module organisation='.*' name='.*' matcher='regexp' resolver='teamcity-rep' /> </modules> </ivysettings>

4\. YOUR_TEAMCITY_HOST_NAME を TeamCity サーバーのホスト名に置き換えます。

5\. build.xml が実行されるディレクトリに ivyconf.xml を配置します。

6\. 同じディレクトリに、ダウンロードするアーティファクトとその保存場所を定義する ivy.xml ファイルを作成します。例:

<ivy-module version="1.3"> <info organisation="YOUR_ORGANIZATION" module="YOUR_MODULE"/> <dependencies> <dependency org="org" name="BUILD_TYPE_EXT_ID" rev="BUILD_REVISION"> <include name="ARTIFACT_FILE_NAME_WITHOUT_EXTENSION" ext="ARTIFACT_FILE_NAME_EXTENSION" matcher="exactOrRegexp"/> </dependency> </dependencies> </ivy-module>

where:

  • YOUR_ORGANIZATION はあなたの組織の名前に置き換えてください。

  • YOUR_MODULE は、アーティファクトが使用されるプロジェクトまたはモジュールの名前に置き換えます。

  • BUILD_TYPE_EXT_ID は、アーティファクトがダウンロードされるビルド構成の外部 ID に置き換えられます。

  • BUILD_REVISION はビルド番号または以下の文字列のいずれかです: * latest.lastFinished

    • latest.lastSuccessful

    • latest.lastPinned

  • TAG_NAME.tcbuildtag - TAG_NAME タグでタグ付けされた最後のビルド

  • ARTIFACT_FILE_NAME_WITHOUT_EXTENSION ファイル名または拡張部分なしのアーティファクトの正規表現。

  • ARTIFACT_FILE_NAME_EXTENSION アーティファクトファイル名の拡張子部分。

7\. build.xml ファイルを変更し、アーティファクトをダウンロードするためのタスクを追加します。たとえば、次のようになります (Ant 1.6 以降に適用可能)。

<target name="fetchArtifacts" description="Retrieves artifacts for TeamCity" xmlns:ivy="antlib:org.apache.ivy.ant"> <taskdef uri="antlib:org.apache.ivy.ant" resource="org/apache/ivy/ant/antlib.xml"/> <classpath> <pathelement location="${basedir}/lib/ivy-2.0.jar"/> <pathelement location="${basedir}/lib/commons-httpclient-3.0.1.jar"/> <pathelement location="${basedir}/lib/commons-logging.jar"/> <pathelement location="${basedir}/lib/commons-codec-1.3.jar"/> </classpath> </taskdef> <ivy:configure file="${basedir}/ivyconf.xml" /> <!--<ivy:cleancache />--> <ivy:retrieve pattern="${basedir}/[artifact].[ext]"/> </target>

アーティファクトリポジトリは、基本認証によって保護されています。アーティファクトにアクセスするには、<ivy:configure/> タスクに資格情報を提供する必要があります。例:

<ivy:configure file="${basedir}/ivyconf.xml" host="TEAMCITY_HOST" realm="TeamCity" username="USER_ID" passwd="PASSWORD"/>

ここで、TEAMCITY_HOST は TeamCity サーバーのホスト名または IP アドレスです (ポートとサーブレットコンテキストなし)。
USER_ID/PASSWORD としては、通常の TeamCity ユーザーのユーザー名 / パスワード (ユーザーには、ソースビルド構成のアーティファクトにアクセスするための適切な権限が必要です)、またはシステムプロパティ system.teamcity.auth.userId/system.teamcity.auth.password のいずれかを使用できます。

ビルドレベル認証

システムプロパティ system.teamcity.auth.userIdsystem.teamcity.auth.password は、TeamCity サーバーでの認証に使用できる、自動的に生成されたビルド固有の値を格納します。値はビルドが実行されている間だけ有効です。この生成されたユーザーは、ビルド関連の操作を許可する権限が制限されています。ユーザーの主な目的は、認証を使用してビルドスクリプト内の他の TeamCity ビルドからアーティファクトをダウンロードすることです。

プロパティを使用すると、サーバーがビルドによってダウンロードされたアーティファクトを追跡できるため、実際のユーザー資格情報を使用するよりも望ましい方法です。アーティファクトがビルド構成アーティファクトの依存関係によって、または提供されたプロパティを使用してダウンロードされた場合、ビルドで使用される特定のアーティファクトは、ビルド結果ページの依存関係タブに表示されます。さらに、アーティファクトを取得するために使用されたビルドは、異なる clean-up ロジックを持つように構成できます。

2025 年 11 月 04 日

関連ページ:

デプロイビルド構成

プロジェクトが構築されテストされたら、最終的なインフラストラクチャにデプロイする必要があることがよくあります。たとえば、NuGet ギャラリーにパッケージをアップロードしたり、DockerHub リポジトリにコンテナーを配信したり、ドキュメント Web サイトのソースを更新したりします。さまざまな CI/CD ソリューションでは、パイプラインのこの最後のステップに「デプロイ」ステージ、配信ターゲット、リリース、本番環境などのさまざまな用語を使用します。TeamCity では、配信タスクは、通常の...

ビルドチェーン

ビルドチェーンは、スナップショット依存関係によって相互接続された一連のビルドです。ビルドチェーンは「パイプライン」と呼ばれることもあります。リビジョン同期が有効になっているスナップショット依存関係にリンクされたビルドチェーンの各部分は、ソースの同じスナップショットを使用します。一般的なユースケース:ビルドチェーンを指定する最も一般的な使用例は、プロジェクトの同じテストスイートを異なるプラットフォームで実行することです。例: リリースビルドの前に、さまざまなプラットフォームと環境でテストが正しく実...

空きディスク容量

TeamCity はビルド用にエージェントにディスク容量を必要とし、デフォルトで 3 GB を割り当てます。ビルドにさらにスペースが必要な場合は、空きディスク容量ビルド機能を使用します。ビルドのチェックアウトディレクトリやさまざまなキャッシュなどの古いビルドデータをクリーンアップすることで、ビルド前にエージェントに一定の空きディスク領域を確保できます。ビルド機能の設定で、必要なディスク領域の新しい値を指定します。空きディスク容量ビルド機能はアーティファクトのサイズを追跡し、アーティファクトの依存...

ビルド構成の作成と編集

ビルド構成とパイプラインは、実際の CI/CD ルーチンを表します。ビルド構成には、一連のビルドステップ(ビルド実行中に実行される基本操作)と、これらのステップの実行に必要な設定が格納されます。これらの設定には以下が含まれます。構成の動作をすばやく変更できるパラメーター。特定の条件が満たされたときに TeamCity が自動的に新しいビルドを開始できるようにするトリガー。構成の機能を拡張する機能を構築します。特定のビルドエージェントで構成ビルドを実行できるようにするエージェント要件。その他。ビル...

ビルドの主なアクション

この記事では、TeamCity のビルドに適用できるアクションについて説明します。ビルド実行:TeamCity では、ビルドを実行できます。自動的に、さまざまなビルドトリガーを使用します。手動で、オンデマンド。ビルドを手動で実行するには、画面の右上隅にある実行をクリックします。このアクションは、編集モードと表示モードモードの両方で使用できます。特定のビルド構成で実行ボタンが表示されない場合は、そのビルド構成でビルドを開始するための権限が不足していることを意味します。実行ボタンの横にあるコンテキ...

TeamCity データのクリーンアップ

TeamCity のクリーンアップ機能により、古いビルドデータや不要なビルドデータを自動的に削除できます。サーバーのクリーンアップ構成は管理 | サーバー管理 | クリーンアップ設定で使用可能です。クリーンアップスケジュールの設定が可能で、一般的なクリーンアップ情報が表示されます。特定のプロジェクトに関連するクリーンアップルールはプロジェクト設定で設定されます | クリーンアップルール。これらのルールは、どのデータをクリーンアップし、どのデータを保持するかを定義します。これらは、プロジェクトまた...