Sto tentando di configurare un ambiente CI per un'applicazione iOS. Finora ho ottenuto xcodebuild per costruire la build di test correttamente dalla riga di comando, ma quando Jenkins tenta di eseguirlo ottengo il seguente letta in console:Jenkins Impossibile eseguire xcodebuild dalla cartella del progetto
Started by user anonymous
Building in workspace /Users/Shared/Jenkins/Home/jobs/Unit Tests/workspace
Working directory is /Users/iosappdev/Documents/Xcode Projects/rules.
[rules] $ /usr/bin/xcodebuild -version
FATAL: Cannot run program "/usr/bin/xcodebuild" (in directory "/Users/iosappdev/Documents/Xcode Projects/rules"): error=13, Permission denied
java.io.IOException: Cannot run program "/usr/bin/xcodebuild" (in directory "/Users/iosappdev/Documents/Xcode Projects/rules"): error=13, Permission denied
at java.lang.ProcessBuilder.start(ProcessBuilder.java:460)
at hudson.Proc$LocalProc.<init>(Proc.java:244)
at hudson.Proc$LocalProc.<init>(Proc.java:216)
at hudson.Launcher$LocalLauncher.launch(Launcher.java:707)
at hudson.Launcher$ProcStarter.start(Launcher.java:338)
at hudson.Launcher$ProcStarter.join(Launcher.java:345)
at au.com.rayh.XCodeBuilder.perform(XCodeBuilder.java:224)
Qualche idea? Sono abbastanza nuovo per Jenkins ma ho fatto del mio meglio per rispondere a questa domanda con Google Fu senza alcun risultato. Inizialmente ho avuto questo problema con un'installazione manuale di Jenkins (homebrew tecnicamente), ma di recente ho usato il programma di installazione OSX e ha provocato lo stesso errore.
Sto indovinando questo ha più a che fare con i permessi Unix/Linux/OSX di Jenkins/Xcode, ma non ho abbastanza esperienza per stabilire che, per certo.
Modifica
progetto permessi di directory impostate su 775.
Ho anche provato a cambiare la proprietà per l'utente Jenkins viene eseguito su.
ecco l'output per quando ho tentato di correre xcodebuild come utente daemon ($ sudo -u demone xcodebuild):
dev-imac:rules iosappdev$ sudo -u daemon xcodebuild
shell-init: error retrieving current directory: getcwd: cannot access parent directories: Permission denied
shell-init: error retrieving current directory: getcwd: cannot access parent directories: Permission denied
2012-03-21 11:05:46.161 xcodebuild[1411:70b] [MT] DVTAssertions: ASSERTION FAILURE in /SourceCache/IDEXcode3ProjectSupport/IDEXcode3ProjectSupport-1196/Xcode3Sources/XcodeIDE/Frameworks/DevToolsBase/pbxcore/Xcode3Model/Xcode3Project.m:266
Details: Assertion failed: [directoryPath isAbsolutePath]
Object: <Xcode3Project>
Method: +projectFilesInDirectory:
Thread: <NSThread: 0x40010a260>{name = (null), num = 1}
Hints: None
Backtrace:
0 0x000000010025b85f -[DVTAssertionHandler handleFailureInMethod:object:fileName:lineNumber:messageFormat:arguments:] (in DVTFoundation)
1 0x000000010025b6b5 _DVTAssertionFailureHandler (in DVTFoundation)
2 0x00000001011559bc +[Xcode3Project projectFilesInDirectory:] (in DevToolsCore)
3 0x00000001008a424b -[Xcode3CommandLineBuildTool _resolveInputOptions] (in Xcode3Core)
4 0x00000001008aa097 -[Xcode3CommandLineBuildTool run] (in Xcode3Core)
5 0x00000001001d7db6 (in xcodebuild)
6 0x00000001001d7c2c (in xcodebuild)
Puoi descrivere quali sono le autorizzazioni "giuste"? xcodebuild ha 755 che penso possa consentire a qualsiasi utente di eseguire il programma da qualsiasi directory. La directory del progetto ha anche 755 permessi. L'utente Jenkins è l'utente daemon. – cesarislaw
Quello che volevo dire in realtà è che dovresti eseguire Jenkins con l'utente che possiede la directory. In alternativa, rendilo scrivibile. –
Ho provato entrambi in vari punti. Controllato di nuovo (imposta le autorizzazioni della directory su 775 e la proprietà all'utente del daemon) e ottenendo comunque l'errore di autorizzazione negato. – cesarislaw