TeamCity 2020.1ヘルプ

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

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

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

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

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

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

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

オプション

説明

に依存

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

から成果物を入手する

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

ビルド番号

このフィールドは、選択した場合に表示されます。 build with specific build number in the から成果物を入手する list.
Specify here the exact build number of the artifact.

ビルドタグ

このフィールドは、選択した場合に表示されます。 last finished build with specified tag in the から成果物を入手する list.
Specify here the tag of the build whose artifacts are to be used. When resolving the dependency, TeamCity will look for the last successful build with the given tag and use its artifacts.

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

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

成果物ルール

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

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

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

Each rule specifies the files to be downloaded from the "source" build. The ソース・パス should be relative to the artifacts directory of the "source" build. The path can either identify a specific file, directory, or use wildcards to match multiple files. Antのようなワイルドカード are supported.
Downloaded artifacts will keep the "source" directory structure starting with the first * or ? .
DestinationPath specifies the destination directory on the agent where downloaded artifacts are to be placed. If the path is relative (which is recommended), it will be resolved against the build checkout directory. If needed, the destination directories can be cleaned before downloading artifacts. If the destination path is empty, artifacts will be downloaded directly to the checkout root.

基本的な例:

  • 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 is used to extract downloaded compressed artifacts. Zip, 7-zip, jar, tar and tar.gz are supported.
ArchivePath follows general rules for ソース・パス : ant-like wildcards are allowed, the files matched inside the archive will be placed in the directory corresponding to the first wildcard match (relative to destination path)
For example: release.zip!*.dll command will extract all .dll files residing in the root of the release.zip artifact.

アーカイブ処理例

  • 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というファイル

The artifacts placed under the .teamcity directory are considered hidden. These artifacts are ignored by wildcards by default.
If you want to include files from the .teamcity directory for any purpose, be sure to add the artifact path starting with .teamcity explicitly.

非表示の成果物にアクセスする例

  • .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"/>

where TEAMCITY_HOST is hostname or IP address of your TeamCity server (without port and servlet context).
As USER_ID/PASSWORD you can use either username/password of a regular TeamCity user (the user should have corresponding permissions to access artifacts of the source build configuration) or system properties 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プロジェクト構成の使用が含まれます。このページで:手動で新しいビルド構成を作成する、URLから新しいビルド...

クリーンアップ

TeamCityのクリーンアップ機能により、古いビルドデータや不要なビルドデータを自動的に削除できます。このページで:サーバーのクリーンアップ設定手動クリーンアップ起動、クリーンアップ規則基本ルール依存関係ビルドの基本ルールの動作、フィーチャーブランチを使用したビルド構成の基本ルールの動作、パーソナ...

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

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