1. 상황
2. 시도한 방법
3. 해결 방법
1. 상황
window 로컬 서버에서 git hub에 push를 한다. 해당 push에 web_hook을 적용시켜 놓은 jenkins에서 해당 git hub 저장소에서 코드를 내려받는다. 젠킨스에서 jar 파일 생성을 위해 빌드를 하려는 순간 gradlew의 실행 권한이 없어 에러 발생.
java.io.IOException: Cannot run program "/var/lib/jenkins/workspace/dev/gradlew"
(in directory "/var/lib/jenkins/workspace/dev"): error=13, Permission denied
* 참고로 jenkins - git hub를 연동한 상태에서 빌드를 시작하면 아래와 같은 경로에 github 소스를 가지고 와 빌드를 한다.
이러한 이유로 위의 에러가 발생한것이다.
2. 시도한 방법
jenkins 서버에서 직접 chmod 755 gradlew 명령어를 통해 권한을 수정 한 뒤 다시 빌드를 한다.
결과
하지만 이미 깃허브에 올라가 있는 소스에서 해당 파일의 권한은 644로 되어있기 때문에 현재 소스에서의 권한과 상관없이 변경한 권한이 다시 644로 덮어 써져 에러가 발생한다.
git hub에 올라가 있는 파일의 권한 문제이므로 직접 git hub 파일의 권한을 수정한다?
안타깝게도 git hub에 올라가 있는 파일의 권한을 직접 수정할 수 없다.
window 로컬 서버에서 해당 파일의 권한을 수정 한 뒤 저장소에 push한다.
이미 window 로컬 서버에 있는 gradlew 파일은 읽기 및 실행 권한이 존재하였다.
3. 해결 방법
1. linux 서버에서 git hub 저장소를 받은 뒤 gradlew에 대한 권한을 확인해 보니 당연히 아래와 같았다.
2. chmod 755 gradlew 명령어를 통해 파일의 실행 권한을 추가한다.
3. git config core.filemode true 명령어를 통해 git의 권한 변경을 가능하게 해야 한다.
4. gradlew 파일을 vim 편집기로 연 뒤 띄어쓰기를 하나 넣어 git 변경점을 만든 뒤 commit => push 한다.
5. 이후에 다시 jenkins 빌드를 시도한다.=> 아까와 같은 에러가 발생하지 않고 빌드에 성공한다
'Jenkins' 카테고리의 다른 글
jenkins github docker 자동 배포 CI/CD (0) | 2023.09.05 |
---|