Nous utilisons Jenkins sur Win8 x64 pour créer (msbuild), package (cspack), exécuter (csrun) et tester (nunit) un projet de services cloud Azure. Les émulateurs du service cloud Azure doivent s'exécuter en tant qu'administrateur et nous devons nous lier aux ports 80/443 (nous ne pouvons donc pas utiliser d'émulateurs "légers").
Nous faisons ce qui précède via un simple fichier .bat que Jenkins exécute. En général, aucun utilisateur ne se connecte à la machine, il démarre et Jenkin's s'exécute en tant que service qui surveille constamment notre dépôt GIT et nos e-mails en cas d'échecs. Un administrateur se connecte manuellement à la machine uniquement pour la maintenance (par exemple, appliquer des correctifs ou redémarrer la machine, etc.)
Comment configurer Jenkins pour exécuter ce .bat en tant qu'administrateur sans interaction humaine?
Avec une interface utilisateur de bureau, nous pouvons cliquer avec le bouton droit sur une invite de commande, exécuter en tant qu'administrateur, reconnaître l'invite UAC, obtenir l'invite de privilèges élevés et exécuter le fichier .bat.
Notre solution était d'exécuter le service Jenkins en tant qu'utilisateur administrateur local distinct. Après avoir installé Jenkins, Démarrer => 'services' => Faites défiler jusqu'au service Jenkins => clic droit => propriétés => "se connecter" => "ce compte" => spécifiez un compte administrateur local.
Espérons que dans les versions plus récentes de Jenkins, cela puisse fonctionner comme le SERVICE RÉSEAU standard, mais pour une raison quelconque, cela ne fonctionnait pas avec notre boîte.
Une des solutions:
D'une manière ou d'une autre, le fichier sera exécuté sur le serveur esclave mais il retournera l'échec sur Jenkins.
Si vous vous connectez à la machine Widows en tant qu'administrateur et exécutez l'agent esclave à partir de cet utilisateur, tout s'exécutera sous l'utilisateur administrateur