1. gradlew 명령어 (build vs bootJar)


gradlew bootJar는 실행가능한 jar 파일을 만드는데 필요한 작업들만 수행하고 있다. 위 그림과 같이 build 작업은 bootJar 작업 이외에도 test, check, assemble 같은 작업들이 포함된다. (check는 test에 의존적인 작업으로 test가 수행된 후에 진행됨)

따라서 이처럼 CI 워크플로우 동작시 시간차이가 발생하게 된다. 하지만 bootJar에는 test 작업이 포함되지 않는다. 모든 test를 통과해야만 실행가능한 jar 파일을 만들어야 한다면 bootJar를 test에 의존적인 작업으로 만들면 된다. 이는 build.gradle을 통해 추가할 수 있다.
// build.gradle에 추가
bootJar {
dependsOn test // bootJar 작업을 test 작업이 실행됐을 때, 실행하도록 설정
}

이처럼 bootJar 작업을 수행했을 때, test 작업이 먼저 선행되는 것을 알 수 있다. 수행되는 작업을 출력하기 위해서는 끝에 --console=plain을 추가하면 된다.

Runner에서도 정상적으로 동작하는 것을 알 수 있다.


CI 소요시간이 35% 가량 감소하였다. (3분 21초 -> 2분 10초)
2. gradle-setup 액션을 통해 빌드 캐시 사용
Building and testing Java with Gradle - GitHub Docs
You can create a continuous integration (CI) workflow in GitHub Actions to build and test your Java project with Gradle.
docs.github.com

캐싱된 빌드 스크립트는 이후 CI에서 다시 컴파일되지 않으며, 의존성 또한 원격 저장소로부터 다시 다운받지 않게 된다. 따라서 CI/CD가 빈번할 경우, 소요 시간을 단축함에 있어서 효과적인 방법이다.
https://github.com/marketplace/actions/gradle-build-action
Gradle Build Action - GitHub Marketplace
Configures Gradle for GitHub actions, caching state and generating a dependency graph via Dependency Submission
github.com


test 작업이 포함되지 않은 bootJar에 대한 CI 소요시간을 비교한 결과, 7초 정도 차이가 있었다.

출처)
gradle build bootJar 차이
gradle build gradle build는 bootJar와 달리 내부 동작이 더 길다. 그리고 그 내부 동작에는 bootJar를 포함한다. build는 test 코드가 있다면 테스트도 수행을 한다. build와 bootJar가 다른 것 중 대표적인 것은 L
stir.tistory.com
gradlew을 이용하여 ec2에 spring boot 서버 배포하기 (feat. jasypt)
spring boot 프로젝트를 EC2에 배포하면서 알게된 내용을 요약 정리하는 글입니다.application.yml에는 데이터베이스 커넥션을 위한 DB정보들이 담깁니다.실제 운영서버에서는 어떻게든 이 DB 정보들을
velog.io
https://umanking.github.io/2023/03/05/processor-architecture-x86-arm/
x86과 ARM: 둘의 차이점
컴퓨터 소프트웨어를 개발하는데 있어서, 프로세서의 아키텍쳐는 매우 중요한 역할을 합니다. 이번 글에서는 가장 인기 있는 아키텍처인 x86과 ARM에 대해 비교하고자 합니다. 둘의 차이점은 무
umanking.github.io
[Docker] Docker Buildx 란?
베하~! BTC_녹차공원 팀의 하동녹차 입니다. 벌써 5월이 얼마 남지 않았는데요! 시간이 정말 빠른 것 같습니다🤣 이번주는 Docker Buildx 에 대한 설명과 Docker buildx 사용법에 대해 설명 해드리겠습니
btcd.tistory.com
'DevOps(AWS, Docker, Linux, etc) > Docker' 카테고리의 다른 글
스프링부트 + Github Actions + Docker 사용 시 빌드 에러 해결 (0) | 2024.04.15 |
---|---|
4. 도커 빌드와 빌드 컨텍스트 (0) | 2024.02.09 |
3. 도커의 레지스트리와 이미지 (1) | 2024.02.08 |
2. 도커 (0) | 2024.01.25 |
1. 가상화 기술 (2) | 2024.01.25 |