Win8 x64でJenkinsを使用して、Azureクラウドサービスプロジェクトのビルド(msbuild)、パッケージ(cspack)、実行(csrun)、テスト(nunit)を行っています。 Azureクラウドサービスエミュレーターは管理者として実行する必要があり、さらにポート80/443にバインドする必要があります(したがって「ライト」エミュレーターは使用できません)。
Jenkinsが実行する単純な.batファイルを介して上記を実行しています。通常、ユーザーはマシンにログインせず、マシンが起動し、Jenkinはサービスとして実行され、障害が発生した場合にGITリポジトリとメールを監視し続けます。管理者は、メンテナンスのためだけに手動でマシンにログインします(例:パッチの適用またはマシンの再起動など)。
人手を介さずに管理者として.batを実行するようにJenkinsを構成するにはどうすればよいですか?
デスクトップUIを使用して、コマンドプロンプトを右クリックし、管理者として実行し、UACプロンプトを確認して、昇格された特権のプロンプトを取得し、.batファイルを実行します。
私たちのソリューションは、Jenkinsのサービスを別のローカル管理ユーザーとして実行することでした。 Jenkinsのインストール後、スタート=> 'サービス' => Jenkinsサービスまでスクロール=>右クリック=>プロパティ=>「ログオン」=>「このアカウント」=>ローカル管理者アカウントを指定します。
うまくいけば、新しいJenkinsのビルドでは、標準のNETWORK SERVICEとして機能しますが、何らかの理由で、私たちのボックスでは機能しませんでした。
解決策の1つ:
どういうわけか、ファイルはスレーブサーバーで実行されますが、Jenkinsでは失敗を返します。
Widowsマシンに管理者としてログインし、このユーザーからスレーブエージェントを実行すると、すべてが管理者ユーザーの下で実行されます