Skip to content

Commit 13a2095

Browse files
build: set up tuist (#584)
Migrated local build and CI to tuist and removed CocoaPods entirely. ### Checklist Please do the following before merging: - [x] Ensure any public-facing changes are reflected in the [changelog](https://github.com/square/Listable/blob/main/CHANGELOG.md). Include them in the `Main` section.
1 parent 496ab69 commit 13a2095

121 files changed

Lines changed: 338 additions & 1621 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/env.properties

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,3 @@
11
xcode_version=16.2
2+
TUIST_TEST_DEVICE=iPhone SE (3rd generation)
3+
TUIST_TEST_PLATFORM=iOS

.github/workflows/run_tests.yml

Lines changed: 28 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -5,102 +5,70 @@
55
name: Tests
66

77
on:
8+
push:
9+
branches:
10+
- main
811
pull_request:
912

1013
jobs:
1114
spm:
12-
name: Swift Package Manager
13-
14-
runs-on: macos-15-xlarge
15-
16-
steps:
17-
18-
- name: Checkout repository
19-
uses: actions/checkout@v1
20-
21-
- name: Read env
22-
run: cat .github/workflows/env.properties >> $GITHUB_ENV
23-
24-
- name: Switch to Xcode ${{ env.xcode_version }}
25-
run: sudo xcode-select -s /Applications/Xcode_${{ env.xcode_version }}.app
26-
27-
- name: Setup Ruby
28-
uses: ruby/setup-ruby@v1
29-
with:
30-
# Uses version specified in .ruby_version
31-
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
32-
33-
- name: Install xcodes
34-
run: brew install aria2 xcodesorg/made/xcodes
35-
36-
- name: Install iOS 17.2
37-
run: sudo xcodes runtimes install "iOS 17.2"
38-
39-
# Build
40-
41-
- name: Build
42-
run: xcodebuild -scheme "Listable-Package" -destination "platform=iOS Simulator,OS=17.2,name=iPhone SE (3rd generation)" -sdk iphonesimulator build
43-
44-
test:
45-
name: "iOS ${{ matrix.sdk }}"
15+
name: "Build & Test All - iOS ${{ matrix.sdk }}"
4616

4717
runs-on: macos-15-xlarge
4818

4919
strategy:
20+
fail-fast: false # Don’t fail-fast so that we get all snapshot test changes
5021
matrix:
5122
include:
5223
- sdk: "15.4"
53-
simulator_name: iPhone SE (3rd generation)
24+
simctl_runtime: "com.apple.CoreSimulator.SimRuntime.iOS-15-4"
5425
installation_required: true
5526

5627
- sdk: "16.2"
57-
simulator_name: iPhone SE (3rd generation)
28+
simctl_runtime: "com.apple.CoreSimulator.SimRuntime.iOS-16-2"
5829
installation_required: true
5930

6031
- sdk: "17.2"
61-
simulator_name: iPhone SE (3rd generation)
32+
simctl_runtime: "com.apple.CoreSimulator.SimRuntime.iOS-17-2"
6233
installation_required: true
6334

6435
steps:
6536

6637
- name: Checkout repository
67-
uses: actions/checkout@v1
38+
uses: actions/checkout@v4
39+
40+
- name: Set up Mise
41+
uses: jdx/mise-action@v2
6842

6943
- name: Read env
7044
run: cat .github/workflows/env.properties >> $GITHUB_ENV
7145

7246
- name: Switch to Xcode ${{ env.xcode_version }}
7347
run: sudo xcode-select -s /Applications/Xcode_${{ env.xcode_version }}.app
7448

75-
- name: Setup Ruby
76-
uses: ruby/setup-ruby@v1
77-
with:
78-
# Uses version specified in .ruby_version
79-
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
80-
8149
- name: Install xcodes
82-
if: ${{ matrix.installation_required }}
8350
run: brew install aria2 xcodesorg/made/xcodes
8451

8552
- name: Install iOS ${{ matrix.sdk }}
8653
if: ${{ matrix.installation_required }}
8754
run: sudo xcodes runtimes install "iOS ${{ matrix.sdk }}"
8855

89-
# Build Caching
90-
91-
- name: Cache Cocoapods
92-
uses: actions/cache@v4
93-
with:
94-
path: Pods
95-
key: ${{ runner.os }}-pods-${{ hashFiles('**/Podfile.lock') }}
96-
restore-keys: |
97-
${{ runner.os }}-pods-
56+
- name: Build
57+
run: |
58+
xcodebuild \
59+
-scheme "Listable-Package" \
60+
-destination "platform=${{ env.TUIST_TEST_PLATFORM }} Simulator,OS=${{ matrix.sdk }},name=${{ env.TUIST_TEST_DEVICE }}" \
61+
-sdk iphonesimulator build
9862
99-
# Install & Build
63+
- name: Install Tuist dependencies for Development
64+
run: tuist install --path Development/
10065

101-
- name: Pod Install
102-
run: bundle exec pod install --repo-update
66+
- name: Test All
67+
run: tuist test ListableDevelopment-Workspace --path Development/ --os ${{ matrix.sdk }} --result-bundle-path TestResult.xcresult
10368

104-
- name: Build & Test
105-
run: |
106-
xcodebuild -workspace Demo/Demo.xcworkspace -scheme "Demo" -destination "platform=iOS Simulator,OS=${{ matrix.sdk }},name=${{ matrix.simulator_name }}" build test
69+
- name: Upload TestResult
70+
uses: actions/upload-artifact@v4
71+
if: ${{ failure() }}
72+
with:
73+
name: TestResult.xcresult
74+
path: TestResult.xcresult

.gitignore

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -40,16 +40,6 @@ playground.xcworkspace
4040
# Package.resolved
4141
.build/
4242

43-
# CocoaPods
44-
#
45-
# We recommend against adding the Pods directory to your .gitignore. However
46-
# you should judge for yourself, the pros and cons are mentioned at:
47-
# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
48-
#
49-
Demo/Demo.xcworkspace
50-
Pods/
51-
gen/
52-
5343
# Carthage
5444
#
5545
# Add this line if you want to avoid checking in source code from Carthage dependencies.
@@ -68,3 +58,14 @@ fastlane/report.xml
6858
fastlane/Preview.html
6959
fastlane/screenshots/**/*.png
7060
fastlane/test_output
61+
62+
# Tuist
63+
/Derived
64+
/*.xcodeproj
65+
/*.xcworkspace
66+
/Development/Derived
67+
/Development/*.xcodeproj
68+
/Development/*.xcworkspace
69+
70+
# Test results
71+
/*.xcresult

.mise.toml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
[tools]
2+
tuist = "4.23.0"
3+
swiftformat = "0.50.8"
4+
5+
[settings]
6+
# do not try to read versions from .nvmrc, .ruby-version, etc.
7+
legacy_version_file = false

BlueprintUILists.podspec

Lines changed: 0 additions & 42 deletions
This file was deleted.

BlueprintUILists/Resources/.gitkeep

Whitespace-only changes.

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212

1313
### Internal
1414

15+
- CocoaPods has been removed and local development environment is now driven by Tuist.
16+
1517
# Past Releases
1618

1719
# [16.3.0] - 2025-07-17

0 commit comments

Comments
 (0)