반응형
maven으로 jib:build 를 사용하면 보통 다음처럼 사용한다.
mvn clean deploy jib:build
그런데 빌드된 결과를 실행하면 해당 프로젝트에서 참조한 snapshot이 갱신되지 않은 이전 것을 참조하고 있는 경우가 있다.
빌드 수행 결과를 살펴보면
- deploy까지 maven의 배포 실행을 처리한 이후
- jib:build 시 다시 repository에서 빌드된 결과물을 가져와서 docker image 를 빌드한다.
jib의 경우 layer를 다음과 같이 처리한다.
github.com/GoogleContainerTools/jib/blob/master/docs/faq.md#how-are-jib-applications-layered
- Classes
- Resources
- Project dependencies
- Snapshot dependencies
- All other dependencies
- Each extra directory (jib.extraDirectories in Gradle, <extraDirectories> in Maven) builds to its own layer
Snapshot dependencies과 그 외의 dependencies를 분리하여 layer를 만들며 이를 통해 snapshot이 갱신되더라도 해당 layer만 새로 만든다.
처음엔 layer에 대한 cache처리가 문제가 아닌가 의심했지만 실제 문제가 되는 포인트는 maven이 repository로 deploy를 한 후 jib:build 시 repository에서 다시 가져올 때 snapshot을 force update하지 못한 문제이다.
이를 해결하려면 처음 빌드한 명령어에 다음처럼 -U 옵션이 추가되어야 한다.
mvn -B -U clean deploy jib:build
-U는 snapshot에 대해 강제 업데이트 처리를 해준다.
-B는 batch mode인데 실행 과정에 터미널과 상호 작용 표시를 막아 로그를 간결하게 확인할 수 있게 해준다.
반응형
'Study > CI&CD' 카테고리의 다른 글
SonarLint & Connected Mode를 STS(Eclipse)에서 사용해보기 (0) | 2022.07.08 |
---|---|
[troubleshooting] sonatype nexus BufferUnderflowException 발생 (0) | 2022.02.21 |
[troubleshooting] docker nerdctl pull 명령어 사용 시 received unexpected HTTP status: 503 Service Unavailable 응답 오는 경우 (0) | 2021.12.21 |
jenkins execute shell 에서 사용할 수 있는 환경 변수 목록 확인 (0) | 2021.08.05 |
github 사용 유용한 팁 모음 (0) | 2021.04.01 |
Jenkins 에서 Maven Project 동적으로 버전 변경하여 빌드하기 (0) | 2020.09.12 |
[troubleshooting] jenkins sonarqube scanner could not find 'java' executable in java_home or path. (0) | 2020.04.22 |
Docker가 Window에서 Disk 활성시간이 100%가 되고 응답없는 경우 (0) | 2019.08.02 |
Docker에 Spring Cloud Data Flow 설치하기 (0) | 2019.08.01 |
SonarQube 사용하기 (0) | 2019.07.31 |