@@ -130,7 +130,24 @@ jobs:
130130 run : sudo apt-get install git-filter-repo -y
131131 - name : Checkout
132132 uses : actions/checkout@v3
133+ - name : Detect Swift package information
134+ id : swift-package
135+ run : |
136+ echo "BUILD_PATH=$(swift build --show-bin-path -c release)" >> $GITHUB_ENV
137+ echo 'product-paths<<$EOF' >> $GITHUB_OUTPUT
138+ swift package describe --type json \
139+ | jq '.products[].name' -r \
140+ | sed "s#^#$(swift build --show-bin-path -c release)/#" \
141+ >> $GITHUB_OUTPUT
142+ echo '$EOF' >> $GITHUB_OUTPUT
143+ - name : Apply cache
144+ uses : actions/cache@v3
145+ id : build-cache
146+ with :
147+ path : ${{ steps.swift-package.outputs.product-paths }}
148+ key : ${{ runner.os }}-${{ hashFiles('Package.*', 'Sources/**') }}
133149 - name : Build
150+ if : ${{ !steps.build-cache.outputs.cache-hit }}
134151 run : swift build -c release
135152 - name : Checkout API models
136153 uses : actions/checkout@v3
@@ -160,12 +177,12 @@ jobs:
160177 git rebase "origin/$GITHUB_BASE_REF" --quiet
161178 - name : Generate teco-core
162179 run : |
163- swift run -c release --skip-build teco-common-error-generator \
180+ ${{ env.BUILD_PATH }}/ teco-common-error-generator \
164181 --error-file ./models/zh-CN/error-codes.json \
165182 --output ./teco-core/Sources/TecoCore/Errors/TCCommonError.swift
166- swift run -c release --skip-build teco-date-wrapper-generator \
183+ ${{ env.BUILD_PATH }}/ teco-date-wrapper-generator \
167184 --output-dir './teco-core/Sources/TecoDateHelpers/Property Wrappers'
168- swift run -c release --skip-build teco-region-generator \
185+ ${{ env.BUILD_PATH }}/ teco-region-generator \
169186 --output ./teco-core/Sources/TecoCore/Common/TCRegion.swift
170187 - name : Checkout teco
171188 uses : actions/checkout@v3
@@ -189,9 +206,9 @@ jobs:
189206 git rebase "origin/$GITHUB_BASE_REF" --quiet
190207 - name : Generate teco
191208 run : |
192- swift run -c release --skip-build teco-package-generator \
209+ ${{ env.BUILD_PATH }}/ teco-package-generator \
193210 --model-dir ./models/zh-CN \
194- --service-generator .build/release /teco-service-generator \
211+ --service-generator ${{ env.BUILD_PATH }} /teco-service-generator \
195212 --package-dir ./teco
196213 if ! git diff --exit-code Package.swift
197214 then
0 commit comments