9

ユーザーの資格情報を渡したときに、MSDeploy のデプロイが TeamCity でうまく機能していました。コマンド ライン パラメーター (一部の値には環境変数を使用) は次のとおりです。

MSBuild.exe Web.csproj
/P:Configuration=%env.Configuration%
/P:DeployOnBuild=True
/P:DeployTarget=MSDeployPublish
/P:MsDeployServiceUrl= https://%env.TargetServer%/MsDeploy.axd
/P:AllowUntrustedCertificate =True
/P:MSDeployPublishMethod=WMsvc
/P:CreatePackageOnPublish=True
/P:UserName=%env.AdminUser%
/P:Password=%env.AdminPassword%

うまくいきました。しかし、今は統合認証を使用したいと考えています。Can MSBuild deploy using integrated authentication or only basic?から Troy の提案に従ってみました。しかし、それはうまくいきません。空白のユーザー名を渡して指定するさまざまな組み合わせを試しました

/p:AuthType=NTLM

最も近い方法は、 /p:AuthType=NTLM を指定して空のユーザー名を渡すことです。しかし、それでも次のエラーが発生します。

Web 管理サービスを使用して宛先コンピューター ("[自分の宛先サーバー名]") に接続しましたが、認証できませんでした。正しいユーザー名とパスワードを使用していること、接続先のサイトが存在すること、資格情報がサイトへのアクセス許可を持つユーザーを表していることを確認してください。リモート サーバーがエラーを返しました: (401) Unauthorized

ローカル サーバーとリモート サーバーの両方で Web 管理サービスを実行しています。両方のインスタンスを、サイトへの適切なアクセス権があることがわかっているユーザーとして実行するように変更しました。これは、資格情報を手動で渡す場合に機能するのと同じユーザーです。

また、宛先サイトでそのユーザーに IIS マネージャーのアクセス許可を手動で付与しようとしました (ただし、資格情報が手動で渡されたときにユーザーがサイトに公開できるため、なぜそれが必要なのかはわかりません)。

私が気付いていることの 1 つは、WMsvc ログに、NTLM 認証で行われた試行のユーザー名が記録されていないことです。

ここで何が起こっているのか分かりません。TeamCity 構成にユーザー資格情報を保存する必要はありません。

ありがとう。

4

3 に答える 3

12

私はこれについて提出して答えるのが少し遅れていることを知っていますが、この種の問題を追っている他の誰かの利益のために、私はこれを機能させることができました.

OP と同様に、Windows Server 2008R2 で TeamCity を取得して、WMsvc を使用してリモート IIS 7.5 サーバーで Web サイトを公開しようとしていました。

これらの手順をすべて完了するまで、401 エラーに悩まされていました。

  • AuthType=NTLM パラメーターが設定されていることを確認します。

  • Username パラメーターが指定されていることを確認しますが、値は空白に設定してください。

  • リモート Web サーバーで NTLM 認証が有効になっていることを確認します。これには、レジストリ エントリの追加が含まれます。

    HKLM\Software\Microsoft\WebManagement\Server
    DWORD WindowsAuthenticationEnabled = 1
    
  • ビルド サーバー上でビルド エージェントが実行されるユーザー コンテキストが、WMsvc への Windows 統合認証接続を正常に実行できることを確認します。実際には、このユーザーとしてビルド サーバーにログオンし、IE を開き、対象の Web サイトをローカル イントラネット ゾーンに追加する必要がありました。基本的に、認証プロンプトや 401 エラーなしですぐにアクセスできるようになるまで、この URL にアクセスして IE の設定を変更し続けました。

    https://[the server]:8172/MsDeploy.axd?site=[the site]
    

ちなみに、認証が機能するようになったとき、リモート WMSvc は代わりにブラウンザーで 404 エラーを返し始めました。これは良い兆候であることが判明しました。このプロセス中に、ビルド サーバーによって信頼されたリモート WMsvc に SSL 証明書も設定しました。必要ではないかもしれませんが、テストには役立ちました。

上記を完了すると、TeamCity のデプロイで次のエラーが報告され始めました。

An error occurred when the request was processed on the remote computer.
The server experienced an issue processing the request. Contact the server administrator for more information.

イベント ログに有用なものは見つかりませんでしたが、ここでの修正は、認証されたユーザーがターゲット フォルダーに対して必要なファイル システム アクセス許可を持っていることを確認することだけでした。もっと厳選したいかもしれませんが、私は彼らに Inetpub のフル コントロールを与えただけです。

于 2013-02-25T03:46:34.397 に答える
1

使用するアカウントでビルド エージェント サービスが実行されていますか? あなたは Web 管理サービスについて言及していますが、実際に作業を行っており、権限を必要とするのはビルド エージェントであることを思い出してください。

于 2011-11-09T02:59:20.230 に答える
0

デプロイメントは TeamCity-Agent のアカウントで実行されると仮定します。これはあなたのエラーを説明します。このアカウントに展開のための適切な権限があることを確認してください。

于 2011-11-08T18:29:57.667 に答える