깃 액션을 통해 자바 파일들을 빌드하려고 하는데 위 부분에서 실패했다.
gradle.yml 파일( 워크플로우 구성 파일) 내 빌드파일 생성하는 코드는 다음과 같이 작성했다.
./gradlew clean build :application/eureka:build
다음과 같은 오류가 발생하고 actions failed 가 되었다 .
What went wrong:
Cannot locate tasks that match ':application/eureka:build' as project 'application/eureka' not found in root project 'ForTickets'.
의심가는 상황은 다음과 같았다.
1.clean과 build를 동시에 하려고 하는 것
터미널창에서는 동시에 해도 되지만 위 상황이 문제가 되는건가하는 의심이 들었다.
그래서 clean 과 빌드를 나누어 코드를 작성했는데 여전히 같은 문제가 발생했다.
나중에 해결하고 보니 접근자체를 터미널에 포커스를 맞출것이 아니라 yml문법으로 했어야했다.
2.gradlew를 찾지 못하는 문제?
내 프로젝트는 msa 구조를 위해서 멀티모듈을 통해 프로젝트를 구성했다.
그렇기 때문에 가장 바깥쪽을 제외하고 내부 프로젝트들에게는 gradlew 파일이 존재하지 않는다.
각 프로젝트별로 gradlew를 추가하고 다시 실행했으나 여전히 같은 문제가 발생했다.
3.yml 문법 문제
github actions의 찬찬히 다시 읽어보니 위에서 작성한 코드는 각각 한줄씩 인식하도록 생각을 했는데 통으로 인식하고 있었다. ./gradlew clean ./gradlew build 이렇게 한줄씩 이해하니
clean./gradlew 라는 것을 실행할 수는 없었고 다음과같은 오류를 뱉는 것이 납득이 되었다.
./gradlew' not found in root project 'ForTickets' and its subprojects.
이러니까 .. gradlew 문제라고 처음에 오해했던 것이다.
yml 의 문법을 검색해보니 멀티라인에 관한 내용을 알 수 있었다.
두 줄 이상의 명령어를 입력할때는 다음과 같이 작성되어야 한다 .
틀린경우
run:
hello world
hello world
결과물 : hello worldhelloworld
옳은 경우
run:
hello world\n
hello world
or
run: |
hello world
hello world
결과물 : hello world
hello world
문제를 직면했을때 내가 어떤걸 모르고 어떤걸 알고있는지 정확하게 파악한뒤 문제에 접근해야한다.
추측도 좋지만 일단 내가 상황속에서 어느부분을 정확히 알고있는지를 적고 시작하자.