Files
Nextus-Web/.gitea/workflows/test.yml
T
CodingPhoenixx 0d8ee099a0
Auto Publish on Version Change / check-and-publish (push) Successful in 13s
Run Tests on Push and Pull Request / run-tests (push) Successful in 18s
Streamline test report packaging and uploading in test.yml: archive reports, handle missing directories, and upload to Gitea packages.
2026-05-28 13:56:52 +02:00

88 lines
3.1 KiB
YAML

name: Run Tests on Push and Pull Request
on:
push:
branches:
- master
pull_request:
jobs:
run-tests:
runs-on: java26
steps:
- name: Checkout Code
run: |
SERVER_DOMAIN=$(echo "${{ github.server_url }}" | sed 's/https:\/\///')
rm -rf "$GITHUB_WORKSPACE"/*
git clone "https://${{ github.actor }}:${{ secrets.GITHUB_TOKEN }}@${SERVER_DOMAIN}/${{ github.repository }}.git" "$GITHUB_WORKSPACE"
cd "$GITHUB_WORKSPACE"
git checkout ${{ github.sha }}
- name: Make gradlew executable
run: |
cd "$GITHUB_WORKSPACE"
chmod +x ./gradlew
- name: Run JUnit tests
id: run_tests
run: |
cd "$GITHUB_WORKSPACE"
./gradlew test --no-daemon --stacktrace
- name: Package and upload test reports
if: always()
run: |
cd "$GITHUB_WORKSPACE"
if [ ! -d "build/reports/tests/test" ] && [ ! -d "build/test-results/test" ]; then
echo "No test reports produced, skipping upload."
exit 0
fi
SHORT_SHA=$(echo "${{ github.sha }}" | cut -c1-7)
ARCHIVE="test-reports-${SHORT_SHA}.tar.gz"
tar -czf "$ARCHIVE" \
$( [ -d build/reports/tests/test ] && echo build/reports/tests/test ) \
$( [ -d build/test-results/test ] && echo build/test-results/test )
echo "Archive size: $(du -h "$ARCHIVE" | cut -f1)"
SERVER_URL="${{ github.server_url }}"
OWNER="${{ github.repository_owner }}"
PKG_NAME="nexusweb-test-reports"
VERSION="run-${{ github.run_number }}-${SHORT_SHA}"
UPLOAD_URL="${SERVER_URL}/api/packages/${OWNER}/generic/${PKG_NAME}/${VERSION}/${ARCHIVE}"
echo "Uploading to: ${UPLOAD_URL}"
# Delete any previous package with the same version (e.g. job re-run on same commit),
# ignore failures (404 if it does not exist yet).
curl -s -o /dev/null -w "Delete previous (if any): HTTP %{http_code}\n" \
-X DELETE \
-H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
"${UPLOAD_URL}" || true
HTTP_STATUS=$(curl -s -o /tmp/upload-response.txt -w "%{http_code}" \
-X PUT \
-H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
--data-binary @"${ARCHIVE}" \
"${UPLOAD_URL}")
if [ "$HTTP_STATUS" = "201" ] || [ "$HTTP_STATUS" = "200" ] || [ "$HTTP_STATUS" = "204" ]; then
echo "Upload successful (HTTP ${HTTP_STATUS})"
echo ""
echo "Test reports available at:"
echo " ${SERVER_URL}/${OWNER}/-/packages/generic/${PKG_NAME}/${VERSION}"
echo ""
echo "Or via API:"
echo " ${UPLOAD_URL}"
else
echo "Upload failed (HTTP ${HTTP_STATUS})"
cat /tmp/upload-response.txt || true
echo ""
echo "Test reports still present locally in build/reports/tests/test/index.html"
# Do not fail the workflow over the report upload.
fi