다음과 비슷한 문제가 있습니다. 대상 디렉터리에 대한 권한이 없는 경우 Jenkins "빌드 후" 작업으로 파일을 복사하는 방법
Jenkins 작업 공간에서 다음으로 파일을 이동/복사/재동기화하려고 합니다.
/var/www/app
권한이 다음으로 설정됨
아파치:아파치
그룹에 젠킨스를 추가했습니다 아파치, 그러나 jenkins 인스턴스는 /var/www/app에 파일을 복사할 수 없습니다.
또한 /var/www/app의 권한을 apache:jenkins로 설정하려고 시도했지만 여전히 Jenkins는 오류를 계속 뱉어냈습니다: Permission failed 또는 Operation not allowed
추신: OS를 추가하는 것을 잊어버렸습니다. CentOS입니다. ;)
편집 1: 이것은 jenkins 스크립트 runnig의 로그입니다.
[작업 공간] $ /bin/sh -xe /tmp/hudson1379987233097some_more_numbers.sh + sh /path_to_sh_script/script.sh 증분 파일 목록 보내기
애플리케이션/
rsync: "/var/www/app/application"에 대한 권한을 설정하지 못했습니다: 작업이 허용되지 않습니다. (1)
그리고 이것은 스크립트 자체입니다 :)
#!/bin/bash
rsync -avzh /path/to/jenkins/jobs/app/workspace/default/application /var/www/app ;
rsync -avzh /path/to/jenkins/jobs/app/workspace/default/library /var/www/app ;
rsync -avzh /path/to/jenkins/jobs/app/workspace/default/public /var/www/app ;
답변1
댓글에서 길고 유익한 토론을 마친 후이 링크사용자가 추가 문제를 해결했습니다.
--no-perms --omit-dir-times
옵션 에 rsync
.
문제를 해결하기 위한 예비 시도:
짧은 시간 동안 보안이 걱정되지 않는다면 시도해 볼 수 있습니다.
chmod a+rwx /var/www/app
그런 다음 이 디렉터리에 쓰기를 시도합니다. 하위 디렉터리가 있는 경우 다음을 사용하여 재귀적으로 수행해야 합니다.
chmod --recursive a+rwx /var/www/app
성공하면 점진적으로 권한 제거를 시작할 수 있으며 이는 문제를 정확히 파악하는 데 도움이 됩니다.
사용자 jenkins가 이미 apache의 그룹 구성원인지 확인하세요.
groups apache
답변2
비슷한 문제가있었습니다. Jenkins의 localhost에서/var/www에 쓰고 싶었습니다. 내 서버에서 /var/www는 www-data의 소유이므로 www-data 그룹에 jenkins를 추가하고 /var/www 그룹을 쓰기 가능으로 만들었지만 권한 거부 오류가 계속 발생했습니다. Jenkins 서비스를 다시 시작하면 문제가 해결되었습니다.
답변3
먼저 ssh-key 교환을 통해 SSH를 사용하여 Linux 또는 Apache 서버를 Jenkin 서버에 추가하세요. 그리고 사용자를 jenkin(unix 사용자)으로 사용하여 linux/apache 서버에 사용자를 만듭니다. 풀/푸시 파일에 대해 ssh를 수행하면 jenkin은 'jenkin'을 표준 사용자로 사용하기 때문입니다.
Unix의 jenkin 그룹에 Apache 사용자를 추가하면 도움이 될 수 있습니다.