2015-10-29 3 views
7

私はVisual Studio Onlineのビルドツールを使用して、単一のソリューションからWebアプリケーションを展開しています。私はときどきファイルロックの問題にぶつかってきました。Visual Studio Online/Azure Powershellを使用してWebアプリケーションを停止および開始する

Error: Web Deploy cannot modify the file 'Microsoft.CodeAnalysis.CSharp.dll' on the destination because it is locked by an external process.

私はいくつかのグーグルで「Azure」にデプロイする前にWebアプリケーションを停止し、その後にバックアップを開始することを「フィックス」と考えています。合法的に聞こえる。

しかし、VSOのビルド定義でこれを直接行うのは簡単ではないようです。私は "Azure Powershell"ビルドタスクを作成しましたが、リポジトリからPS1ファイルが必要です。 Azure Powershellコマンド(例:Stop-AzureWebsite)をここから実行するだけではないようです。私のチームは、パラメータとして渡すコマンドを実行するだけの "run.ps1"を持つ回避策を作成しましたが、私たちの誰もそれに満足していません。

私たちは何が欠けていますか? PS1スクリプトをソース管理にチェックインさせることなくこれを行う簡単な方法があるはずです。

答えて

3

これはVisual Studio MarketplaceのAzure App Services - Start and Stop extensionをインストールすることで解決しました。
インストールすると、Azure AppServices StopAzure AppServices Startのタスクでリリース定義内のDeploy Website to Azureタスクをラップすることができ、ロックの問題を効果的に排除できます。

VSO Release tasks

+0

残念ながら私たちがJenkinsサーバーに移動したので、これを簡単に検証することはできません。これは正当に見えるので、私はこれに答えてマークします。私が見たとき、拡張部分には3/5個の星しかなかったが、かなり新しいように見える。うまくいけば、絡み合いはすぐにうまくいく。 – agartee

1

パッケージの正しいmsbuildパラメータを設定するビルド展開テンプレートを使用しましたか?どのようにhereを見ることができます。私はそのテンプレートを使用してビルドを作成し、同じ問題があるかどうかを確認します。もしそうなら、私はTwitterの@DonovanBrownにpingして、私は何が起こっているのか把握できます。

+2

はい、しかし、最近、このプロジェクトはAzureの上で、このエラーに悩まされている展開: ## [エラー] Web配置は、ファイル「Microsoft.CodeAnalysis.CSharpを変更することはできません。dll 'は外部プロセスによってロックされているため、宛先にあります。パブリッシュ操作を成功させるには、アプリケーションを再起動してロックを解除するか、次回のパブリッシュ時に.Netアプリケーション用のAppOfflineルールハンドラを使用する必要があります。 ## [エラー]詳細については、http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_FILE_IN_USEを参照してください。 – agartee

+0

補足として、私は本当にAzureの配備情報をプロジェクトのソース管理(グランスクリプトなどの形式)でチェックする必要はありません。私はむしろ私のビルドの定義に孤立したいと思います。 – agartee

+0

また、AppOfflineルールに関してこのリンク(http://www.iis.net/learn/publish/deploying-application-packages/taking-an-application-offline-before-publishing)が見つかりました。 Azure Web App Deployment/Additional Arguementsの手順でこれを渡すことができますか? – agartee

1

原則として、ビルドの一部としてソース管理にチェックインされるソフトウェアの展開に必要なスクリプトやコマンドを用意することをお勧めします。ビルドレベルでの設定はほとんどなく、繰り返し実行することができます。一貫性と透明性を提供します。

また、ビルドの一部として配布スクリプトを出力し、リリース管理ツールを使用して実際の配布を制御することもできます。

設定にかかわらず、コードはすべてのDevチームとOpsチームが生きるべきであるというマントラです。

+0

それは確かに意見です=) – agartee

2

"\"ではなく、フォルダ区切り記号の "Web Deploy Package"パスで "/"を使用しているかどうかを確認してください。

つまりは、私はそれが私はエラーを得ていたし、他の人(私は追加の再起動ステップが助けていませんでした)1間の唯一の違いに気づいた

$(System.DefaultWorkingDirectory)\My Project\drop\MyFolder\MyFile.zip 

ため

$(System.DefaultWorkingDirectory)/My Project/drop/MyFolder/MyFile.zip 

を変更します。パスを修正したら、私はそれを働かせました。

私の問題は気まずいですが、問題は解決しました。

関連する問題