Skip to content

Commit b497b70

Browse files
committed
feat(workflows): add customizable test execution options to release workflow
- Introduced new inputs: `run_spark_matrix_tests`, `run_spring_gradle_plugin_smoke`, and `run_release_task_tests` for fine-grained test execution control. - Updated conditional logic for test and Docker-related steps based on new input flags. - Enhanced flexibility in skipping or including specific test categories during the release process.
1 parent b9dd84c commit b497b70

1 file changed

Lines changed: 58 additions & 14 deletions

File tree

.github/workflows/release.yml

Lines changed: 58 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,21 @@ on:
2727
required: false
2828
default: false
2929
type: boolean
30+
run_spark_matrix_tests:
31+
description: "Run Spark big data matrix tests"
32+
required: false
33+
default: true
34+
type: boolean
35+
run_spring_gradle_plugin_smoke:
36+
description: "Run Spring Gradle plugin bootRunLocal API smoke test"
37+
required: false
38+
default: true
39+
type: boolean
40+
run_release_task_tests:
41+
description: "Allow tests to run inside the Gradle release task"
42+
required: false
43+
default: true
44+
type: boolean
3045
publish_github_packages:
3146
description: "Also publish artifacts to GitHub Packages. Disabled by default because GitHub Packages can return checksum upload conflicts."
3247
required: false
@@ -70,6 +85,9 @@ jobs:
7085
EXTRA_GRADLE_ARGS: ${{ github.event.inputs.gradle_args || '' }}
7186
GRADLE_LOG_LEVEL: ${{ github.event.inputs.gradle_log_level || 'info' }}
7287
SKIP_TESTS: ${{ github.event.inputs.skip_tests || 'false' }}
88+
RUN_SPARK_MATRIX_TESTS: ${{ github.event_name != 'workflow_dispatch' || inputs.run_spark_matrix_tests }}
89+
RUN_SPRING_GRADLE_PLUGIN_SMOKE: ${{ github.event_name != 'workflow_dispatch' || inputs.run_spring_gradle_plugin_smoke }}
90+
RUN_RELEASE_TASK_TESTS: ${{ github.event_name != 'workflow_dispatch' || inputs.run_release_task_tests }}
7391
PUBLISH_GITHUB_PACKAGES: ${{ github.event.inputs.publish_github_packages || 'false' }}
7492
ENABLE_DOCKER_IMAGE_CACHE: ${{ github.event.inputs.enable_docker_image_cache || 'false' }}
7593
TESTCONTAINERS_RYUK_DISABLED: "true"
@@ -100,13 +118,19 @@ jobs:
100118
git config user.email "github-actions[bot]@users.noreply.github.com"
101119
102120
- name: Verify Docker environment
103-
if: env.SKIP_TESTS != 'true'
121+
if: >-
122+
env.SKIP_TESTS != 'true' &&
123+
(
124+
env.RUN_SPARK_MATRIX_TESTS == 'true' ||
125+
env.RUN_SPRING_GRADLE_PLUGIN_SMOKE == 'true' ||
126+
env.RUN_RELEASE_TASK_TESTS == 'true'
127+
)
104128
run: |
105129
docker version
106130
docker info
107131
108132
- name: Cache Spark matrix Docker images
109-
if: env.SKIP_TESTS != 'true' && env.ENABLE_DOCKER_IMAGE_CACHE == 'true'
133+
if: env.SKIP_TESTS != 'true' && env.RUN_SPARK_MATRIX_TESTS == 'true' && env.ENABLE_DOCKER_IMAGE_CACHE == 'true'
110134
id: docker-image-cache
111135
uses: actions/cache@v4
112136
with:
@@ -116,7 +140,7 @@ jobs:
116140
${{ runner.os }}-spark-matrix-docker-images-v1-
117141
118142
- name: Load cached Spark matrix Docker images
119-
if: env.SKIP_TESTS != 'true' && env.ENABLE_DOCKER_IMAGE_CACHE == 'true'
143+
if: env.SKIP_TESTS != 'true' && env.RUN_SPARK_MATRIX_TESTS == 'true' && env.ENABLE_DOCKER_IMAGE_CACHE == 'true'
120144
run: |
121145
if [ -s "$DOCKER_IMAGE_CACHE_FILE" ]; then
122146
docker load --input "$DOCKER_IMAGE_CACHE_FILE"
@@ -126,7 +150,7 @@ jobs:
126150
fi
127151
128152
- name: Pull Spark matrix Docker images
129-
if: env.SKIP_TESTS != 'true'
153+
if: env.SKIP_TESTS != 'true' && env.RUN_SPARK_MATRIX_TESTS == 'true'
130154
run: |
131155
set -euo pipefail
132156
@@ -161,7 +185,7 @@ jobs:
161185
done
162186
163187
- name: Save Spark matrix Docker images
164-
if: env.SKIP_TESTS != 'true' && env.ENABLE_DOCKER_IMAGE_CACHE == 'true'
188+
if: env.SKIP_TESTS != 'true' && env.RUN_SPARK_MATRIX_TESTS == 'true' && env.ENABLE_DOCKER_IMAGE_CACHE == 'true'
165189
run: |
166190
set -euo pipefail
167191
mkdir -p "$DOCKER_IMAGE_CACHE_DIR"
@@ -178,17 +202,17 @@ jobs:
178202
ls -lh "$DOCKER_IMAGE_CACHE_FILE"
179203
180204
- name: Run Spark big data matrix tests
181-
if: env.SKIP_TESTS != 'true'
205+
if: env.SKIP_TESTS != 'true' && env.RUN_SPARK_MATRIX_TESTS == 'true'
182206
run: |
183207
./gradlew --no-configuration-cache :example:spark:sparkBigDataMatrixTest --stacktrace "--$GRADLE_LOG_LEVEL"
184208
185209
- name: Publish local artifacts for standalone examples
186-
if: env.SKIP_TESTS != 'true'
210+
if: env.SKIP_TESTS != 'true' && env.RUN_SPRING_GRADLE_PLUGIN_SMOKE == 'true'
187211
run: |
188212
./gradlew --no-configuration-cache publishToMavenLocal -x test -x sparkBigDataMatrixTest --stacktrace "--$GRADLE_LOG_LEVEL"
189213
190214
- name: Run Spring Gradle plugin API smoke test
191-
if: env.SKIP_TESTS != 'true'
215+
if: env.SKIP_TESTS != 'true' && env.RUN_SPRING_GRADLE_PLUGIN_SMOKE == 'true'
192216
run: |
193217
set -euo pipefail
194218
release_version="$(awk -F= '/^[[:space:]]*version[[:space:]]*=/{gsub(/^[[:space:]]+|[[:space:]]+$/, "", $2); print $2; exit}' gradle.properties)"
@@ -242,7 +266,7 @@ jobs:
242266
grep -F '"deleted":true' /tmp/spring-gradle-plugin-delete.json
243267
244268
- name: Collect and print Spark diagnostics on failure
245-
if: failure() && env.SKIP_TESTS != 'true'
269+
if: failure() && env.SKIP_TESTS != 'true' && env.RUN_SPARK_MATRIX_TESTS == 'true'
246270
run: |
247271
set +e
248272
diagnostics_dir="build/github-diagnostics"
@@ -304,7 +328,14 @@ jobs:
304328
cp -a example/spark/build/reports/tests "${diagnostics_dir}/spark/test-reports" 2>/dev/null || true
305329
306330
- name: Upload test reports and container logs
307-
if: failure() && env.SKIP_TESTS != 'true'
331+
if: >-
332+
failure() &&
333+
env.SKIP_TESTS != 'true' &&
334+
(
335+
env.RUN_SPARK_MATRIX_TESTS == 'true' ||
336+
env.RUN_SPRING_GRADLE_PLUGIN_SMOKE == 'true' ||
337+
env.RUN_RELEASE_TASK_TESTS == 'true'
338+
)
308339
uses: actions/upload-artifact@v4
309340
with:
310341
name: test-diagnostics-${{ github.run_id }}-${{ github.run_attempt }}
@@ -346,11 +377,24 @@ jobs:
346377
SIGNING_KEY_FILE: ${{ runner.temp }}/signing-key.asc
347378
SIGNING_KEY_PASSWORD: ${{ secrets.SIGNING_KEY_PASSWORD }}
348379
run: |
349-
skip_test_args=""
350-
if [ "$SKIP_TESTS" = "true" ]; then
351-
skip_test_args="-x test -x sparkBigDataMatrixTest -x sparkApacheDepsApacheHmsTest -x sparkApacheDepsApacheHmsKerberosTest -x sparkApacheDepsClouderaHmsTest -x sparkApacheDepsClouderaHmsKerberosTest -x sparkClouderaDepsApacheHmsTest -x sparkClouderaDepsApacheHmsKerberosTest -x sparkClouderaDepsClouderaHmsTest -x sparkClouderaDepsClouderaHmsKerberosTest"
380+
skip_test_args=()
381+
spark_test_excludes=(
382+
-x sparkBigDataMatrixTest
383+
-x sparkApacheDepsApacheHmsTest
384+
-x sparkApacheDepsApacheHmsKerberosTest
385+
-x sparkApacheDepsClouderaHmsTest
386+
-x sparkApacheDepsClouderaHmsKerberosTest
387+
-x sparkClouderaDepsApacheHmsTest
388+
-x sparkClouderaDepsApacheHmsKerberosTest
389+
-x sparkClouderaDepsClouderaHmsTest
390+
-x sparkClouderaDepsClouderaHmsKerberosTest
391+
)
392+
if [ "$SKIP_TESTS" = "true" ] || [ "$RUN_RELEASE_TASK_TESTS" != "true" ]; then
393+
skip_test_args=(-x test "${spark_test_excludes[@]}")
394+
elif [ "$RUN_SPARK_MATRIX_TESTS" != "true" ]; then
395+
skip_test_args=("${spark_test_excludes[@]}")
352396
fi
353-
./gradlew --no-configuration-cache release --stacktrace "--$GRADLE_LOG_LEVEL" $skip_test_args $EXTRA_GRADLE_ARGS
397+
./gradlew --no-configuration-cache release --stacktrace "--$GRADLE_LOG_LEVEL" "${skip_test_args[@]}" $EXTRA_GRADLE_ARGS
354398
355399
- name: Write release publish summary
356400
if: always() && env.RELEASE_VERSION != ''

0 commit comments

Comments
 (0)