Skip to content

Release http3 0.1.0 on http 0.1.2 and quic 0.1.0: h3 0.0.8, interop w… #2

Release http3 0.1.0 on http 0.1.2 and quic 0.1.0: h3 0.0.8, interop w…

Release http3 0.1.0 on http 0.1.2 and quic 0.1.0: h3 0.0.8, interop w… #2

Workflow file for this run

name: CI
# The whole suite on macOS (kqueue), Linux x64 (epoll) and Windows (IOCP, WSAPoll). Any branch, PRs, or by hand.
#
# Until quic 0.1.0 and an io release with UDP on Windows are on Maven Central, both come from their repositories:
# quic through settings.gradle.kts' includeBuild("../quic") (so this repository is checked out next to it), io through
# --include-build. Drop both checkouts once they are released.
on:
push:
pull_request:
workflow_dispatch:
env:
QUIC_REF: main
IO_REF: main
jobs:
test:
name: test (${{ matrix.name }})
strategy:
fail-fast: false
matrix:
include:
- { name: macOS kqueue, os: macos-14, task: macosArm64Test, driver: "" }
- { name: Linux epoll, os: ubuntu-latest, task: linuxX64Test, driver: epoll }
- { name: Windows IOCP, os: windows-latest, task: mingwX64Test, driver: "" }
- { name: Windows WSAPoll, os: windows-latest, task: mingwX64Test, driver: wsapoll }
runs-on: ${{ matrix.os }}
timeout-minutes: 90
env:
NETON_IO_DRIVER: ${{ matrix.driver }}
steps:
- uses: actions/checkout@v4
with:
path: http3
- uses: actions/checkout@v4
with:
repository: netonframework/quic
ref: ${{ env.QUIC_REF }}
path: quic
- uses: actions/checkout@v4
with:
repository: netonframework/io
ref: ${{ env.IO_REF }}
path: io-src
- uses: actions/setup-java@v4
with:
distribution: temurin
java-version: '17'
- uses: gradle/actions/setup-gradle@v4
- name: Cache Kotlin/Native toolchain
uses: actions/cache@v4
with:
path: ~/.konan
key: konan-${{ runner.os }}-${{ hashFiles('**/*.gradle.kts', '**/libs.versions.toml') }}
- name: Test
shell: bash
working-directory: http3
run: ./gradlew --include-build ../io-src :http3:${{ matrix.task }} --no-daemon --stacktrace --continue
- name: Summary
if: always()
shell: bash
run: |
python3 - <<'PY' >> "$GITHUB_STEP_SUMMARY"
import glob, re
tests = fails = 0; failed = []
for f in glob.glob('http3/http3/build/test-results/**/*.xml', recursive=True):
s = open(f, encoding='utf-8', errors='replace').read()
m = re.search(r'tests="(\d+)"', s); tests += int(m.group(1)) if m else 0
for c in re.finditer(r'<testcase name="([^"]+)" classname="([^"]+)"[^>]*>\s*<failure message="([^"]*)"', s):
fails += 1; failed.append(f"- {c.group(2)}.{c.group(1)}: {c.group(3)[:300]}")
print(f"### ${{ matrix.name }}: {tests} tests, {fails} failures")
print("\n".join(failed))
PY
- if: always()
uses: actions/upload-artifact@v4
with:
name: test-results-${{ matrix.name }}
path: |
http3/http3/build/test-results/**
http3/http3/build/reports/tests/**
if-no-files-found: ignore