問題タブ [psake]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
powershell - Powershell Copy-Itemコマンドがpsakeスクリプトで失敗する原因をデバッグ/診断するにはどうすればよいですか?
psakeの規則(および例)に従って、タスクビルドセクションでCopy-Itemを使用する非常に単純なスクリプトがあります。今のところ、この問題をデバッグするためのスクリプトを単純化するために行うのはこれだけです。
エラー:
2011/07/18 5:40:57 PM:エラーが発生しました:
Exec:コマンドの実行中にエラーが発生しました:Copy-Item "$ src_dir .. \ somefolder * .dll" $ bin_dir
Write-Hostを介してファイルパスを出力しようとしましたが、問題なく表示されます。
これをデバッグしてください。スクリプトコード(Copy-Item)をpsakeとは別に機能させることは目的ではありません。
スクリプト:
また注意してください:
このスクリプトは機能していて、ごく最近では断続的に失敗するだけでしたが、現在はより一貫して失敗しているようです。
経由で実行:
teamcity - TeamCity + Psake + SqlCmd Powershell 無限ループ
TeamCity 6.5.2 で Powershell Runner を使用して、SqlCmd を呼び出すタスクに依存する Psake タスクを実行しようとしています。これを行おうとすると、最終的にタイムアウトするかエラーが発生するまで、teamcity が無限ループに入るようです。
TeamCity で -Command オプションを使用しています。そうしないと、TeamCity にバブリングしないというエラーが発生します。
SqlCmdと関係があるようです。このブログを見つけて、sqlcmd エンコーディングを Unicode に微調整しようとしましたが、うまくいきませんでした。
他の誰かがこの動作を見たことがありますか? もしそうなら、修正方法はありますか?
msdeploy - アンパサンドを含むパラメーターを指定して msdeploy.cmd を呼び出す psake
デプロイを管理するための psake スクリプトがあります。プロセスは次のとおりです。
- テストのコンパイルと実行
- msbuild を使用して展開パッケージを生成する
- 内部または外部に展開しているかどうかを確認する
- 内部の場合は、生成された cmd ファイルを実行します
- 外部の場合、ユーザー名とパスワードの入力を求め、ユーザー名とパスワードをパラメーターとして生成された cmd ファイルを実行します。
外部に展開するときに、次の方法で msdeploy を実行しています。
パスワードにアンパサンド (&) が含まれている場合、cmd ファイルは、パラメーターを変数に割り当てるときに & の前にパスワードの部分を割り当て、後でその部分を実行しようとすると想定しています。これはbatファイルの動作です(&はコマンドを区切るために使用されます)。
パスワードのプロンプトでキャレット (^) を使用してパスワードをエスケープしようとしましたが、うまくいきませんでした。
パスワードを変更する以外に、他に代替手段はありますか?
powershell - PSAKE powershell&実行されていないタスクを実行します
PSAKEスクリプトを機能させようとしています。タスクがその中の機能を実行していないようですか?
私は2つのファイルを持っています
現時点では、実際には何もせずに、タスク内にリストされているものを「印刷」しているように見えます。私は何が欠けていますか?ありがとう
申し訳ありませんが、私は本当に最初にCOPYメソッドを機能させたいだけです--thx
助けてくれてありがとう-私はあなたのすべての提案をしましたが、それでも運がありません。
PSAKEタスクではなく、コードを「インライン」にすると、コードは正常に実行されます。
私は今これを持っています
--build.ps1 $ framework = '4.0'
これの出力は次のとおりです。
したがって、タスク内の関数は印刷されているようです。
コピー機能は実行されませんでした-パイプされた.SvcLogファイルも削除されません
つまり、私が期待する画面上
「タスクのデプロイを開始する」
それ以外の
Write-Host'タスクのデプロイを開始'
私はそれを機能させるために努力し続けます。
ご協力いただきありがとうございます!!!
powershell - psake、exec、および msbuild を使用しているときにディレクトリを正しくエスケープするにはどうすればよいですか?
PowerShell で次のコマンドを実行できます。
パスは変更されていますが、実際のパスには間隔のあるコンポーネントも含まれています。ダブルスラッシュは、たとえばこの回答のトリックです。
それを直接実行するとmsbuild
、パスがわかりました。ただし、次のように psake で実行する必要があります。
パスにスペースが含まれていない場合は機能しますが、スペースを使用して動作するように調整したいと考えています (sln パスと OutDir の両方)。試してみましたが、エスケープがわかりませんでした。
編集:
明確にするために、psake でフルパスをハードコーディングしても機能します。
ただし、OutputDir 変数を使用する必要があります (ダブルスラッシュでエスケープされていません)。そのため、そのための一時変数を追加してから、コマンド ラインを作成してみます。
これは機能しません (いくつかのバリエーションを試しました)。上記で、「MSB1008: 指定できるプロジェクトは 1 つだけです。」
msbuild - Teamcityは、PowerShellから実行されたときにmsbuildまたはnUnitの障害を検出しません
Teamcityで実行しているpsakeを使用してビルドスクリプトを作成しました。
私はTeamcity6.0を使用しているので、.cmdからpsakeを実行しますが、それによって何も変わるとは思いません。
すべてが正常に機能していますが、2つの問題があります。
NunitはTeamcityと通信していないため、テストが失敗すると、Teamcityはすべてが正常であると言います。
MsBuildは同じように動作します。ビルドが失敗しても、Teamcityは成功を報告します。
Teamcityでこれらの障害を検出する方法を知りたいです。
これが私のサンプルスクリプトです:https ://github.com/MikeEast/BuildTests/blob/master/build/build.ps1
asp.net-mvc - TeamCityによってトリガーされるビルドステップは、変更がない場合でも常にビルドされます
問題: TeamCityをASP.NETMVCプロジェクトのビルドサーバーとして設定しています。Powershellとpsakeを使用して、.csprojファイルに対してmsbuildを実行し、デプロイ可能なパッケージを作成しています。ビルドサーバーから、PowerShellを開いてスクリプトを実行できます。ソースコードが変更されていないため、msbuildはプロジェクトDLLファイルを再生成しません。ただし、TeamCity Webインターフェイスからまったく同じスクリプトを呼び出すと、変更がない場合でも、msbuildは常にDLLファイルを再構築して再生成します。それがAFAIKをすべきではありません。
この問題を1つのステップに絞り込みました。簡単にするために、ソース管理を使用しないようにTeamCity構成を設定しました。これにより、PowerShellスクリプトを呼び出す単一の「PowerShell」ビルドステップが実行されます。
PowerShellスクリプトは、次の1つのコマンドを実行します。
PowerShellコマンドラインからスクリプトを手動で呼び出すと、次のように表示されます。
TeamCityを介してまったく同じスクリプトを呼び出すと、次のように表示されます。
TeamCityからこのスクリプトを実行すると、msbuildが変更を検出して再構築するのに、まったく同じスクリプトを手動で実行しない理由はありますか?
更新: これは、TeamCity Powershellランナーの癖が原因である可能性があると考えて、スクリプトをPowershell.exeに渡し、コマンドラインランナーを使用して呼び出すバッチファイルを作成してみました。
まったく同じ動作になります。コマンドラインからこのバッチファイルを呼び出すと、msbuildはコンパイルをスキップします。TeamCityから呼び出すと、DLLが再コンパイルされます。
更新#2: ユーレカ!msbuildで診断デバッグをオンにして、強制的な再コンパイルの原因を見つけました。これは、GenerateTargetFrameworkMonikerAttributeターゲットが原因で発生します。ログ出力のキービットは次のとおりです。
このターゲットは、TEMP環境変数で指定されているように、TEMPディレクトリにAssemblyAttributesファイルを作成/更新しているようです。どうやらTeamCityはTEMP環境変数をオーバーライドし、それをC:\ TeamCity \ buildAgent \ temp \ buildTmpに設定し、このディレクトリはすべてのビルドの前にクリーンアップされるようです。
これは、PowershellからGet-ChildItem Env:を呼び出すとわかります。
しかし、TeamCityから呼び出されたPowerShellスクリプトから呼び出すと、次のようになります。
重要な点は、このファイルが認識された後、次のことです。
そして、これがプロジェクト全体が再コンパイルされる理由です。
Powershellからスクリプトを実行すると、一時ディレクトリが変更またはクリーンアップされず、ビルドが期待どおりに実行されます。
したがって、このAssemblyAttributesファイルが作成されるディレクトリを変更する方法、またはTeamCityに別のTEMPディレクトリを使用するように指示する方法を知っている人はいますか?これは他の人が遭遇した問題だと私は信じなければなりません。
ありがとう!
msbuild - psake を MsBuild と統合する
CIにMSBuildを使用しています。私は最近、毎日のビルド用のスクリプトを作成するための追加ツールとして psake を探していました。これは、ビルドを更新する必要があるためです。現時点では、多くの作業が必要なため、既存のスクリプトを置き換えるつもりはありませんが、既存のスクリプトを保持し、psake を使用して新しいスクリプトを追加します。
私の質問は、TFS でビルドを作成するときに、ソリューションのビルド後に psake スクリプトを実行するにはどうすればよいですか? 私の理解では、ビルドの実行後に新しいターゲットを追加し、psake/powershell を実行する必要があります。これは正しい方法ですか?
visual-studio - psakeを使用してVisualStudio2003ソリューションまたは.NET1.1プロジェクトをビルドする
残念ながら、私は.NETバージョンのプロジェクトを混在させました。一部のレガシーコードは.NET1.1にあり、その他は.NET3.5にあります。使えない
msbuildは.NET1.1ソリューションのコンパイルをサポートしていないためです。
psakeを使用して.NET1.1ソリューションを構築するにはどうすればよいですか?psakeはかっこいいと思い、活用したいと思います。
コマンドプロンプトで、私はすることができます
しかし、psakeビルドファイル内で同じことをどのように行うのか理解できません。
continuous-integration - TeamCityビルドエージェントはどこからパス環境を取得しますか?
プロジェクトをビルドするためにTeamCityをセットアップしようとしていますが、psake buildscriptが失敗します。その理由は、パス上にあるはずのgit実行可能ファイルが見つからないことに絞り込まれているためです。PowerShellを起動して自分で実行すると、すべてが正常に機能します。
パス環境変数の内容(Windowsの[環境変数]ダイアログの[システム変数]リスト、およびのレジストリに表示されているHKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment\Path
)は次のとおりです。
それでもTeamCityは、そのenv.Pathは
コンピューターを(複数回)再起動しましたが、まったく役に立ちません。
TeamCityビルドエージェントのPATH変数がシステムのデフォルトと異なるのはなぜですか?また、どうすれば修正できますか?