ci: add matrix strategy for spring-security and improve test report check logic (#3768)

# Description of Changes

- Introduced a new matrix axis `spring-security` in the GitHub Actions
workflow to run tests with and without Spring Security features enabled.
- Removed duplicated build steps and unified them into a single Gradle
task using the matrix value.
- Refactored the test report check step to dynamically iterate over
expected directories using a Bash array, improving maintainability and
readability.
- Ensured test report artifacts are uploaded regardless of test success,
with clearer naming and a fallback if files are missing.


---

## Checklist

### General

- [x] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [x] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [ ] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md)
(if applicable)
- [x] I have performed a self-review of my own code
- [x] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### UI Changes (if applicable)

- [ ] Screenshots or videos demonstrating the UI changes are attached
(e.g., as comments or direct attachments in the PR)

### Testing (if applicable)

- [ ] I have tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing)
for more details.
This commit is contained in:
Ludy 2025-06-19 16:42:16 +02:00 committed by GitHub
parent 387ae5934d
commit 5a8162ff60
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -21,6 +21,7 @@ jobs:
fail-fast: false fail-fast: false
matrix: matrix:
jdk-version: [17, 21] jdk-version: [17, 21]
spring-security: [true, false]
steps: steps:
- name: Harden Runner - name: Harden Runner
@ -37,56 +38,41 @@ jobs:
java-version: ${{ matrix.jdk-version }} java-version: ${{ matrix.jdk-version }}
distribution: "temurin" distribution: "temurin"
- name: Build with Gradle and no spring security - name: Build with Gradle and spring security ${{ matrix.spring-security }}
run: ./gradlew clean build run: ./gradlew clean build
env: env:
DISABLE_ADDITIONAL_FEATURES: true DISABLE_ADDITIONAL_FEATURES: ${{ matrix.spring-security }}
- name: Build with Gradle and with spring security
run: ./gradlew clean build
env:
DISABLE_ADDITIONAL_FEATURES: false
- name: Check Test Reports Exist - name: Check Test Reports Exist
id: check-reports id: check-reports
if: always() if: always()
run: | run: |
declare -a dirs=(
"stirling-pdf/build/reports/tests/"
"stirling-pdf/build/test-results/"
"common/build/reports/tests/"
"common/build/test-results/"
"proprietary/build/reports/tests/"
"proprietary/build/test-results/"
)
missing_reports=() missing_reports=()
for dir in "${dirs[@]}"; do
# Check for required test report directories if [ ! -d "$dir" ]; then
if [ ! -d "stirling-pdf/build/reports/tests/" ]; then missing_reports+=("$dir")
missing_reports+=("stirling-pdf/build/reports/tests/")
fi fi
if [ ! -d "stirling-pdf/build/test-results/" ]; then done
missing_reports+=("stirling-pdf/build/test-results/")
fi
if [ ! -d "common/build/reports/tests/" ]; then
missing_reports+=("common/build/reports/tests/")
fi
if [ ! -d "common/build/test-results/" ]; then
missing_reports+=("common/build/test-results/")
fi
if [ ! -d "proprietary/build/reports/tests/" ]; then
missing_reports+=("proprietary/build/reports/tests/")
fi
if [ ! -d "proprietary/build/test-results/" ]; then
missing_reports+=("proprietary/build/test-results/")
fi
# Fail if any required reports are missing
if [ ${#missing_reports[@]} -gt 0 ]; then if [ ${#missing_reports[@]} -gt 0 ]; then
echo "ERROR: The following required test report directories are missing:" echo "ERROR: The following required test report directories are missing:"
printf '%s\n' "${missing_reports[@]}" printf '%s\n' "${missing_reports[@]}"
exit 1 exit 1
fi fi
echo "All required test report directories are present" echo "All required test report directories are present"
- name: Upload Test Reports - name: Upload Test Reports
if: steps.check-reports.outcome == 'success' if: always()
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with: with:
name: test-reports-jdk-${{ matrix.jdk-version }} name: test-reports-jdk-${{ matrix.jdk-version }}-spring-security-${{ matrix.spring-security }}
path: | path: |
stirling-pdf/build/reports/tests/ stirling-pdf/build/reports/tests/
stirling-pdf/build/test-results/ stirling-pdf/build/test-results/
@ -98,6 +84,7 @@ jobs:
proprietary/build/test-results/ proprietary/build/test-results/
proprietary/build/reports/problems/ proprietary/build/reports/problems/
retention-days: 3 retention-days: 3
if-no-files-found: warn
check-licence: check-licence:
runs-on: ubuntu-latest runs-on: ubuntu-latest