Skip to content

Test All Packages (Batch 16) on Arm64 #32

Test All Packages (Batch 16) on Arm64

Test All Packages (Batch 16) on Arm64 #32

name: Test All Packages (Batch 16) on Arm64
on:
workflow_dispatch:
workflow_call:
jobs:
test-tesseract:
uses: ./.github/workflows/test-tesseract.yml
test-salmon:
uses: ./.github/workflows/test-salmon.yml
test-opensearch-dashboard:
uses: ./.github/workflows/test-opensearch-dashboard.yml
test-packetbeat:
uses: ./.github/workflows/test-packetbeat.yml
test-openvvc:
uses: ./.github/workflows/test-openvvc.yml
test-liferay:
uses: ./.github/workflows/test-liferay.yml
test-elastic-crawler:
uses: ./.github/workflows/test-elastic-crawler.yml
test-typescript:
uses: ./.github/workflows/test-typescript.yml
test-roaringbitmap:
uses: ./.github/workflows/test-RoaringBitmap.yml
test-falco:
uses: ./.github/workflows/test-falco.yml
test-haskell-nix:
uses: ./.github/workflows/test-haskell-nix.yml
test-flannel:
uses: ./.github/workflows/test-flannel.yml
test-redis:
uses: ./.github/workflows/test-redis.yml
test-docker:
uses: ./.github/workflows/test-docker.yml
test-openshift:
uses: ./.github/workflows/test-openshift.yml
test-rundeck:
uses: ./.github/workflows/test-rundeck.yml
test-kubewarden-policy-server:
uses: ./.github/workflows/test-kubewarden-policy-server.yml
test-memtester:
uses: ./.github/workflows/test-memtester.yml
test-lxcfs:
uses: ./.github/workflows/test-lxcfs.yml
test-npm:
uses: ./.github/workflows/test-npm.yml
test-terraform:
uses: ./.github/workflows/test-terraform.yml
test-postman:
uses: ./.github/workflows/test-postman.yml
test-iotop:
uses: ./.github/workflows/test-iotop.yml
test-openscenegraph:
uses: ./.github/workflows/test-openscenegraph.yml
test-pandas:
uses: ./.github/workflows/test-pandas.yml
test-geoserver:
uses: ./.github/workflows/test-geoserver.yml
test-kata:
uses: ./.github/workflows/test-kata.yml
test-netcdf:
uses: ./.github/workflows/test-netcdf.yml
test-cjson:
uses: ./.github/workflows/test-cjson.yml
test-domo-node-sdk:
uses: ./.github/workflows/test-domo-node-sdk.yml
test-swig:
uses: ./.github/workflows/test-swig.yml
test-tcl:
uses: ./.github/workflows/test-tcl.yml
test-zstandard:
uses: ./.github/workflows/test-zstandard.yml
test-functionbeat:
uses: ./.github/workflows/test-functionbeat.yml
test-cilium:
uses: ./.github/workflows/test-cilium.yml
test-eclipse_temurin:
uses: ./.github/workflows/test-eclipse_temurin.yml
test-vvenc:
uses: ./.github/workflows/test-VVenC.yml
test-elasticapmserver:
uses: ./.github/workflows/test-elasticapmserver.yml
test-dapr:
uses: ./.github/workflows/test-dapr.yml
test-openssh:
uses: ./.github/workflows/test-openssh.yml
test-gperftools:
uses: ./.github/workflows/test-gperftools.yml
test-haystack:
uses: ./.github/workflows/test-haystack.yml
summary:
needs:
[
test-tesseract,
test-salmon,
test-opensearch-dashboard,
test-packetbeat,
test-openvvc,
test-liferay,
test-elastic-crawler,
test-typescript,
test-roaringbitmap,
test-falco,
test-haskell-nix,
test-flannel,
test-redis,
test-docker,
test-openshift,
test-rundeck,
test-kubewarden-policy-server,
test-memtester,
test-lxcfs,
test-npm,
test-terraform,
test-postman,
test-iotop,
test-openscenegraph,
test-pandas,
test-geoserver,
test-kata,
test-netcdf,
test-cjson,
test-domo-node-sdk,
test-swig,
test-tcl,
test-zstandard,
test-functionbeat,
test-cilium,
test-eclipse_temurin,
test-vvenc,
test-elasticapmserver,
test-dapr,
test-openssh,
test-gperftools,
test-haystack
]
runs-on: ubuntu-24.04-arm
if: always()
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Download all test results
uses: actions/download-artifact@v4
with:
path: test-results
- name: Create summary
shell: bash
run: |
echo "# 📊 Package Test Summary (Batch 16)" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "## Test Results" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
TOTAL_PACKAGES=0
PASSED_PACKAGES=0
FAILED_PACKAGES=0
for result_dir in test-results/*/; do
if [ -d "$result_dir" ]; then
TOTAL_PACKAGES=$((TOTAL_PACKAGES + 1))
for json_file in "$result_dir"*.json; do
if [ -f "$json_file" ]; then
PKG_NAME=$(jq -r '.package.name' "$json_file")
STATUS=$(jq -r '.run.status' "$json_file")
TESTS_PASSED=$(jq -r '.tests.passed' "$json_file")
TESTS_FAILED=$(jq -r '.tests.failed' "$json_file")
VERSION=$(jq -r '.package.version' "$json_file")
VERSION=$(echo "$VERSION" | sed 's/[",]//g' | tr -d '\\' | sed 's/\x1b\[[0-9;]*m//g')
if [ "$STATUS" = "success" ]; then
PASSED_PACKAGES=$((PASSED_PACKAGES + 1))
echo "✅ **$PKG_NAME** (v$VERSION): $TESTS_PASSED tests passed" >> $GITHUB_STEP_SUMMARY
else
FAILED_PACKAGES=$((FAILED_PACKAGES + 1))
echo "❌ **$PKG_NAME** (v$VERSION): $TESTS_FAILED tests failed" >> $GITHUB_STEP_SUMMARY
fi
fi
done
fi
done
echo "" >> $GITHUB_STEP_SUMMARY
echo "## Overall Summary (Batch 16)" >> $GITHUB_STEP_SUMMARY
echo "- **Total Packages Tested:** $TOTAL_PACKAGES" >> $GITHUB_STEP_SUMMARY
echo "- **Passed:** $PASSED_PACKAGES ✅" >> $GITHUB_STEP_SUMMARY
echo "- **Failed:** $FAILED_PACKAGES ❌" >> $GITHUB_STEP_SUMMARY
- name: Commit test results to repository
shell: bash
run: |
git config --global user.name 'github-actions[bot]'
git config --global user.email 'github-actions[bot]@users.noreply.github.com'
mkdir -p data/test-results
echo "📂 Copying results from artifacts to data directory..."
# Find all JSON files in the test-results directory (from artifacts)
find test-results -name "*.json" -exec cp {} data/test-results/ \;
git add data/test-results/*.json
if ! git diff --staged --quiet; then
git commit -m "Update test results for ${{ github.workflow }} [skip ci]"
PUSH_SUCCESS=false
# Pull with rebase and push, retry up to 20 times
for i in {1..20}; do
if git pull --rebase origin ${{ github.ref_name }}; then
if git push; then
echo "Successfully pushed batch test results"
PUSH_SUCCESS=true
break
fi
else
echo "Rebase failed, resolving conflicts..."
# In case of conflict, we keep our newly generated files
git checkout --ours data/test-results/*.json
git add data/test-results/*.json
git rebase --continue || true
fi
echo "Retry attempt $i of 20..."
sleep $(( (i % 5 + 1) * 2 + (RANDOM % 3) ))
done
if [ "$PUSH_SUCCESS" = false ]; then
echo "❌ Error: Failed to push batch results after 20 attempts."
exit 1
fi
else
echo "No changes to commit"
fi