Intro
์๋ ํ์ธ์. ์ ๋ Kotlin SprinBoot 3.0 ์ผ๋ก github action์ ํตํด AWS์ Elastic Beanstalk๋ฅผ ์ฌ์ฉํด API Server ๊ฐ๋ฐํ๊ฒฝ ๊ตฌ์ฑํด์ผ ํ์ต๋๋ค. Elastic Beanstalk ์ธํ ๊ณผ, githb action ๊ด๋ จ ์ค์ ์ ๋ชจ๋ ๋ง์น๊ณ , github push ๋ฅผ ํตํด ๋ฐฐํฌ๊ฐ ์ ์ ์๋ํ๋์ง ํ ์คํธ ํ๋ ๋์ค ์๋์ ๊ฐ์ ์๋ฌ๊ฐ ๋ฐ์ํ์ต๋๋ค.
cp: cannot stat './build/libs/*.jar': No such file or directory
Why?
๋ฐ๋ก ํด๋น ์๋ฌ๋ฅผ ๊ตฌ๊ธ๋ง ํด๋ดค์ต๋๋ค. ๊ตฌ๊ธ๋ง์ ํด๋ณด๋, ์คํ๋ง ๋ถํธ 2.5.0 ์ด์ ๋ฒ์ ์ ๋ฐ๋ก ์ค์ ์์ด Gradle ๋น๋ํ ๊ฒฝ์ฐ, BootJar์ Jar ๊ฐ ๋ชจ๋ ์์ฑ๋์ด build/libs ์์น์ ํ์ผ 2๊ฐ๊ฐ ์์ฑ๋๋ค๊ณ ํฉ๋๋ค. ์๋ ์ฝ๋๋ github action ์ค์ ํ์ผ์ธ๋ฐ์, build/libs ์์น์ ํ์ผ์ด 2๊ฐ ์์ฑ๋๊ธฐ ๋๋ฌธ์ ํด๋น ๋ณต์ฌ ๋ช ๋ น์ด์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ ๊ฒ์ ๋๋ค.
- name: Generate deployment package # (1)
run: |
mkdir -p deploy
cp ./build/libs/*.jar deploy/application.jar
cp ./api/Procfile deploy/Procfile
cp -r .ebextensions deploy/.ebextensions
cp -r .platform deploy/.platform
cd deploy && zip -r deploy.zip .
์ ๊ฐ ์ฌ์ฉํ๊ณ ์๋ ์คํ๋ง๋ถํธ ๋ฒ์ ์ 3 ๋ฒ์ ์ด์๊ธฐ ๋๋ฌธ์, ์ค์ ๋น๋์ ํ์ผ์ด 2๊ฐ ์์ฑ๋๋์ง ํ์ธํด ๋ด์ผ ํ์ต๋๋ค. ํ๋ก์ ํธ ํด๋ ๋ด์์ Gradle build ๋ช ๋ น์ด๋ฅผ ํตํด ๋น๋๋ฅผ ํด๋ดค๊ณ , ์ค์ 2๊ฐ๊ฐ ์์ฑ๋๊ณ ์์์ ํ์ธํ์ต๋๋ค.
How to solve the problem
build.gradle.kts ํ์ผ์ ์๋์ ๊ฐ์ ์ค์ ์ ์ถ๊ฐํด์คฌ์ต๋๋ค. Jar task๋ฅผ ์คํตํด์ฃผ์๋๋ ๋์ด์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง ์์์ต๋๋ค.
tasks.getByName<Jar>("jar") {
enabled = false
}
Conclusion
์๊ฐ๋ณด๋ค ๋ฐฐํฌํ๋ ๊ณผ์ ์์ ๋ง์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค. ์ฒ์์ผ๋ก github action์ AWS์ Elastic Beanstalk์ ์ฌ์ฉํด๋ดค๋๋ฐ์, ๊ณต๋ถํ ๋ด์ฉ๋ ๋ง๊ณ ์ด๋ ค์ ๋ค์. ๐ฅฒ ๊ทธ๋๋ ์ด ๊ณผ์ ์ ํตํด ์ ๋ณด๋ค ์๋ก์ด ์ง์๋ค์ ๋ง์ด ๋ฐฐ์ฐ๊ฒ ๋ ๊ฒ ๊ฐ์ ์ข์ต๋๋ค :)