私は継続的インテグレーションプロジェクトの次のステップに取り組んでいます。それは、TeamCityにアプリケーションをビルドさせ、すべてのアセンブリのバージョン番号を自動的に変更してから、インストーラーを作成することです。
最初に少し背景:
私は過去数か月間TeamCityを正常に実行しており、構成を構築し、NUnitテストとNCoverテストを正常に実行しています。
私はインストーラーの調査に少し時間をかけました-私は常にInstallShieldを嫌い、現在のアプリケーションではそれを考慮していませんでした。私はNSISが好きですが、たまたまWiXに出くわしました。複雑なプロジェクトでは危険であると理解しているMSインストーラアーキテクチャについての深い知識がないので、ある時点でそれについてさらに学ぶ必要があります。しかし、SOの質問、グーグル、ブログの閲覧を数日間行った後、WiXプロジェクトが正常にビルド、インストール、アプリケーションの実行、すべてが正常にアンインストールされました。素晴らしい!
また、TeamCityビルド構成で、すべてのアセンブリのバージョン番号を自動的に更新する必要がありました。開発マシンにMSBuildコミュニティタスクをインストールし、 BeforeBuildターゲットとFileUpdateタスクを使用してバージョン番号を変更する展開構成を作成することで、この機能をモックアップすることができました。これは適切に機能しますが、開発マシンには、置き換えるbuild_vcs_number_1環境変数がありません。
これが私が今いる場所です。TeamCityに更新を行わせる必要があります。build_vcs_number_1環境変数はありますが、WiXMSBuildコミュニティタスクを取得する方法がわかりません。
私が読んだある投稿では、MSBuildターゲットをSVNフォルダーにチェックインすることをお勧めします。このようなもののための/extlibフォルダーがあるので、TeamCityVCSチェックアウトルールは次のようになります。
+:tags/2010-10-15=>src
+:extlib=>extlib
環境変数からextlibにアクセスするにはどうすればよいですか? ビルドを実行すると、TeamCityはが見つからないと文句を言います(正しくはそうです)c:\wix30\MSBuildCommunityTasks
。実際のフォルダはC:\TeamCity\buildAgent\work\3e073d2b74226378\extlib\wix30\MSBuildCommunityTasks
です。サーバー側のチェックアウトを実行しているため、フォルダーは自動生成されます。そのため、正しいパスを取得するために使用できるTeamCityが設定する環境変数が必要です。
注意すべき点の1つは、ビルド構成->プロパティと環境変数に移動し、既存のすべての変数を含む直感的でないドロップリストを見つけましたが、作業パスを指す変数のように聞こえるものは何も表示されなかったことです。
考えられる回避策の1つは、ビルドサーバーにMSBuild Community Tasksをインストールするだけで、からアクセスできるシステム環境変数を作成できます<WixToolPath>
。
他に何か提案はありますか?