TeamCity 2019.1ヘルプ

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

TeamCity アーティファクトの依存関係の構成の詳細です。

このページで:

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

Web UIを使用した成果物の依存関係の設定

ビルド構成に成果物依存関係を追加するには、以下のようにします。

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

  2. 新しい成果物依存関係を追加するリンクをクリックして、以下の設定を指定します。

オプション

説明

に依存

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

から成果物を入手する

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

ビルド番号

このフィールドは、選択した場合に表示されます。 は、 から成果物を入手する リスト 内の 特定のビルド番号 ビルドし ます
成果物の正確なビルド番号をここで指定してください。

ビルドタグ

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

ブランチをビルドする

VCSルート設定のこのフィールドには、依存関係にブランチが指定されている場合に表示されます: ブランチを設定して、ソースビルドをブランチを持つものに限定します。指定しない場合は、デフォルトのブランチが使用されます。ロジックブランチ名(ビルド用のUIに表示されている)が使用されます。パターンはサポートされていません。

成果物ルール

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

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

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

各規則は "source"ビルドからダウンロードされるファイルを指定します。ソース・パスは、「ソース」ビルドの成果物ディレクトリーを基準にしています。パスは、特定のファイル、ディレクトリーを識別することも、ワイルドカードを使用して複数のファイルと一致させることもできます。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は、ダウンロードされた圧縮アーティファクトを抽出するために使用されます。Zip、7-zip、jar、tarおよびtar.gzがサポートされています。
ArchivePathソース・パスの一般的な規則に従います:アリのようなワイルドカードが許されます。アーカイブの中でマッチしたファイルは最初のワイルドカードマッチに対応するディレクトリーに置かれます
例: release.zip!*.dll コマンドは、release.zip アーティファクトのルートにあるすべての.dllファイルを抽出します。

アーカイブ処理例

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

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

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

+:-: を使用して、特定のファイルをダウンロードまたはアンパックから除外することができます。 +: プレフィックスは省略可能なので、ルールはデフォルトで包括的であり、少なくとも1つの包括的ルールが必要です。規則の順序は重要ではありません。各成果物に対して、最も具体的な規則(最初のワイルドカード記号の前に最も長い接頭部を持つ規則)が適用されます。ファイルを除外すると、DestinationPathは無視されます。ファイルはまったくダウンロードされません。ファイルはアーカイブの解凍から除外することもできます。アーカイブコンテンツに適用される一連の規則は、アーカイブ自体と一致する一連の規則によって決まります。

独占パターンの例:

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

  • +:release-*.zip!**/*.dll=>dlls -:release-0.0.1.zip!Bad.dll は、release-*.zip ファイルから dlls ディレクトリーにすべてのdllをダウンロードして解凍します: release-0.0.1.zip からの Bad.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ロジックを持つように構成できます。


関連事項:

概念 : 依存ビルド