Repository navigation
Release http3 0.1.0 on http 0.1.2 and quic 0.1.0: h3 0.0.8, interop w… #2
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 |