Skip to content

Test All Packages (Batch 2) on Arm64 #85

Test All Packages (Batch 2) on Arm64

Test All Packages (Batch 2) on Arm64 #85

name: Test All Packages (Batch 2) on Arm64
on:
workflow_dispatch:
workflow_call:
jobs:
test-arangodb:
uses: ./.github/workflows/test-arangodb.yml
test-archiconda3:
uses: ./.github/workflows/test-archiconda3.yml
test-argo:
uses: ./.github/workflows/test-argo.yml
test-arthas:
uses: ./.github/workflows/test-arthas.yml
test-auditbeat:
uses: ./.github/workflows/test-auditbeat.yml
test-avahi:
uses: ./.github/workflows/test-avahi.yml
test-avro:
uses: ./.github/workflows/test-avro_py.yml
test-avxtoneon:
uses: ./.github/workflows/test-AvxToNeon.yml
test-httpcomponents-client:
uses: ./.github/workflows/test-httpcomponents-client.yml
test-velocity:
uses: ./.github/workflows/test-velocity.yml
test-tinker:
uses: ./.github/workflows/test-tinker.yml
test-ubuntu:
uses: ./.github/workflows/test-ubuntu.yml
test-sqlite:
uses: ./.github/workflows/test-sqlite.yml
test-rqlite:
uses: ./.github/workflows/test-rqlite.yml
test-keras:
uses: ./.github/workflows/test-keras.yml
test-pcre:
uses: ./.github/workflows/test-pcre.yml
test-robot-framework:
uses: ./.github/workflows/test-robot-framework.yml
test-netty:
uses: ./.github/workflows/test-netty.yml
test-haproxy:
uses: ./.github/workflows/test-haproxy.yml
test-bcrypt:
uses: ./.github/workflows/test-bcrypt.yml
test-powershell:
uses: ./.github/workflows/test-powershell.yml
test-spark-sql-kinesis:
uses: ./.github/workflows/test-spark-sql-kinesis.yml
test-centos:
uses: ./.github/workflows/test-centos.yml
test-daytona:
uses: ./.github/workflows/test-daytona.yml
test-spring-cloud-sleuth:
uses: ./.github/workflows/test-spring-cloud-sleuth.yml
test-madoguchi:
uses: ./.github/workflows/test-madoguchi.yml
test-gardener:
uses: ./.github/workflows/test-gardener.yml
test-tbb:
uses: ./.github/workflows/test-tbb.yml
test-pinot:
uses: ./.github/workflows/test-pinot.yml
test-clickhouse:
uses: ./.github/workflows/test-clickhouse.yml
test-nextflow:
uses: ./.github/workflows/test-nextflow.yml
test-python-xmlsec:
uses: ./.github/workflows/test-python-xmlsec.yml
test-5g-ral:
uses: ./.github/workflows/test-5G-RAL.yml
test-libunwind:
uses: ./.github/workflows/test-libunwind.yml
test-libaom:
uses: ./.github/workflows/test-libaom.yml
test-volcano:
uses: ./.github/workflows/test-volcano.yml
test-katsu:
uses: ./.github/workflows/test-katsu.yml
test-repeatafterme:
uses: ./.github/workflows/test-repeatafterme.yml
test-dhcp:
uses: ./.github/workflows/test-dhcp.yml
test-cloud-hypervisor:
uses: ./.github/workflows/test-cloud-hypervisor.yml
test-nova:
uses: ./.github/workflows/test-nova.yml
test-onnx:
uses: ./.github/workflows/test-onnx.yml
test-geos:
uses: ./.github/workflows/test-geos.yml
summary:
needs:
[
test-arangodb,
test-archiconda3,
test-argo,
test-arthas,
test-auditbeat,
test-avahi,
test-avro,
test-avxtoneon,
test-httpcomponents-client,
test-velocity,
test-tinker,
test-ubuntu,
test-sqlite,
test-rqlite,
test-keras,
test-pcre,
test-robot-framework,
test-netty,
test-haproxy,
test-bcrypt,
test-powershell,
test-spark-sql-kinesis,
test-centos,
test-daytona,
test-spring-cloud-sleuth,
test-madoguchi,
test-gardener,
test-tbb,
test-pinot,
test-clickhouse,
test-nextflow,
test-python-xmlsec,
test-5g-ral,
test-libunwind,
test-libaom,
test-volcano,
test-katsu,
test-repeatafterme,
test-dhcp,
test-cloud-hypervisor,
test-nova,
test-onnx,
test-geos
]
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 2)" >> $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 2)" >> $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