1616 toolchain :
1717 download-url : https://download.swift.org/development/ubuntu2404/swift-DEVELOPMENT-SNAPSHOT-2025-12-01-a/swift-DEVELOPMENT-SNAPSHOT-2025-12-01-a-ubuntu24.04.tar.gz
1818 swift-syntax-version : " 603.0.0"
19+ spm-cache-key : ubuntu-24.04-swift-DEVELOPMENT-SNAPSHOT-2025-12-01-a-603.0.0
1920 wasi-backend : Node
2021 target : " wasm32-unknown-wasip1"
2122 env : |
@@ -24,12 +25,14 @@ jobs:
2425 toolchain :
2526 download-url : https://download.swift.org/swift-6.3-branch/ubuntu2404/swift-6.3-DEVELOPMENT-SNAPSHOT-2026-03-05-a/swift-6.3-DEVELOPMENT-SNAPSHOT-2026-03-05-a-ubuntu24.04.tar.gz
2627 swift-syntax-version : " 603.0.0"
28+ spm-cache-key : ubuntu-24.04-swift-6.3-DEVELOPMENT-SNAPSHOT-2026-03-05-a-603.0.0
2729 wasi-backend : Node
2830 target : " wasm32-unknown-wasip1"
2931 - os : ubuntu-22.04
3032 toolchain :
3133 download-url : https://download.swift.org/development/ubuntu2204/swift-DEVELOPMENT-SNAPSHOT-2025-12-01-a/swift-DEVELOPMENT-SNAPSHOT-2025-12-01-a-ubuntu22.04.tar.gz
3234 swift-syntax-version : " 603.0.0"
35+ spm-cache-key : ubuntu-22.04-swift-DEVELOPMENT-SNAPSHOT-2025-12-01-a-603.0.0
3336 wasi-backend : Node
3437 target : " wasm32-unknown-wasip1-threads"
3538
5659 run : |
5760 echo "SWIFT_SDK_ID=${{ steps.setup-swiftwasm.outputs.swift-sdk-id }}" >> $GITHUB_ENV
5861 echo "SWIFT_BIN_PATH=$(dirname $(which swiftc))" >> $GITHUB_ENV
62+ - name : Restore SwiftPM build cache
63+ id : swiftpm-cache
64+ uses : actions/cache/restore@v4
65+ with :
66+ path : |
67+ .build
68+ Plugins/PackageToJS/.build
69+ Plugins/BridgeJS/.build
70+ key : swiftpm-${{ matrix.entry.spm-cache-key }}-${{ hashFiles('Package.swift', 'Package.resolved', 'Plugins/PackageToJS/Package.swift', 'Plugins/BridgeJS/Package.swift') }}
71+ restore-keys : |
72+ swiftpm-${{ matrix.entry.spm-cache-key }}-
5973 - uses : swiftwasm/setup-swift-syntax-prebuilts@v1
6074 id : swiftsyntax-prebuilts
6175 with :
7791 BRIDGEJS_OVERRIDE_SWIFT_SYNTAX_VERSION : ${{ matrix.entry.swift-syntax-version }}
7892 - name : Validate BridgeJS TypeScript declarations
7993 run : npm run check:bridgejs-dts
94+ - name : Save SwiftPM build cache
95+ if : success() && steps.swiftpm-cache.outputs.cache-hit != 'true'
96+ uses : actions/cache/save@v4
97+ with :
98+ path : |
99+ .build
100+ Plugins/PackageToJS/.build
101+ Plugins/BridgeJS/.build
102+ key : swiftpm-${{ matrix.entry.spm-cache-key }}-${{ hashFiles('Package.swift', 'Package.resolved', 'Plugins/PackageToJS/Package.swift', 'Plugins/BridgeJS/Package.swift') }}
80103
81104 test-bridgejs-against-swift-versions :
82105 name : Test BridgeJS against Swift versions
85108 entry :
86109 - image : " swift:6.3"
87110 swift-syntax-version : " 603.0.0"
111+ spm-cache-key : swift-6.3-603.0.0
88112 runs-on : ubuntu-latest
89113 container :
90114 image : ${{ matrix.entry.image }}
@@ -100,12 +124,26 @@ jobs:
100124 id : swiftsyntax-prebuilts
101125 with :
102126 swift-syntax-version : ${{ matrix.entry.swift-syntax-version }}
127+ - name : Restore SwiftPM build cache
128+ id : swiftpm-cache
129+ uses : actions/cache/restore@v4
130+ with :
131+ path : Plugins/BridgeJS/.build
132+ key : swiftpm-bridgejs-${{ matrix.entry.spm-cache-key }}-${{ hashFiles('Plugins/BridgeJS/Package.swift') }}
133+ restore-keys : |
134+ swiftpm-bridgejs-${{ matrix.entry.spm-cache-key }}-
103135 - name : Validate BridgeJS TypeScript declarations
104136 run : npm run check:bridgejs-dts
105137 - name : Run BridgeJS tests
106138 run : swift test ${{ steps.swiftsyntax-prebuilts.outputs.swift-flags }} --package-path ./Plugins/BridgeJS
107139 env :
108140 BRIDGEJS_OVERRIDE_SWIFT_SYNTAX_VERSION : ${{ matrix.entry.swift-syntax-version }}
141+ - name : Save SwiftPM build cache
142+ if : success() && steps.swiftpm-cache.outputs.cache-hit != 'true'
143+ uses : actions/cache/save@v4
144+ with :
145+ path : Plugins/BridgeJS/.build
146+ key : swiftpm-bridgejs-${{ matrix.entry.spm-cache-key }}-${{ hashFiles('Plugins/BridgeJS/Package.swift') }}
109147
110148 native-build :
111149 # Check native build to make it easy to develop applications by Xcode
@@ -161,6 +199,16 @@ jobs:
161199 id : swiftsyntax-prebuilts
162200 with :
163201 swift-syntax-version : " 600.0.1"
202+ - name : Restore SwiftPM build cache
203+ id : swiftpm-cache
204+ uses : actions/cache/restore@v4
205+ with :
206+ path : |
207+ .build
208+ Plugins/BridgeJS/.build
209+ key : swiftpm-bridgejs-generate-ubuntu-22.04-swift-DEVELOPMENT-SNAPSHOT-2025-09-14-a-600.0.1-${{ hashFiles('Package.swift', 'Package.resolved', 'Plugins/BridgeJS/Package.swift') }}
210+ restore-keys : |
211+ swiftpm-bridgejs-generate-ubuntu-22.04-swift-DEVELOPMENT-SNAPSHOT-2025-09-14-a-600.0.1-
164212 - run : make bootstrap
165213 - run : ./Utilities/bridge-js-generate.sh
166214 env :
@@ -172,6 +220,14 @@ jobs:
172220 echo "::error::BridgeJS generated files are out of date. Please run \`./Utilities/bridge-js-generate.sh\` and commit the changes."
173221 exit 1
174222 }
223+ - name : Save SwiftPM build cache
224+ if : success() && steps.swiftpm-cache.outputs.cache-hit != 'true'
225+ uses : actions/cache/save@v4
226+ with :
227+ path : |
228+ .build
229+ Plugins/BridgeJS/.build
230+ key : swiftpm-bridgejs-generate-ubuntu-22.04-swift-DEVELOPMENT-SNAPSHOT-2025-09-14-a-600.0.1-${{ hashFiles('Package.swift', 'Package.resolved', 'Plugins/BridgeJS/Package.swift') }}
175231
176232 build-examples :
177233 runs-on : ubuntu-22.04
@@ -190,6 +246,27 @@ jobs:
190246 id : swiftsyntax-prebuilts
191247 with :
192248 swift-syntax-version : " 603.0.0"
249+ - name : Restore SwiftPM build cache
250+ id : swiftpm-cache
251+ uses : actions/cache/restore@v4
252+ with :
253+ path : |
254+ .build
255+ Examples/ActorOnWebWorker/.build
256+ Examples/Basic/.build
257+ Examples/Embedded/.build
258+ Examples/ExportSwift/.build
259+ Examples/ImportTS/.build
260+ Examples/MultiModule/.build
261+ Examples/Multithreading/.build
262+ Examples/NodeJS/.build
263+ Examples/OffscrenCanvas/.build
264+ Examples/PlayBridgeJS/.build
265+ Examples/Testing/.build
266+ Plugins/BridgeJS/.build
267+ key : swiftpm-examples-ubuntu-22.04-swift-DEVELOPMENT-SNAPSHOT-2026-03-09-a-603.0.0-${{ hashFiles('Package.swift', 'Package.resolved', 'Examples/*/Package.swift', 'Examples/*/Package.resolved', 'Plugins/BridgeJS/Package.swift') }}
268+ restore-keys : |
269+ swiftpm-examples-ubuntu-22.04-swift-DEVELOPMENT-SNAPSHOT-2026-03-09-a-603.0.0-
193270 - run : |
194271 swift --version
195272 ./Utilities/build-examples.sh
@@ -203,6 +280,25 @@ jobs:
203280 uses : actions/upload-pages-artifact@v5
204281 with :
205282 path : ./_site
283+ - name : Save SwiftPM build cache
284+ if : success() && steps.swiftpm-cache.outputs.cache-hit != 'true'
285+ uses : actions/cache/save@v4
286+ with :
287+ path : |
288+ .build
289+ Examples/ActorOnWebWorker/.build
290+ Examples/Basic/.build
291+ Examples/Embedded/.build
292+ Examples/ExportSwift/.build
293+ Examples/ImportTS/.build
294+ Examples/MultiModule/.build
295+ Examples/Multithreading/.build
296+ Examples/NodeJS/.build
297+ Examples/OffscrenCanvas/.build
298+ Examples/PlayBridgeJS/.build
299+ Examples/Testing/.build
300+ Plugins/BridgeJS/.build
301+ key : swiftpm-examples-ubuntu-22.04-swift-DEVELOPMENT-SNAPSHOT-2026-03-09-a-603.0.0-${{ hashFiles('Package.swift', 'Package.resolved', 'Examples/*/Package.swift', 'Examples/*/Package.resolved', 'Plugins/BridgeJS/Package.swift') }}
206302 deploy-examples :
207303 runs-on : ubuntu-latest
208304 if : github.event_name == 'push' && github.ref == 'refs/heads/main'
0 commit comments