2017-02-09 1 views
0

Nous avons installé notre serveur Jenkins avec un mac esclave, qui fonctionne sur ma machine de développement locale. Il a été créé pour créer des applications d'application par electron/node.js.Construire Errror "spawn spctl ENOENT" sur MAC OS X Esclave qui fonctionne avec Jenkins

Jenkins se connecte à mon ordinateur x via ssh et mon nom d'utilisateur/mot de passe. Je peux voir que pendant la construction notre app-répertoire est fait et enregistré sur ma machine à l'emplacement spécifié. (slave.jar, répertoire de l'espace de travail, etc.).

Le Jenkins dirige maintenant dans une erreur comme suit si le début de la signature de code:

[mac] [ExampleApp] Running shell script 

[mac] + npm run dist-mac 
[mac] 
[mac] > [email protected] dist-mac ../workspace/Example-App/ExampleApp 
[mac] > build -m 
[mac] 

[mac] Warning: "directories" in the root is deprecated, please specify in the "build" 

[mac] Rebuilding native production dependencies for darwin:x64 

[mac] Packaging for darwin x64 using electron 1.4.13 to ../ExampleApp-dist/mac 

[mac] Signing app (identity: Developer ID Application: Example Company Name (ABCDEFGHIJKLMNOPQRSTUVWXYZ)) 
[mac] 

[mac] Error: spawn spctl ENOENT 
[mac]  at exports._errnoException (util.js:1023:11) 
[mac]  at Process.ChildProcess._handle.onexit (internal/child_process.js:193:32) 
[mac]  at onErrorNT (internal/child_process.js:359:16) 
[mac]  at _combinedTickCallback (internal/process/next_tick.js:74:11) 
[mac]  at process._tickCallback (internal/process/next_tick.js:98:9) 
[mac] From previous event: 
[mac]  at MacPackager.sign (/usr/local/lib/node_modules/electron-builder/out/macPackager.js:253:11) 
[mac]  at /usr/local/lib/node_modules/electron-builder/src/macPackager.ts:81:26 
[mac] From previous event: 
[mac]  at /usr/local/lib/node_modules/electron-builder/src/macPackager.ts:81:10 
[mac]  at Generator.next (<anonymous>) 
[mac] From previous event: 
[mac]  at MacPackager.pack (/usr/local/lib/node_modules/electron-builder/out/macPackager.js:173:11) 
[mac]  at /usr/local/lib/node_modules/electron-builder/src/packager.ts:210:22 
[mac] From previous event: 
[mac]  at Packager.doBuild (/usr/local/lib/node_modules/electron-builder/out/packager.js:335:11) 
[mac]  at /usr/local/lib/node_modules/electron-builder/src/packager.ts:151:38 
[mac]  at Generator.next (<anonymous>) 
[mac]  at runCallback (timers.js:651:20) 
[mac]  at tryOnImmediate (timers.js:624:5) 
[mac]  at processImmediate [as _immediateCallback] (timers.js:596:5) 
[mac] From previous event: 
[mac]  at Packager.build (/usr/local/lib/node_modules/electron-builder/out/packager.js:261:11) 
[mac]  at /usr/local/lib/node_modules/electron-builder/src/builder.ts:214:40 
[mac]  at Generator.next (<anonymous>) 
[mac] From previous event: 
[mac]  at build (/usr/local/lib/node_modules/electron-builder/out/builder.js:63:21) 
[mac]  at Object.<anonymous> (/usr/local/lib/node_modules/electron-builder/out/cli/build-cli.js:68:41) 
[mac]  at Module._compile (module.js:571:32) 
[mac]  at Object.Module._extensions..js (module.js:580:10) 
[mac]  at Module.load (module.js:488:32) 
[mac]  at tryModuleLoad (module.js:447:12) 
[mac]  at Function.Module._load (module.js:439:3) 
[mac]  at Module.runMain (module.js:605:10) 
[mac]  at run (bootstrap_node.js:418:7) 
[mac]  at startup (bootstrap_node.js:139:9) 
[mac]  at bootstrap_node.js:533:3 
[mac] 
[mac] npm ERR! Darwin 15.6.0 
[mac] npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "run" "dist-mac" 
[mac] npm ERR! node v7.5.0 
[mac] npm ERR! npm v4.1.2 
[mac] npm ERR! code ELIFECYCLE 
[mac] npm ERR! [email protected] dist-mac: `build -m` 
[mac] npm ERR! Exit status 255 
[mac] npm ERR! 
[mac] npm ERR! Failed at the [email protected] dist-mac script 'build -m'. 
[mac] npm ERR! Make sure you have the latest version of node.js and npm installed. 
[mac] npm ERR! If you do, this is most likely a problem with the ExampleApp package, 
[mac] npm ERR! not with npm itself. 
[mac] npm ERR! Tell the author that this fails on your system: 
[mac] npm ERR!  build -m 
[mac] npm ERR! You can get information on how to open an issue for this project with: 
[mac] npm ERR!  npm bugs ExampleApp 
[mac] npm ERR! Or if that isn't available, you can get their info via: 
[mac] npm ERR!  npm owner ls ExampleApp 
[mac] npm ERR! There is likely additional logging output above. 
[mac] 
[mac] npm ERR! Please include the following file with any support request: 
[mac] npm ERR!  ../workspace/Example-App/ExampleApp/npm-debug.log 

La drôle de c'est, que si je connecter manuellement par ssh d'une autre machine à ma machine locale une exécution la fonction "build -m" par terminal, puis la construction fonctionne parfaitement et sans erreurs.

Que dois-je définir dans les préférences que cela fonctionne aussi avec Jenkins-SSH? Ou pourquoi je reçois son erreur seulement de Jenkins

Répondre

0

Je ne pense pas que ce soit une solution idéale pour notre problème, mais c'est au moins une solution de contournement. Comme nous l'avons suggéré, le problème est dans les variables d'environnement manquantes, si nous commençons à partir de jenkins-ssh. Nous avons donc créé un script qui démarre manuellement le processus de construction et définit toutes les variables d'environnement que nous pourrions obtenir par la commande 'printenv' si nous sommes dans le terminal du mac - où le processus de construction s'exécute sans erreur.

Ainsi mon script appelé regarde par exemple comme suit:

#! /bin/sh 
################################################################################ 
# starts build manually and sets environment variables manually before starting build 
################################################################################ 
# first get environment-values with command "printenv" in terminal on the desired system, where build process runs 
# then set all line outputs with starting "export "; some example lines as follows 
export SHELL=/bin/bash 
export TERM=xterm-256color 
export MAVEN_OPTS=-Xms1024m -Xmx3g -XX:PermSize=1024m 
export PATH=/opt/subversion/bin:/Library/Java/JavaVirtualMachines/jdk1.8.0_92.jdk/Contents/Home/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin 
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_92.jdk/Contents/Home 
export CLASSPATH_SEP=: 
export LANG=de_DE.UTF-8 
export XPC_FLAGS=0x0 
export XPC_SERVICE_NAME=0 
export LESSCHARSET=latin1 
export SHLVL=1 
export HOME=/Users/exampleUser 
export GIT_HOME=/usr/bin/ 
export TMP=/tmp 
export LOGNAME=exampleUser 
export CLASSPATH= 
export GIT_SRC_HOME=/Users/exampleUser/git 
export SECURITYSESSIONID=186a9 
export _=/usr/bin/printenv 

# now starts build 
cd <path-To-App-Directory> 
build -m 

# if desired check if app is signed 
#spctl --assess -vv "<path-to-build-application>" 
#codesign --verify -vvvv "<path-to-build-application>" 

Nous ne savons pas quelles lignes sont nécessaires, mais aussi longtemps que le script est exécuté, tout va bien pour nous. Peut-être un autre spécialiste pourrait connaître la solution professionnelle à notre problème. Jusqu'à présent nous marquons cette solution comme la bonne réponse.