CI/CD에서는 이미지 빌드 실행 시간을 최소화하는 것이 중요하다. 따라서 도커 파일을 작성할 때 각 레이어를 작은 단위로 분리하여 효율적으로 캐싱되도록 설계하는 것이 좋다.
하지만 깃헙 액션의 특성상 새로운 환경의 러너를 할당받게 되어 이전 빌드 내용이 남아있지 않아 캐시를 활용할 수 없었다.
도커는 이미지 빌드 시에 --cache-from
및 --cache-to
를 사용하여 캐싱을 관리할 수 있다. 우리 프로젝트의 경우, 컨테이너 당 하나의 서비스만 띄우고 있기 때문에 도커 컴포즈를 사용한다. 도커 컴포즈에서 --cache-from
과 --cache-to
는 각각 cache_from
과 cache_to
에 대응된다.
지금부터 해당 옵션을 활용하여 이미지 빌드시간을 단축해보자.
cache_from
은 외부로 내보낸 빌드 캐시를 가져오는 데 사용된다. 이 옵션을 이용하면 이전에 내보낸 캐시를 가져와 현재 빌드에서 재사용할 수 있다.
cache_to
옵션은 빌드 캐시를 외부로 내보내는 데 사용된다. 즉, 현재 빌드에서 생성된 캐시를 다른 곳에서 사용할 수 있다.
name: Backend Build
on:
pull_request:
types: [opened, edited]
현재 dev
브랜치로 PR이 열리고 수정될 때마다 백엔드 코드를 빌드하는 액션이 트리거된다. 해당 액션은 빌드가 제대로 이루어지는지 코드를 검사하는 용도로 사용된다.
이제 해당 액션의 빌드 캐시를 서비스를 배포할 때 재사용하어 CI/CD 시간을 단축시킬 것이다.