Skip to content

Commit 8d19b70

Browse files
committed
Faster smoke tests
1 parent 29965b2 commit 8d19b70

File tree

1 file changed

+39
-5
lines changed

1 file changed

+39
-5
lines changed

.github/workflows/build-common.yml

Lines changed: 39 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -196,9 +196,27 @@ jobs:
196196

197197
- id: set-matrix
198198
run: |
199-
modules=$(ls -d smoke-tests/apps/* | sed 's/\/$//' | sed 's/\//:/g' | sed 's/^/:/')
200-
inner_json=$(echo $modules | xargs echo | sed 's/ /","/g')
201-
echo "matrix={\"module\":[\"$inner_json\"]}" >> $GITHUB_OUTPUT
199+
# Find all smoke test files and create matrix entries
200+
tests=$(
201+
for module_dir in smoke-tests/apps/*/; do
202+
module=$(echo "$module_dir" | sed 's|/$||' | sed 's|/|:|g')
203+
find "${module_dir}src/smokeTest/java" -name "*Test.java" -type f | \
204+
sed "s|${module_dir}src/smokeTest/java/||" | \
205+
sed 's|/|.|g' | \
206+
sed 's|\.java$||' | \
207+
sed "s|^|${module}:|"
208+
done
209+
)
210+
211+
if [ -n "$tests" ]; then
212+
# Convert to JSON array
213+
json_array=$(echo "$tests" | sed 's/.*/"&"/' | tr '\n' ',' | sed 's/,$//')
214+
echo "matrix={\"test\":[$json_array]}" >> $GITHUB_OUTPUT
215+
echo "Generated matrix with $(echo "$tests" | wc -l) test entries"
216+
else
217+
echo "matrix={\"test\":[]}" >> $GITHUB_OUTPUT
218+
echo "No test entries found"
219+
fi
202220
203221
smoke-test:
204222
needs: setup-smoke-test-matrix
@@ -225,13 +243,29 @@ jobs:
225243
- name: Setup Gradle
226244
uses: gradle/actions/setup-gradle@v4
227245

246+
- name: Extract module and test class
247+
run: |
248+
# Split the test entry into module and test class
249+
# Format is ":smoke-tests:apps:ModuleName:com.package.TestClass"
250+
test_entry="${{ matrix.test }}"
251+
# Extract everything before the last colon as the module
252+
module="${test_entry%:*}"
253+
# Extract everything after the last colon as the test class
254+
test_class="${test_entry##*:}"
255+
echo "MODULE=${module}" >> $GITHUB_ENV
256+
echo "TEST_CLASS=${test_class}" >> $GITHUB_ENV
257+
228258
- name: Test
229-
run: ./gradlew ${{ matrix.module }}:smokeTest
259+
run: ./gradlew ${{ env.MODULE }}:smokeTest --tests "${{ env.TEST_CLASS }}"
230260

231261
- name: Create unique artifact name
232262
if: failure()
233263
run: |
234-
echo "UPLOAD_ARTIFACT_NAME=${{ matrix.module }}" | sed 's/:/-/g' >> $GITHUB_ENV
264+
# Create a unique name based on module and test class
265+
artifact_name="${{ env.MODULE }}:${{ env.TEST_CLASS }}"
266+
# Replace colons and dots with hyphens for valid artifact names
267+
artifact_name=$(echo "$artifact_name" | sed 's/[:.]/\-/g')
268+
echo "UPLOAD_ARTIFACT_NAME=$artifact_name" >> $GITHUB_ENV
235269
236270
- name: Upload smoke test reports
237271
uses: actions/upload-artifact@v4

0 commit comments

Comments
 (0)