티스토리 뷰

🍏/Tuist

[Tuist] Cache

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

Tuist 4.7.0 기반

 

[ 문서 ]

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

 

 

1) Cache Warming

 

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

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

# re-using binaries from previous builds.
tuist cache

 

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

 

2) Using the cache binaries

 

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

또한 특정 대상에 초점을 맞출 경우, 해당 대상에 의존하는 대상도 사용 가능한 경우 이진 파일로 대체합니다. 

다른 접근 방식을 선호하는 사람들을 위해 이 동작을 완전히 사용하지 않도록 선택할 수 있는 옵션이 있습니다.

# 프로젝트 생성
tuist generate # 외부 종속성만 binary cahce 로 대체
tuist generate Search # 외부 종속성, Search 종속성 binary cahce 로 대체
tuist generate Search Settings # 외부 종속성, 그리고 Search 및 Settings 종속성 binary cahce 로 대체
tuist generate --no-binary-cache # No cache at all

# 프로젝트 테스트
tuist test

 

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

 

--- 

 

github 워크샵 문서  에도 해당 내용이 있다.  이해가 잘 되니 함께 읽어보길 추천!

ㄴ  9. Focused projects 

10. Focused and binary-optimized projects

 

 

 

[ 명령어 ]

 

 

 

[ 실습 ]

 

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

 

 

 

반응형
댓글