2016-09-02 2 views
1

я создал два сценария в мерзавце крючок перед фиксацией для сохранения разрешений Linux для всех файлов в файл разрешения и после оформления заказа для восстановления прав доступа с помощью файл разрешений. Это нормально работает, если я делаю git clone/checkout/commit вручную.Лучшая практика для обработки разрешения файла в мерзавце с Дженкинс

Однако, когда я устанавливаю Дженкинс к оформлению заказа проекта, он будет выполнить следующую команду:

мерзавец фотографии -f

Это использует -f вариант и пытается бросить удалите локальные изменения с отключением. Это приведет к отказу в разрешении для моего проекта, поскольку учетная запись Jenkins не имеет права удалять некоторые файлы (например, файл разрешений содержит запись для файла с владельцем корня). Каков наилучший способ использовать Jenkins для создания моего проекта, но сохранить разрешения для файлов в этом сценарии?

ответ

0

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

Но если вам это действительно нужно, вы можете использовать sudo без пароля для учетной записи Jenkins. UPD: измените chmod на sudo chmod в ваших сценариях крюка и добавьте строку как jenkins localhost = NOPASSWD: /bin/chmod в/etc/sudoers

+0

Мой проект содержит файлы для разных пользователей (root и других пользователей), поэтому мне это действительно нужно. Как настроить Jenkins для запуска 'sudo'? – chesschi

+0

Измените 'chmod' на' sudo chmod' в ваших сценариях крюка и добавьте строку типа 'jenkins localhost = NOPASSWD:/bin/chmod' в/etc/sudoers – Aleksandr

+0

Да, я сделал это в post-checkout, чтобы изменить разрешение файла как root используя 'sudo chmod'. Проблема в том, что Jenkins выполняет git checkout - если он пытается удалить файл, но не удалось. – chesschi

Смежные вопросы