Перезапуск apache с помощью Jenkins или Phing - PullRequest
5 голосов
/ 01 августа 2011

В настоящее время я использую Phing и Jenkins для автоматизации сборок и развертывания моего приложения CodeIgniter.Одна проблема, с которой я сталкиваюсь, это перезапуск службы apache.Я пробовал в Phing, но не хватает разрешений.Каков наилучший способ перезапуска?

РЕДАКТИРОВАТЬ:

После добавления jenkins в файл sudoer и выполнения перезапуска службы httpd Дженкинс выдает: Обрабатывать пропущенный файлдескрипторы.Ниже приведен фрагмент вывода Phing через Дженкинса.Это говорит об обходном пути, чтобы установить daemonize.Не уверен, что это значит ...

...Build_test > compress:

     [echo] YUI Compression started
     [echo] Replacing normal JS with compressed files.
     [echo] Replacing normal CSS with compressed files.
     [echo] chmoding assets
     [echo] YUI Compression ended

Build_test > pdepend:


Build_test > httpd_restart:

     [echo] Stopping httpd: [  OK  ]
     [echo] Starting httpd: [  OK  ]


BUILD FINISHED

Total time: 13.1424 seconds

Process leaked file descriptors. See http://wiki.jenkins-ci.org/display/JENKINS/Spawning+processes+from+build for more information
[JDepend] JDepend plugin is ready
[JDepend] Found 68 classes in 1 packages
Finished: SUCCESS

1 Ответ

5 голосов
/ 01 августа 2011

Если вы работаете в Linux, вы можете запустить Phing с помощью команды sudo, чтобы у нее было достаточно прав для перезапуска apache.

sudo phing restartapache

Предполагается, что restartapache является exec-задачей, вызывающей команду apache restart. Например:

<target name="restartapache" description="Restarts the web server">
    <exec command="/etc/init.d/apache2 restart" />
</target>  

Чтобы избежать запроса команды sudo на ввод пароля, вы можете обновить разрешения sudo для любой учетной записи пользователя, под которой вы запускаете сборку (в этом примере показано отключение запроса sudo для пользователя jenkins):

sudo visudo

Затем добавьте следующие строки:

Defaults:jenkins !requiretty,!lecture
jenkins ALL=NOPASSWD:/etc/init.d/apache2

Вышеуказанное было отредактировано для улучшения безопасности в соответствии с этим ответом , так что Дженкинс может только перезапустить apache без пароля и ничего больше.

...