Hive Hive
Sign in

fix(cli): remove cache target build time tracking

GitHub issue · Closed

Metadata
Source
tuist/tuist #11282
Updated
Jun 24, 2026
Domains
CLI Cache
Details

What changed

  • Removed the cache warm path that copied and parsed .xcactivitylog files to infer per-target build times.
  • Removed target build duration from cache storable metadata, cache items, and command event binary cache metadata emitted by the CLI.
  • Removed the now-unused XCLogParser-based target build-time parser and its test coverage.

Why

The per-target cache build duration was collected only to annotate cache artifacts and command event metadata, but we do not currently surface that information in the product. Keeping the parser in the tuist cache path made cache warming depend on successfully parsing Xcode activity logs for metadata that was not used by users.

Root cause

tuist cache warm parsed Xcode activity logs after each build group to estimate target build durations. When activity logs were missing, rotated, or unparseable, that optional metadata path could fail the cache command even though the artifacts themselves had been built successfully.

Approach

This removes the CLI-side production of target build-time metadata instead of making parsing more permissive. Existing server/OpenAPI fields are left in place for backward compatibility with older clients, but the new CLI no longer sends binary_cache_metadata.build_duration.

Impact

Cache warming no longer has to read or parse .xcactivitylog files for target timing. Binary artifacts are still built, packaged, uploaded, and tracked as before, just without the unused target duration value.

Validation

  • tuist install
  • tuist generate tuist TuistKit TuistKitTests TuistServer TuistServerTests TuistCore TuistCoreTests TuistXCActivityLog TuistXCActivityLogTests ProjectDescription --no-open
  • xcodebuild test -workspace Tuist.xcworkspace -scheme Tuist-Workspace -only-testing TuistXCActivityLogTests/XCActivityLogControllerTests -only-testing TuistServerTests/CacheStorableItemTests -only-testing TuistKitTests/CommandEventFactoryTests CODE_SIGNING_ALLOWED=NO CODE_SIGNING_REQUIRED=NO CODE_SIGN_IDENTITY="" COMPILATION_CACHE_ENABLE_CACHING=NO
  • git diff --check
Comments
T
tuist[bot] Jun 15, 2026

🛠️ Tuist Run Report 🛠️

Tests 🧪
Scheme Status Cache hit rate Tests Skipped Ran Commit
TuistAcceptanceTests 0 % 0 0 0 d41c38b6b
TuistUnitTests 87 % 2976 5 2971 d41c38b6b
Flaky Tests ⚠️
  • TuistUnitTests: 3 flaky tests (View all)
Test case Module Suite
parseTestStatuses_returnsPassingModuleNames() TuistXCResultServiceTests XCResultServiceTests
parseTestStatuses_extractsModuleAndSuiteNames() TuistXCResultServiceTests XCResultServiceTests
parseTestXCResult() TuistXCResultServiceTests XCResultServiceTests
Builds 🔨
Scheme Status Duration Commit
TuistAcceptanceTests 1m 31s 8c46acf67
TuistUnitTests 2m 37s d41c38b6b
TA
tuist-atlas[bot] Jun 17, 2026

This fix is now available in 4.201.0-canary.5. Update to this version to remove cache target build time tracking.

TA
tuist-atlas[bot] Jun 17, 2026

This fix is now available in 4.201.0-canary.4. Update to this version to remove the cache target build time tracking.

TA
tuist-atlas[bot] Jun 18, 2026

The removal of cache target build time tracking is now available in 4.201.0-canary.8. Update to this version to run cache warming without parsing .xcactivitylog files for unused metadata.

TA
tuist-atlas[bot] Jun 18, 2026

The removal of cache target build time tracking is now available in 4.201.0-canary.7. This eliminates the CLI-side parsing of .xcactivitylog files that was unused and could cause cache warm failures when logs were missing or unparseable.

Update to 4.201.0-canary.7 to get this fix.

TA
tuist-atlas[bot] Jun 18, 2026

The fix to remove cache target build time tracking is now available in version 4.201.0-canary.6. Update to this version to benefit from the simplified cache warming that no longer parses Xcode activity logs.

TA
tuist-atlas[bot] Jun 19, 2026

The removal of cache target build time tracking is now available in 4.201.0-canary.9. Cache warming no longer parses Xcode activity logs for per-target build duration metadata that was not being surfaced to users. This simplifies the cache path and removes a potential failure point when activity logs are missing or unparseable. Update to 4.201.0-canary.9 to get this fix.

TA
tuist-atlas[bot] Jun 19, 2026

The removal of cache target build time tracking is now available in version 4.201.0-canary.13. Update to that version; cache warming no longer depends on parsing Xcode activity logs for timing metadata.

TA
tuist-atlas[bot] Jun 19, 2026

The change to remove cache target build time tracking is now available in 4.201.0-canary.12. This removes the XCLogParser-based target build-time parser from cache warming, eliminating dependencies on successfully parsing Xcode activity logs for metadata that was not actively surfaced. Update to this version to get this change.

TA
tuist-atlas[bot] Jun 19, 2026

The removal of cache target build time tracking is now available in 4.201.0-canary.11. Cache warming no longer copies and parses .xcactivitylog files to infer per-target build times, simplifying the cache warm path while keeping artifacts built and tracked as before.

Update to 4.201.0-canary.11 to use this change.

TA
tuist-atlas[bot] Jun 19, 2026

This is now available in 4.201.0-canary.10. Update to pick up the removal of cache target build time tracking.

TA
tuist-atlas[bot] Jun 20, 2026

The removal of cache target build time tracking is now available in 4.201.0-canary.18. Update to this version to get the change.

TA
tuist-atlas[bot] Jun 20, 2026

The change to remove cache target build time tracking is now available in 4.201.0-canary.17. Update to this version which no longer tracks per-target build durations during cache warming.

TA
tuist-atlas[bot] Jun 20, 2026

The fix removing cache target build time tracking is now available in 4.201.0-canary.16. This eliminates the dependency on parsing .xcactivitylog files during cache warming. Update to this version.

TA
tuist-atlas[bot] Jun 20, 2026

The removal of cache target build time tracking is now available in 4.201.0-canary.15. This removes the CLI-side production of target build-time metadata, eliminating the dependency on parsing Xcode activity logs during cache warming. Update to this version to use this change.

TA
tuist-atlas[bot] Jun 20, 2026

The change to remove cache target build time tracking is now available in version 4.201.0-canary.14. Update to this version to use the simplified cache warming that no longer parses Xcode activity logs for target timing metadata.

TA
tuist-atlas[bot] Jun 21, 2026

Removal of cache target build time tracking is now available in 4.201.0-canary.19. This simplifies cache warming by removing the XCLogParser-based target build duration collection that was not being surfaced in the product. Update to 4.201.0-canary.19 to get this change.