2010-12-10 7 views
1

これはケーキの一枚でなければならないが、私は困惑している継続的な統合の人気のように感じる。私はHGでTeamCityを設定しています。 TeamCityが監視し、変更が反映されたリポジトリにチェンジセットをプッシュできるようにしたい。それは簡単です。TeamCity + HG。唯一のプル(プッシュ?)は、ビルドを渡す

次に、ビルドが合格すると、チェンジセットを渡すだけの "クリーン"リポジトリにそのチェンジセットをプルしたいと思います。簡単ですが...

TeamCity 6は複数のビルドステップをサポートしており、いずれかのステップが失敗した場合、残りの部分は実行されません。私の考えは、クリーンなリポジトリに渡すチェンジセットを取得するためにプル(またはオプションでプッシュ?)を行う最後のビルドステップを置くことでした。

私はPsExecを使用して、リポジトリのボックスでhgを実行しようとしています。

私は単に 'hg pull'を実行しようとすると、パスに設定されていても-hフラグを使用していてもhg.exeを見つけることができません。

私はリビジョンパラメータを取るきれいなリポジトリに.batファイルを置こうとしましたが、ローカルで正常に動作します。 PsExecを使用して.batファイルをリモートで実行しようとすると、すべてうまく実行されますが、ビルドエージェントで実行しようとします。 -w引数を設定しても、そこに.batファイルが実行されますが、ビルドエージェントボックスで内容を実行しようとします。

私のアプローチはちょっと離れていますか?このように思えるのはかなりわかりやすいことです。私のGoogleのスキルが低下しているか、誰もこれが書くのにふさわしいと誰も思っていません。いずれにせよ、私はSVNの土地に出かけるのをやめているので、助けていただければ幸いです!

答えて

0

あなたのPowerShellプロファイルに次の行を追加します。

function hg { 
    cmd /c hg.exe $args 
} 

それはhg.exeを認識しない場合は、あなたがあなたのパスに追加する必要がある場合があります

$env:Path = $env:Path + ";C:\Program Files\TortoisHG\"; 

(あなただけを入力することができますnotepad $profileをコマンドプロンプトに入力すると、メモ帳で編集できるファイルが開きます。&をコピーして終了して終了します。

PowerShell alias syntax for running a cmd.exe builtin function?を参照)

1

コマンドを直接実行する代わりに、代わりにシェルで実行してみましたか?これにより、期待している環境変数を確実に取得できます。コマンドシェルを使用しない場合は、環境を設定せずにコマンドを直接実行するので、hg実行可能ファイルへのパスを完全に指定する必要があります。もちろん、適切なマシン名とHGサブコマンドに追加psexec c:\windows\system32\cmd.exe /c hg.exe

は、以下のようなPSEXECためのコマンドラインを試してみてください。

+0

これは実際に動作するように機能しました... ish。 –

+0

これを答えとしてマークしてください... ish。あなたのためにそれについて何がありますか? –

+0

申し訳ありませんが...投稿した後に昨夜それをやろうとしましたが、投稿してからスタックが約30秒間保守のためにダウンしました。 :) TeamCityサービスがリモートボックスへのアクセス権を持つアカウントで実行されていることを確認する必要がありました。唯一のことは、psexecを-dで実行すると、起動したPIDの終了コードが返されることです。 -dを指定せずに実行すると、無期限にハングアップします。残念ながら、TeamCityは、合否を判断するために終了コード0に依存しています。しかし、ヒントをありがとう、それは実際にバッチファイルを実行するものがあり、それは私が立ち往生していたものです。 –

関連する問題