2010-11-22 2 views
2

SynopsisRéglage de l'utilisateur de processus d'Hudson sur Mac + Tomcat

Je Hudson mis en place sur notre Mac OS Server (Snow Leopard 10.6.5), fonctionnant sous la norme Tomcat (donc, Tomcat 6) qui est activé en utilisant l'application Admin Serveur. J'aimerais pouvoir exécuter mes scripts Hudson en tant qu'utilisateur/connexion Unix, ce qui n'est pas la connexion Tomcat.

Détails

Mon travail d'Hudson est un projet libre qui exécute les scripts bash qui font appel à xcodebuild (c'est un projet iPhone) pour nettoyer et construire la construction. Le problème est que, en utilisant cette configuration standard, Hudson (pour autant que je puisse voir) fonctionne avec l'utilisateur Unix de Tomcat, qui est _appserver.

Cela signifie que _appserver est l'utilisateur qui appelle xcodebuild et tous les scripts qui composent le travail. Je préférerais qu'Hudson ait son propre identifiant Unix, complet avec le répertoire personnel, etc. En plus d'être un peu plus heureux des permissions etc. du login qui essaie de faire la compilation, Xcode lui-même semble préférer le utilisateur d'avoir un répertoire d'accueil, et les journaux de construction sont remplis avec des avertissements tels que:

2010-11-11 17: 29: 11,729 Interface Builder Cocoa touch Tool [58771: 1903] CFPreferences: répertoire personnel à file: // localhost/var/empty/Bibliothèque/Application% 20Support/iPhone% 20Simulator/User/n'est pas disponible. Les domaines d'utilisateurs seront volatils.

et

Impossible d'ouvrir le partage des capacités GSCapabilities de mémoire (No such fichier ou répertoire)

De plus, je soupçonne obtenir les profils de provisionnement pour travailler à construire dispositif construit serait beaucoup plus facile si le login était un login standard qui peut construire les cibles à partir de Xcode.

MAIS je ne trouve absolument aucun moyen de définir le compte de connexion! Il semble exactement le genre de chose que vous voulez faire, mais avez parcouru le web pour obtenir des informations en vain. Le tomcat-users.xml s'est senti comme il peut être utile, mais n'a pas semblé lier à un "vrai" (Unix) utilisateur?

Une autre approche peut être de vivre avec Hudson étant _appserver, mais avoir les scripts eux-mêmes s'exécuter en tant que mon utilisateur de construction. Cela semble pointer vers l'utilisation sudo mais tout semble être ainsi verrouillé Je ne peux pas trouver un moyen d'exécuter un script en tant qu'un autre utilisateur, même un que je peux verrouiller pour avoir un accès de sécurité minimal ...?

J'espère que vous pouvez aider les gens!

Répondre

1

La façon la plus simple d'obtenir ce que vous voulez (et la seule façon que je connaisse) serait la suivante:

Créer un nouvel esclave à Hudson, et le pointer vers le serveur Hudson (votre système maître aussi maintenant un nouvel esclave); Il faut se connecter en utilisant SSH, mais avec les informations d'identification de l'utilisateur que vous voulez utiliser pour la construction (disons 'hudson').Pointez votre projet pour construire sur l'esclave.

De cette façon, votre travail ne dépend pas de Tomcat (ou de son utilisateur), mais de la connexion de l'esclave.

Dans les étapes:

1) Click on 'Build Executor Status' 
2) On the left sidebar, click on New Node 
3) Give the slave a name, click "Dumb Slave", and "OK" 
4) Number of executors = 1 
5) remote FS root = /home/<hudson_user> 
6) Launch method = UNIX SSH or JNLP 
7) If launch = SSH: host = ip address of master, 
    username = hudson, password =  hatever_password 
8) If launch = JNLP, log in as the hudson user, go to hudson and start 
    the web service from your hudson site 
9) Configure your job to use your slave (restrict where this project can be run) 
9a) Possibly, under configuration, turn off all executors on your master, 
    and use the new slave for anything you need to build. 

Je sais que cela semble un peu alambiquée, mais si vous avez besoin de plus d'explications ou avez des questions, laissez-moi savoir.

+0

l'avantage de ceci est que vous n'avez pas à jouer avec la configuration de tomcat – Sagar

+0

L'inconvénient est que vous ajoutez un peu de surcharge, surtout lorsque vous archivez de gros artefacts. En outre, le journal de construction doit être copié de l'esclave au maître. –

+0

Comment ça? En supposant que la construction ait lieu directement sur le maître (ce qui est dans ce cas), l'artefact devra encore être copié de l'espace de travail vers le répertoire des archives. La seule différence ici est qu'au lieu d'être copié de l'espace de travail du maître dans le répertoire d'archives du maître, il est copié de l'espace de travail de l'esclave - l'esclave et le maître * sont le même système *, donc pas de surcharge. – Sagar

Questions connexes