728x90
Jenkins를 이용하여 spring boot 프로젝트를 gradle로 빌드하는 job을 만들어 실행한 결과 아래와 같은 에러가 발생하였다.
더보기
Console message
Started by user wsyoon
Running as SYSTEM
Building in workspace /var/lib/jenkins/workspace/config_server_deploy/build-config-server The recommended git tool is: NONE using credential jenkins
Cloning the remote Git repository
Cloning repository http://{{ip:port}}/rascal/configserver.git
> git init /var/lib/jenkins/workspace/config_server_deploy/build-config-server # timeout=10
Fetching upstream changes from http://{{ip:port}}/rascal/configserver.git
> git --version # timeout=10
> git --version # 'git version 1.8.3.1'
using GIT_ASKPASS to set credentials jenkins {{ip:port}}
> git fetch --tags --progress http://{{ip:port}}/rascal/configserver.git +refs/heads/*:refs/remotes/origin/* # timeout=10
> git config remote.origin.url http://{{ip:port}}/rascal/configserver.git # timeout=10
> git config --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/* # timeout=10 Avoid second fetch
> git rev-parse refs/remotes/origin/master^{commit} # timeout=10
Checking out Revision 160da47b3a1ef93ad102f423de4cddaac59841e6 (refs/remotes/origin/master)
> git config core.sparsecheckout # timeout=10
> git checkout -f 160da47b3a1ef93ad102f423de4cddaac59841e6 # timeout=10
Commit message: "Merge branch 'refactor/yml-map' into 'master'"
First time build. Skipping changelog.
[Gradle] - Launching build.
[build-config-server] $ /var/lib/jenkins/workspace/config_server_deploy/build-config-server/gradlew clean build -Pprofile=prod -x test
FATAL: command execution failed
java.io.IOException: Cannot run program "/var/lib/jenkins/workspace/config_server_deploy/build-config-server/gradlew" (in directory "/var/lib/jenkins/workspace/config_server_deploy/build-config-server"): error=13, 허가 거부 at
java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1128) at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1071) at hudson.Proc$LocalProc.<init>(Proc.java:252) at hudson.Proc$LocalProc.<init>(Proc.java:221) at hudson.Launcher$LocalLauncher.launch(Launcher.java:994) at hudson.Launcher$ProcStarter.start(Launcher.java:506) at hudson.Launcher$ProcStarter.join(Launcher.java:517) at hudson.plugins.gradle.Gradle.perform(Gradle.java:321) at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20) at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:818) at hudson.model.Build$BuildExecution.build(Build.java:199) at hudson.model.Build$BuildExecution.doRun(Build.java:164) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:526) at hudson.model.Run.execute(Run.java:1895) at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:44) at hudson.model.ResourceController.execute(ResourceController.java:101) at hudson.model.Executor.run(Executor.java:442)
Caused by: java.io.IOException: error=13, 허가 거부 at java.base/java.lang.ProcessImpl.forkAndExec(Native Method) at java.base/java.lang.ProcessImpl.<init>(ProcessImpl.java:340) at java.base/java.lang.ProcessImpl.start(ProcessImpl.java:271) at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1107)
... 16 more
Build step 'Invoke Gradle script' changed build result to FAILURE
Build step 'Invoke Gradle script' marked build as failure
Finished: FAILURE
허가 거부~~? 허가거부 ?!
에러 로그를 간단히 살펴보아도 권한 문제로 짐작할 수 있다. gradlew의 권한이 어느 순간에 gitlab repository에 gradlew의 권한에 실행 권한이 사라진 것을 알 수 있었다. (git은 업로드 시 파일 내용 뿐 아니라, 권한도 함께 저장)
gradlew의 허가 거부는 다음 두가지 방법으로 해결할 수 있다고 판단했다.
1. repository에 gradlew 권한을 변경하여 git commit
'chmod +w gradlew '
위 방법은 근본적인 해결 방안으로 허가 거부가 발생한 원인을 해결해준다.
2. jenkins item gradlew 설정
invoke gradle script - user gradle wrapper - Make gradlew executable 체크
jenkins에서 gradle로 build 할 경우 Make gradlew executable 기능을 사용하여 gradlew를 실행할 수 있게 된다.
두가지 방법 모두 사용하는 것이 옳다고 생각했다.
누군가 권한을 바꾸어 git에 올리게 될 경우 jenkins에서는 또 동일한 문제가 발생할 수 있기 때문이다.
- 끝-
728x90
'서버 > 네트워크 및 인프라' 카테고리의 다른 글
[Kafka] Consumer Group 삭제하기 (0) | 2024.05.07 |
---|---|
Cross-Origin Resource Sharing(CORS) 이란? (0) | 2022.12.27 |
[Oracle Cloud] DB 데이터가 초기화 될 경우 (0) | 2022.11.21 |
[Linux] Zshell, oh-my-zsh 설치하기 (0) | 2022.11.13 |
세션 클러스터링이란? (0) | 2021.11.10 |
댓글