Я хочу запустить CI-сервер (TeamCity 8.1) при запуске на Mac OS X Server под управлением Mavericks.
Я не хочу, чтобы сервер CI запускался пользователем root, а другим пользователем в системе.
Пользователь, с которого я хочу запустить сервер - это server1:staff.
Я установил TeamCity в /Applications /TeamCity. Папка TeamCity принадлежит server1:staff.
Затем я создал 2 списка в /Library /LaunchDaemons, принадлежащих root:wheel, но указав, что я хочу, чтобы этот процесс был запущен пользователем server1:staff.
Вот списки. Этот запускает сервер:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>WorkingDirectory</key>
<string>/Applications/TeamCity</string>
<key>Debug</key>
<false/>
<key>Label</key>
<string>jetbrains.teamcity.server</string>
<key>OnDemand</key>
<false/>
<key>KeepAlive</key>
<true/>
<key>ProgramArguments</key>
<array>
<string>bin/teamcity-server.sh</string>
<string>run</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>StandardErrorPath</key>
<string>logs/launchd.err.log</string>
<key>StandardOutPath</key>
<string>logs/launchd.out.log</string>
<key>UserName</key>
<string>server1</string>
</dict>
</plist>
Этот запускает агент сборки, который запускает сборки:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Debug</key>
<false/>
<key>KeepAlive</key>
<true/>
<key>Label</key>
<string>jetbrains.teamcity.BuildAgent</string>
<key>OnDemand</key>
<false/>
<key>ProgramArguments</key>
<array>
<string>launcher/bin/TeamCityAgentService-macosx-universal-32</string>
<string>-c</string>
<string>../conf/wrapper.conf</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>SessionCreate</key>
<true/>
<key>StandardErrorPath</key>
<string>logs/launchd.err.log</string>
<key>StandardOutPath</key>
<string>logs/launchd.out.log</string>
<key>WorkingDirectory</key>
<string>/Applications/TeamCity/buildAgent</string>
<key>UserName</key>
<string>server1</string>
</dict>
</plist>
При такой конфигурации сервер не запускается при запуске.
Единственный способ запустить сервер при запуске с моей конфигурацией - не указывать имя пользователя / группу пользователей в списке. Но при этом сервер запускается с пользователем root.
Я уже пытался изменить владельца plist, чтобы он соответствовал пользователю server1:staff, но безуспешно.
Я вроде застрял с этой конфигурацией, и я не знаю, что с ней не так.
Любые советы приветствуются.
[РЕДАКТИРОВАТЬ]
У меня нет ничего плохого в Console.app относительно TeamCity.
Чтобы быть уверенным, я переустановил TeamCity с нуля и т.д.
В файле launchd.err.log ничего нет. Хотя я нашел это в launchd.out.log, но я не знаю, когда это произошло (в настоящее время перезагрузка после удаления всех файлов журнала)
BuildId=null, AgentOwnAddress='null', AlternativeAddresses=[10.175.11.48, 192.168.2.92], Port=9090, Version='29939', PluginsVersion='29939-md5-51785f46b7e643a588892acce02b9333', AvailableRunners=[Ant, Duplicator, gradle-runner, Inspection, Ipr, JPS, Maven2, rake-runner, simpleRunner, Xcode], AvailableVcs=[perforce, mercurial, jetbrains.git, svn, cvs], AuthorizationToken='afccc2fae65d1c580e34d4aed4cc55df', PingCode='DX5fzIvbgFCvVghhwuvARdEU33XOfzCW'}
jvm 1 | Call http://localhost:8111/RPC2 buildServer.registerAgent3: java.net.ConnectException: Connection refused
jvm 1 | Registering on server http://localhost:8111, AgentDetails{Name='Default Agent', AgentId=null, BuildId=null, AgentOwnAddress='null', AlternativeAddresses=[10.175.11.48, 192.168.2.92], Port=9090, Version='29939', PluginsVersion='29939-md5-51785f46b7e643a588892acce02b9333', AvailableRunners=[Ant, Duplicator, gradle-runner, Inspection, Ipr, JPS, Maven2, rake-runner, simpleRunner, Xcode], AvailableVcs=[perforce, mercurial, jetbrains.git, svn, cvs], AuthorizationToken='afccc2fae65d1c580e34d4aed4cc55df', PingCode='DX5fzIvbgFCvVghhwuvARdEU33XOfzCW'}
jvm 1 | Call http://localhost:8111/RPC2 buildServer.registerAgent3: java.net.ConnectException: Connection refused
wrapper | TERM trapped. Shutting down.
jvm 1 | Processing shutdown hook.
jvm 1 | Sending agent force shutdown command to: http://localhost:9090
jvm 1 | Shutdown command successfully sent. Agent is exiting.
jvm 1 | Stop command called
jvm 1 | Agent process finished
jvm 1 | Agent has exited with code: 30
jvm 1 | Launcher is exiting
wrapper | <-- Wrapper Stopped
[EDIT2] После перезапуска у меня ничего не появляется в журналах сервера и Console.app (сервер не запускается, поэтому я думаю, что это ожидаемое поведение).