목록 보기
SwiftLint 캐싱을 통한 Incremental Build 최적화하기
프론트엔드

SwiftLint 캐싱을 통한 Incremental Build 최적화하기

29cm
29cm
2025년 1월 22일

두줄요약

SwiftLint가 매 빌드마다 실행되며 증분 빌드를 느리게 만드는 문제를 개선했습니다. xcfilelist와 dependency analysis로 캐싱하고, CI 린트로 보완했습니다.

문제 상황

  • Xcode Run Script의 SwiftLint가 컴파일마다 전체 코드베이스를 검사해 증분 빌드마다 15~30초의 추가 시간이 발생
  • 모듈화가 진행될수록 모듈별 SwiftLint 실행이 늘어나 빌드 지연이 더 커지는 구조

원인 분석

  • 일반적인 Run Script 방식은 매 빌드마다 SwiftLint를 수행하는 구조
  • 변경 여부와 무관하게 린트가 돌아 증분 빌드의 이점이 줄어듦

해결 방법

  • Based on dependency analysis와 xcfilelist를 활용해 변경 파일이 있을 때만 SwiftLint가 실행되도록 구성
  • Pre-actions로 타겟별 xcfilelist를 갱신하고, 병렬 스크립트로 여러 모듈을 빠르게 처리

주의할 점

  • 캐싱으로 린트 확인 시점이 늦어져 경고와 오류 발견이 지연될 수 있음
  • 일부 린트 오류가 컴파일 문제로 이어질 수 있어 보완 장치 필요

적용해볼 점

  • 증분 빌드에 포함된 Build Phase의 불필요한 실행 여부 점검
  • xcfilelist, Build Pre-actions, dependency analysis로 캐시 전략 검토

다음 읽기

#GitHub Actions 주제를 다룬 다른 회사 글

Lint Cl 속도 개선: 변경 파일만 검사하는 방법

PR에서 변경된 파일만 Lint하도록 CI를 개선한 사례를 소개했습니다. Git diff와 공통 조상을 활용해 실행 시간을 줄이고 리뷰 효율을 높였습니다.

펫프렌즈
펫프렌즈
데브옵스

댓글 0개

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...