Team Cityスナップショットの依存関係を使用する場合は、スナップショットのポストビルドファイルを使用しているのか、単にSVNリビジョン番号を使用していますか?

1つのプロジェクトに2つのビルド構成があります。

  • Build & Test Code
  • Deploy Code

I want Deploy Code to run only if Build & Test Code built successfully, so I set up a snapshot dependency.

Does a snapshot dependency mean that Deploy Code will check out the same SVN revision as Build & Test Code and then run the NAnt script against that checkout, which will not contain the compiler generated post-build files? Or, will a snapshot dependency on Build & Test Code from Deploy Code mean that the NAnt will run against the post-build, working directory files of Build & Test Code on the build agent?

UPDATE:

It seems if I put a snapshot dependency on Build & Test Code for Deploy Code and I have a build of the latest revision for Build & Test Code, my NAnt script will deploy the post-build files for that build of Build & Test Code.

I would still like to confirm that I understand the concept, as I don't really understand the Team City documentation. I think I should probably make sure Deploy Code runs on the same build agent as Build & Test Code, otherwise I might run into a case where Deploy Code checks out the SVN revision and then just deploys the pre-build code files. Is this correct?

私の混乱は主に、Deploy CodeのVCS設定が必要なためです。リビジョン番号とスナップショットの依存関係を比較する必要があるからですか?

7

2 答え

Dependent Builds docoページのスナップショット依存関係セクションから:

ビルド構成Aからスナップショットへの依存関係   構成Bは、Aの各ビルドが「適切な」ビルドを有することを強制する   両方のビルドが同じソースのスナップショット(使用されたソース   リビジョンは同じ瞬間に対応しています)。

したがって、スナップショット依存のアイデアは、正常に実行された別のビルドとまったく同じコードベースに対してビルドを実行できるということです。

ビルドとテストコードが正常に実行された後にのみ "デプロイコード"ビルドを実行する場合は、2番目のビルドでスナップショットの依存関係を作成し、 "適切なビルドのみを適切なものから使用する"に設定されていることを確認します。

これは人工物とは何の関係もないことに留意してください。 2番目のビルドは単純に同じコードベースを引っ張り、それを再び全部再コンパイルします。最初のビルドから作成されたアーティファクトを展開する場合は、代わりにアーティファクト依存関係を見たいと考えています。これはPaulが答えたところで書いたもので、正しいアプローチです。

あなたのアップデートに関しては、ビルド後のファイルは、最初のビルド後にビルドエージェント上に残っているため、利用可能であるように聞こえます。最初のビルドを実行してから、エージェントで「ソースのクリーニング」を実行し、2番目のビルドを実行してみてください。オリジナルのコンパイル出力はもはや存在せず、失敗するでしょう。複数のビルドエージェントがある場合や、2つのビルドの間にある程度の時間がかかる場合は、まだそこに存在する人工物として保存されていない出力に依存できないため、これは重要です。

はい、TeamCityのドキュメントは混乱しています:)

7
追加された
私はあなたの記事シリーズに続いて、 "ビルドとテストコード"設定の "デプロイコード"設定でビルドトリガーを持っていることを述べておきたいと思います。したがって、それは成功したビルドによって引き起こされます。私のケースでは、ビルド後のファイルはまだ存在します。なぜなら、ビルドエージェントは1つしか実行されていないためです。「デプロイコード」はすぐには「テストコードのビルドと実行」の直後でなければなりません。とにかく、それはよりよい方法であると思われるので、私はちょうど人工物を節約するように切り替えると思う。
追加された 著者 JustinP8,
それはパッケージに適していますか?私にはたくさんのパッケージがあります。私のプロジェクトのほとんどはそれらを使用しています。すべてのパッケージのみを収集し、それを他のすべてのビルドのスナップショット依存として使用するBuildを作成できますか?
追加された 著者 dariol,

私はTeamCityのセットアップが非常に似ていますが、MSBuildはNAntではありませんが、同じ2ステップのビルドプロセスを使用しています。どのように設定したのか説明したらうまくいけば、何をする必要があるのか​​理解できるようになります。

私のセットアップでは、ビルド1はソース管理からコードを取り出し、コンパイルして単体テストを実行します。次に、デプロイメントに必要なすべてのファイルを成果物としてパブリッシュします。

ビルド2にはビルド1のアーチファクト依存関係のスナップショットがあり、これはコードを作成しないということを意味し、単にビルド1のアーチファクトを取り出して展開するだけです。

実際には、これはビルド2をトリガーできることを意味し、2つのうちの1つが起こります。ビルド1が最新の場合は、ビルド1の最後の成功ビルドの成果物を単純に配置します。ただし、ビルド1が最新でない場合、TeamCityは自動的にビルド1を起動し、その後ビルド2を実行します。ビルド。

6
追加された
以前はこの種の設定を見てきましたが、アーティファクトの依存関係は必要ではないと思います。ビルド/テストの設定に依存するNAntコピースクリプトを実行する概念実証が今ではあります。これまでのところうまく動作しているようですが、ビルドによって生成された.dllが含まれないケースがあるかどうかはわかりません。私はちょうどそれが何かをチェックアウトしていない場合は、ビルド上のVCS設定が必要であることをちょうど混乱していると思う、依存関係からポストビルドファイルを使用しています。私はリビジョン番号を比較するためだと思います。
追加された 著者 JustinP8,