Почему Rsync терпит неудачу с Дженкинсом

Когда rsync используется с jenkins в качестве команды оболочки Execute в CentOS 6.4, происходит сбой:

[workspace] $ /bin/sh -xe /tmp/hudson3424899639384884888.sh
+ rsync -av /var/lib/jenkins/jobs/myjob/workspace/target/classes/ myuser@myserver.com:/home/myuser/test
rsync: Failed to exec ssh: Permission denied (13)
rsync error: error in IPC code (code 14) at pipe.c(84) [sender=3.0.6]
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in IPC code (code 14) at io.c(600) [sender=3.0.6]

Тем не менее, это работает из командной строки:

su jenkins
rsync -av /var/lib/jenkins/jobs/myjob/workspace/target/classes/ myuser@myserver.com:/home/myuser/test
sending incremental file list

sent 17875 bytes  received 83 bytes  3990.67 bytes/sec
total size is 1981027  speedup is 110.31

Что нужно сделать, чтобы это сработало и в Дженкинсе?

2 ответа

Решение

Проблема была в SElinux, установленном на CentOS, который по какой-то причине блокировал ssh для rsync.

Вот строка из /var/log/messages, в которой говорится, что ssh был заблокирован:

Jun 12 13:45:59 myserver kernel: type=1400 audit(1434109559.911:33346): avc:  denied  { execute } for  pid=11862 comm="rsync" name="ssh" dev=dm-1 ino=11931741 scontext=unconfined_u:system_r:rsync_t:s0 tcontext=system_u:object_r:ssh_exec_t:s0 tclass=file

Пока мы отключили SElinux на нашем сервере, правильное решение было бы создать пользовательский модуль политики ( 1)

У меня была похожая проблема.

В моем случае jenkins выполнял не rsync с ожидаемым пользователем (jenkins), а с другим (jboss в моем случае), добавляющим 'whoamiк сценарию и используя ssh verbose:

rsync -e "ssh -v" .......

помог найти проблему.

Обратите внимание, что когда вы меняете (добавляете) пользователя jenkins в какую-либо группу, разрешение будет применяться после перезапуска подчиненного (агента).

Другие вопросы по тегам