java.io.IOException: Cannot run program "gradle" 오류가 났다.
jenkins가 gradle 파일을 찾지 못하고 있다.
putty에서 ec2안에 있는 gradle을 찾아봐도 나오지 않길래...
(/var/lib/jenkins/workspace/chevita-Backend 경로를 찾아봤다. 해당 경로가 어느 프로그램 안에 있는 경로인지 잘 모르겠다.. ec2안에 있는 경로 아닌가...? )
이전에 jenkins 빌드 설정시 build > invoke gradle로 설정한 것을 gradle wrapper를 사용한 빌드로 변경했다.
gradle wrapper로 변경한 이유
우리 프로젝트에 gradlew 파일이 이미 있었다.
해당 파일을 내가 직접 작성한 것 같지는 않고 아마 spring boot initalizer로 프로젝트를 처음 생성할 때 같이 생성된 것 같다.
Jolta씨가 강력하게 추천하는 gradle wrapper.
Build 부분에서
invoke gradlerk가 아닌 user gradle wrapper를 선택한다.
이렇게 설정하고 다시 build now
빌드까지 시간이 엄청 오래 걸린다.
체감상 10분... 일단 빌드까지 1분이 넘게 걸린다는...
빌드가 5분이상 완료가 안되길래 abort 시켰다.
abort 시키는것도 응답이 엄청 느려서 그냥 인스턴스를 강제로 종료했다.......
이게 뭐지..
재부팅했더니 다시 들어가는데 시간이 엄청 오래 걸린다 ㅠㅠ
역시 강제종료는 좋지 않군
무튼 jenkins에서 build가 안되길래 ec2에서 직접 빌드를 해봤다.
sudo chmod 777 ./gradlew
ll ./gradlew
./gradlew build
ec2에서도 프로젝트 빌드가 제대로 수행이 안된다.
5분 넘에 0%에 머물러있다.
뭐가 문제일까...?
또 인스턴스를 강제종료했다 ㅋㅋ..
왜 안되는지 로그도 안찍어줌 ㅠ
미치겠네 인스턴스 중지를 해야하는데 실수로 종료해버림
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
심신을 안정시키고 종료한 인스턴스를 고이 보내주고 새로운 인스턴스를 다시 만들어 연결했다. (꼬옥 종료 방지 기능 사용하세요)..
다시 현재 오류까지 돌아옴
Cannot run program "gradle" (in directory "/var/lib/jenkins/workspace/chevita-Backend")
일단 ec2에 접속해서 파일을 뒤져봤다.
var/lib 자체가 없음!
찾아보니 gradle의 버전이 제대로 설정되지 않아서 발생하는 오류일수도 있다고 생각이 들었다.
이전에 jenkins 프로젝트를 만들 때 gradle을 사용한다고만 하고 default로 설정을 해놨다.
https://kitty-geno.tistory.com/91
해당 링크를 참고하여 gradle의 버전을 지정해줬다.
spring boot 프로젝트의 gradle wrapper properties 파일을 확인하니
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip
이렇게 나와있어 gralde을 7.5 버전으로 지정해줬다.
다시 빌드를 시키니... 아무리 기다려도 빌드가 되지 않길래 강제로 abort 시키고 aws에서 재부팅 시켰다.
대체 뭐가 문제일까?
너무 답답함.....하.. 때려치고 싶다. 개발 너무 싫어 내가 왜 이 길을 택했을까 너무너무
https://stackoverflow.com/questions/8646762/cannot-run-program-gradle-in-jenkins
https://minholee93.tistory.com/entry/Jenkins-Springboot-Gradle-Github-CodeDeploy-ELB-2