Дженкинс не может запустить xcodebuild из папки проекта - PullRequest
7 голосов
/ 21 марта 2012

Я пытаюсь настроить CI-среду для приложения iOS.До сих пор я получил xcodebuild для правильной сборки тестовой сборки из командной строки, но когда Jenkins пытается выполнить его, я получаю следующее чтение в консоли:

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)

Есть мысли?Я довольно новичок в Дженкинс, но я сделал все возможное, чтобы ответить на этот вопрос с Google Fu безрезультатно.Первоначально я столкнулся с этой проблемой при ручной установке Jenkins (технически самодельный), но недавно использовал установщик OSX, и это привело к той же ошибке.

Я предполагаю, что это больше связано с Unix / LinuxРазрешения / OSX, чем у Jenkins / Xcode, но не обладают достаточным опытом, чтобы точно это определить.

Редактировать

Разрешения каталога проекта установлены на 775.

Я также пытался изменить владельца для пользователя, на котором работает Дженкинс.

Вот вывод, когда я попытался запустить xcodebuild от имени пользователя демона ($ sudo -u daemon 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)

Ответы [ 2 ]

5 голосов
/ 21 марта 2012

Убедитесь, что у пользователя, под которым работает Jenkins, есть необходимые разрешения. Перейдите на http://[jenkins_server]/systemInfo и найдите user.name.

0 голосов
/ 28 марта 2012

Над ним написано:

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

Каким-то образом выполнение задания попало в «неправильный» каталог.Может быть, вы установили работу с пользовательским рабочим пространством?Jenkins, вероятно, работает как пользовательский демон и, следовательно, не имеет доступа к файлам под именем пользователя iosappdev.

Обычный способ использования Jenkins заключается в том, что вы отправляете свой исходный код в репозиторий управления версиями.Затем задания Jenkins настраиваются так, чтобы извлекать код из репозитория в рабочее пространство Jenkins и создавать его там, а затем сообщать о результатах.

Я не уверен, чего можно добиться, пытаясь заставить Дженкинса перейти напрямую.в ваш рабочий каталог и сделайте там сборку.Если это действительно то, что вы пытаетесь сделать, вам нужно сообщить нам, почему вы считаете это хорошей идеей.

...