TeamCity 2020.2 ヘルプ

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

このページでは、TeamCity アーティファクト依存関係の構成について詳しく説明します。

ビルド設定 | 依存関係 | アーティファクトの依存関係セクションでは、依存関係を構成できます。アーティファクトの依存関係リストの最後の列にある対応するオプションを使用して、構成された依存関係を一時的または永続的に無効にすることができます。

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

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

  1. ビルド設定の作成 / 編集のときは、依存関係ページを開きます。

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

オプション

説明

に依存

現在のビルド構成に依存するビルド構成を指定します。依存関係は、同じビルド構成の前のビルドに対して構成できます。

からアーティファクトを入手する

アーティファクトを取得するビルドの型を指定します。最後の成功ビルド、最後の固定ビルド、最後の終了ビルド、同じチェーンからのビルド(このオプションは、スナップショットに依存していて、ビルドからアーティファクトを取得する場合に便利です)同じソース)、特定のビルド番号、または指定されたタグを使用して最後に終了したビルドでビルドします。

ビルド番号

このフィールドは、 からアーティファクトを入手する list_ で特定のビルド番号のビルドを選択した場合に表示されます
ここで、アーティファクトの正確なビルド番号を指定します。

ビルドタグ

このフィールドは、からアーティファクトを入手するリストで指定されたタグを使用して最後に完了したビルドを選択した場合に表示されます
ここで、アーティファクトを使用するビルドのタグを指定します。依存関係を解決するとき、TeamCity は、指定されたタグで最後に成功したビルドを探し、そのアーティファクトを使用します。

ブランチフィルターの作成

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

アーティファクトルール

ここでは、ダウンロードするソースビルドのアーティファクトと、依存ビルドが開始される前にダウンロードされるエージェント上の場所を指定します。

改行で区切られた一連の規則。各規則は、次の構文を持つ必要があります。

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

各ルールは、「ソース」ビルドからダウンロードするファイルを指定します。SourcePath は、「ソース」ビルドのアーティファクトのディレクトリからの相対パスである必要があります。パスは、特定のファイルまたはディレクトリを識別するか、ワイルドカードを使用して複数のファイルを照合することができます。Ant のようなワイルドカードがサポートされています。
ダウンロードされたアーティファクトは、最初の * または ? から始まる「ソース」ディレクトリ構造を保持します。
DestinationPath は、ダウンロードされたアーティファクトが配置されるエージェント上の宛先ディレクトリを指定します。パスが相対パス(推奨)の場合、ビルドチェックアウトディレクトリに対して解決されます。必要に応じて、アーティファクトをダウンロードする前に宛先ディレクトリをクリーンアップできます。宛先パスが空の場合、アーティファクトはチェックアウトルートに直接ダウンロードされます。

基本的な例:

  • a/b/**=>lib を使用して、ソースビルドの a/b ディレクトリから lib ディレクトリにすべてのファイルをダウンロードします。ソースビルドアーティファクトに a/b/c/file.txt ファイルがある場合は、lib/c/file.txt ファイルにダウンロードされます。

  • 同時に、アーティファクト依存関係 **/*.txt=>lib はディレクトリ構造を保存します。ソースビルドアーティファクトからの a/b/c/file.txt ファイルは lib/a/b/c/file.txt にダウンロードされます。

ArchivePath は、ダウンロードされた圧縮アーティファクトを抽出するために使用されます。 zip7zipjartartar.gz がサポートされています。
ArchivePath は、SourcePath の一般的なルールに従います。ant のようなワイルドカードが許可され、アーカイブ内で一致したファイルは、最初のワイルドカードの一致に対応するディレクトリに配置されます(宛先パスに対して)
次に例を示します。release.zip!*.dll コマンドは、release.zip アーティファクトのルートにあるすべての .dll ファイルを抽出します。

アーカイブ処理例

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

  • a.zip!**=>destination はパス情報を保存しているアーカイブ全体を解凍します。

  • a.zip!a/b/c/**/*.dll=>dlls は、a/b/c プレフィックスなしで、a/b/c およびそのサブディレクトリからすべての .dll ファイルを dlls ディレクトリに抽出します。

+: および -: を使用して、ダウンロードまたは解凍から特定のファイルを含めたり除外したりできます。 +: プレフィックスは省略できるため、ルールはデフォルトで包括的であり、少なくとも 1 つの包括的ルールが必要です。ルールの順序は重要ではありません。アーティファクトごとに、最も具体的なルール(最初のワイルドカードシンボルの前にプレフィックスが最も長いルール)が適用されます。ファイルを除外する場合、DestinationPath は無視されます。ファイルはまったくダウンロードされません。ファイルは、アーカイブの解凍から除外することもできます。アーカイブコンテンツに適用されるルールのセットは、アーカイブ自体と一致するルールのセットによって決定されます。

独占パターンの例:

  • **/*.txt=>texts
    -:bad/exclude.txt は、bad ディレクトリから exclude.txt を除いて、すべてのディレクトリからすべての *.txt ファイルをダウンロードします

  • +:release-*.zip!**/*.dll=>dlls -:release-0.0.1.zip!Bad.dll すべての *.dll ファイルを release-*.zip ファイルから *.dll のディレクトリにダウンロードして解凍します。 release-0.0.1.zipBad.dll ファイルはスキップされます

  • **/*.*=>target
    -:excl/**/*.*
    +:excl/must_have.txt=>target は、すべてのアーティファクトを target ディレクトリにダウンロードします。 excl ディレクトリからは何もダウンロードしませんが、must_have.txt というファイルをダウンロードします

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

非表示のアーティファクトにアクセスする例

  • .teamcity/properties/*.properties
  • .teamcity/*.*

デフォルトでは、エージェントの作業ディレクトリへのアーティファクトの依存関係のダウンロードが許可され、エージェントのホームディレクトリは禁止されています。デフォルトをオーバーライドするには、 buildAgent.properties でコンマ区切りのパス teamcity.artifactDependenciesResolution.blackList および teamcity.artifactDependenciesResolution.whiteList を指定して、アーティファクトをダウンロードするカスタムルールを設定します。パスをブラックリストに登録すると、ホワイトリストに登録されていない限り、ディレクトリへのアーティファクトのダウンロードが禁止されます。

アーティファクトをダウンロードする前に宛先パスを消去する

アーティファクトをコピーする前に、このオプションをオンにして宛先ディレクトリのコンテンツを削除します。これはすべての包括的ルールに適用されます。

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

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 ユーザーのユーザー名 / パスワード(ユーザーには、ソースビルド構成のアーティファクトにアクセスするための対応する権限が必要です)またはシステムプロパティ teamcity.auth.userId/teamcity.auth.password のいずれかを使用できます。

ビルドレベル認証

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

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

関連ページ:

依存ビルド

TeamCity では、1 つのビルド構成は 1 つ以上の構成に依存できます。2 種類の依存関係を指定できます。スナップショットの依存関係、アーティファクトの依存関係、アーティファクトの依存関係は、あるビルドによって生成されたアーティファクトを別のビルドに取り込む方法にすぎません。対応するスナップシ...

ビルド構成の作成と編集

このページでは、TeamCity Web UI を使用したビルド構成の作成について詳しく説明しています。他のオプションには、REST APIおよびKotlin 言語に基づく DSLでの TeamCity プロジェクト構成の使用が含まれます。ビルド構成を作成するには、プロジェクトの一般設定を開き、ビル...

クリーンアップ

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

機能ブランチを使用した作業

分散バージョン管理システム(DVCS)の機能ブランチを使用すると、メインの開発とは独立して機能を操作し、機能のすべての変更をブランチにコミットして、機能の補完時に変更をメインのブランチにマージできます。このアプローチは、ソフトウェア開発チームに多くの利点をもたらします。ただし、専用のサポートがない継...