2017-05-11 11 views
0

一部のプロジェクトでは継続的インテグレーションの設定プロセスを進めており、TFSを使用していますが、いくつかのリリース定義に問題があります。デプロイメントのビルドプロセスで作成されたWeb Deployパッケージを使用します。これまでのところ、我々が持っているビルド定義は以下の通りですリリースプロセスの相対パスとしてartifactディレクトリパスを取得します

enter image description here

パッケージの作成のためのパスはデフォルトですので、我々はアーティファクトディレクトリ内にそれを見つけることができます。しかし、問題は、サーバーのWebサイトのターゲットフォルダにあるファイルを抽出するときです。

我々が使用しているリリースの定義は次のとおりです。ダウンロードアーティファクト段階でこの部分で enter image description here

リリースを行うエージェントは、ビルドプロセス中に公表されたファイルへのアクセス権を持っているので、ここでは場所を知ります。 zipパッケージは$(System.ArtifactsDirectory)を使用してパスを持つことができますが、Deploy IIS Appタスクを使用すると、リリースを行っているサーバーと$(System.ArtifactsDirectory)に接続していますエージェントが設定されている成果物のローカルアドレスを与え、変数はC:\ agent_work \ r1 \ aのようなパスを与えます.Cはエージェントのローカルアドレスであり、.zipファイルはそのアドレスに存在しません。 \ Myserver \ $(System.ArtifactsDirectory)....のような新しいパスを構築することはできません。なぜなら、$(System.ArtifactsDirectory)は絶対パスであり、結果としてパス全体が\ Myserver \ C: \ Myfolder ....

私たちは他の解決策が必要です。ビルドプロセスでは、別のフォルダにパッケージを作成することを検討しています。この場合、パッケージはどこにあるのか常にわかります。エージェントに依存しませんこの方法でWeb Deploy Package path:\ Myserver \ packagefolder \ file.zipとして使用できますが、別のソリューションを使用したいと考えています。

アーティファクトフォルダに相対パスなどを使用する方法はありますか?

答えて

0

Windows Machine File Copyタスクを使用して、エージェントからリリースを実行しているサーバーにパッケージファイルをコピーできます。

このタスクを使用して、アプリケーションファイルなどのWindowsマシン上のアプリケーションをインストールする に必要とされる PowerShellスクリプトとPowerShellの-DSCモジュールなどの他の成果物をコピーします。それはRoboCopy、データの高速コピー用に構築された コマンドラインユーティリティを使用します。

エージェント上のパッケージファイルを処理する一時フォルダを使用できます。例えば、Build.StagingDirectoryBuild variables

MSbuildの引数に/p:PackageLocation="$(Build.StagingDirectory)\\のようなパッケージの配置を追加します。次に、Windows Machine File Copyタスクを使用して、StagingDirectoryからリモートサーバーのローカルフォルダーにファイルをコピーします。

関連する問題