티스토리 뷰

🍏/iOS

[Tuist] Cache

eungding 2024. 4. 8. 16:18
반응형

Tuist 4.7.0 기반

 

[ 문서 ]

Tuist Docs 를 보면 다음과 같이 나와있다. 

 

 

1) Cache Warming

 

Tuist가 종속성 그래프의 각 대상에 대해 해시를 효율적으로 활용하여 변경 사항을 감지합니다. 이 데이터를 활용하여 Tuist는 이러한 대상에서 파생된 이진 파일에 고유한 식별자를 빌드하고 할당합니다. 그런 다음 Tuist는 그래프 생성 시에 원래의 대상을 그에 해당하는 이진 버전으로 원활하게 대체합니다.

이 작업은 "캐시 워밍"이라고 불리며, 로컬 사용이나 Tuist Cloud를 통해 팀원 및 CI 환경과 공유하기 위한 이진 파일을 생성합니다. 캐시를 워밍하는 과정은 간단하며 다음 명령으로 시작할 수 있습니다.

tuist cache

 

팁: 캐시를 워밍하기 위해 별도의 CI 파이프라인을 설정하는 것을 권장합니다. 이렇게 하면 팀의 개발자가 해당 이진 파일에 액세스하여 로컬 빌드 시간을 줄일 수 있습니다.

 

2) Using the cache binaries

 

기본적으로 Tuist 명령이 프로젝트 생성을 필요로 할 때, 사용 가능한 경우 캐시에서 종속성을 이진 동등물로 자동으로 대체합니다. 

또한 특정 대상에 초점을 맞출 경우, 해당 대상에 의존하는 대상도 사용 가능한 경우 이진 파일로 대체합니다. 다른 접근 방식을 선호하는 사람들을 위해 이 동작을 완전히 사용하지 않도록 선택할 수 있는 옵션이 있습니다.

# 프로젝트 생성
tuist generate # 종속성만
tuist generate Search # 종속성 + Search 종속성
tuist generate Search Settings # 종속성, 그리고 Search 및 Settings 종속성
tuist generate --no-binary-cache # 전혀 캐시하지 않음

# 프로젝트 테스트
tuist test

 

 

경고: 이진 캐싱은 앱을 시뮬레이터나 장치에서 실행하거나 테스트하는 것과 같은 개발 워크플로를 위한 기능입니다. 릴리스 빌드를 위한 것이 아닙니다. 앱을 아카이브할 때는 --no-binary-cache 플래그를 사용하여 소스와 함께 프로젝트를 생성하십시오.

 

 

--- 

 

github 워크샵 문서  에도 해당 내용이 있다. 

 

아래 명령어를 실행하면 dependencies 를 기본으로 캐싱한다.

tuist cache warm
tuist generate

 

하지만 너의 target 을 캐싱할 수도 있다. 

예를들어 Swiftable 에만 집중하고 싶으면 아래의 명령어로 Swiftable 빼고 나머지를 모두

binary caching 을 사용할 수 있다. 

(전부 다 라기보다 Swiftable 이 의존하는 것을 캐시로 대체해준다는 뜻 아닐까..?)

tuist generate Swiftable

 

 

 

[ 명령어 ]

 

 

 

[ 실습 ]

 

TuistUI 는 staticFramework, Alamofire는 외부의존성

 

 

Cache 가 아무 것도 없는 상태에서

cache warming 을 해보자. 

tuist cache

 

 

 

 

 

 

이제 캐시 적용해보자

tuist generate

 

 

진짜 외부의존성만 바이너리 캐시로 교체한다. 

 

 

 

 

TuistApp 의 의존성을 전부 다 대체하도록 명령어 실행해보자  

tuist generate TuistApp

 

 

 

 

해쉬값도 출력해보자

 

 

 

tuist test 도 한번 돌려보자 

cache binaries 를 사용한다고 설명이 잘 나온다. 

 

 

 

 

캐시 안쓴다고 돌려보자 

tuist generate --no-binary-cache

 

 

다시 원복되었다. 

 

 

 

여기서 다시 tuist generate 하면 ? 

Alamofire (외부의존성) 만 다시 캐싱됨.

 

 

 

그럼 tuist generate 해도 아무것도 캐싱안하는 걸 기본값으로 다시 두고 싶으면 ? 

tuist cache --generate-only

 

인 줄 알았는데 아니고, clean 을 해줘야함!  (참고로 위의 명령어는 이때 필요함)

 

 

 

 

참고로 바이너리 캐쉬만 지우려면 다음 명령어를 사용하면 됨. 

tuist clean binaries

 

 

GPT 가 알려주는 tuist cache clean 같은 명령어는 없음 ;;; 

 

 

아무튼 클린 바이너리 명령어 해주고 generate 하면 이제 외부 의존성도 캐시로 대체 안함 ! 

근데 clean 해도 hash 값은 계속 나옴.. 

 

 

 

~/.tuist/Cache 랑 DerivedData 지우고 workspace 지워도 계속 나옴 ;; 

 

 

--- > 잘못 이해했음 ;;;   (슬랙)

 

 

 

 

 

[ 참고 - xcframework ]

 

 

 

속도 비교 글

 

https://kwnstantinosnikoloutsos.medium.com/save-time-with-xcframeworks-c12402abfc35

 

Save time with XCFrameworks

Make your CI and your build times go faster

kwnstantinosnikoloutsos.medium.com

 

 

차이가 많이 난다.. (9배정도) 

 

https://kwnstantinosnikoloutsos.medium.com/save-time-with-xcframeworks-c12402abfc35

 

 

 

반응형
댓글