Skip to content

Introduces preferred addressing to the Quiche apps server and client examples #5115

Introduces preferred addressing to the Quiche apps server and client examples

Introduces preferred addressing to the Quiche apps server and client examples #5115

Workflow file for this run

on: [push, pull_request]
name: Stable
env:
RUSTFLAGS: "-D warnings"
TOOLCHAIN: "stable"
jobs:
quiche:
runs-on: ubuntu-latest
strategy:
matrix:
tls-feature:
- "" # default, boringssl-vendored
- "boringssl-boring-crate"
- "openssl"
# Only run on "pull_request" event for external PRs. This is to avoid
# duplicate builds for PRs created from internal branches.
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository
steps:
- name: Checkout sources
uses: actions/checkout@v3
with:
submodules: 'recursive'
- name: Install stable toolchain
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: ${{ env.TOOLCHAIN }}
components: clippy
override: true
- name: Build OpenSSL
if: ${{ matrix.tls-feature == 'openssl' }}
run: |
git clone https://github.com/quictls/openssl
cd openssl
./Configure --prefix="$PWD/install"
make -j"$(nproc)"
make install -j"$(nproc)"
echo "PKG_CONFIG_PATH=$PWD" >> "$GITHUB_ENV"
echo "LD_LIBRARY_PATH=$PWD" >> "$GITHUB_ENV"
- name: Run cargo test
uses: actions-rs/cargo@v1
with:
command: test
args: --verbose --all-targets --features=ffi,qlog,${{ matrix.tls-feature }}
# Need to run doc tests separately.
# (https://github.com/rust-lang/cargo/issues/6669)
- name: Run cargo doc test
uses: actions-rs/cargo@v1
with:
command: test
args: --verbose --doc --features=ffi,qlog,${{ matrix.tls-feature }}
- name: Run cargo package
uses: actions-rs/cargo@v1
with:
command: package
args: --verbose --workspace --exclude=quiche_apps --allow-dirty
- name: Run cargo clippy
uses: actions-rs/cargo@v1
with:
command: clippy
args: --features=ffi,qlog,${{ matrix.tls-feature }} -- -D warnings
- name: Run cargo clippy on examples
uses: actions-rs/cargo@v1
with:
command: clippy
args: --examples --features=ffi,qlog,${{ matrix.tls-feature }} -- -D warnings
- name: Run cargo doc
uses: actions-rs/cargo@v1
with:
command: doc
args: --no-deps --all-features --document-private-items
- name: Build C examples
run: |
sudo apt-get install libev-dev uthash-dev
make -C quiche/examples
quiche_macos:
strategy:
matrix:
target:
- "macos-latest" # Intel (x86_64)
- "macos-14" # Apple Silicon (M1)
runs-on: ${{ matrix.target }}
# Only run on "pull_request" event for external PRs. This is to avoid
# duplicate builds for PRs created from internal branches.
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository
steps:
- name: Checkout sources
uses: actions/checkout@v3
with:
submodules: 'recursive'
- name: Install stable toolchain
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: ${{ env.TOOLCHAIN }}
override: true
- name: Run cargo test
uses: actions-rs/cargo@v1
with:
command: test
args: --verbose --all-targets --features ffi,qlog
- name: Build C examples
run: |
brew install libev uthash
make -C quiche/examples
quiche_ios:
runs-on: macos-latest
strategy:
matrix:
target: ["x86_64-apple-ios", "aarch64-apple-ios"]
# Only run on "pull_request" event for external PRs. This is to avoid
# duplicate builds for PRs created from internal branches.
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository
steps:
- name: Checkout sources
uses: actions/checkout@v3
with:
submodules: 'recursive'
- name: Install stable toolchain
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: ${{ env.TOOLCHAIN }}
target: ${{ matrix.target }}
override: true
- name: Remove cdylib from iOS build
run: |
sed -i -e 's/, "cdylib"//g' quiche/Cargo.toml
- name: Run cargo build
uses: actions-rs/cargo@v1
with:
command: build
args: --target=${{ matrix.target }} --verbose
quiche_windows:
runs-on: windows-2019
strategy:
matrix:
target: ["x86_64-pc-windows-msvc", "i686-pc-windows-msvc", "x86_64-pc-windows-gnu", "i686-pc-windows-gnu"]
# Only run on "pull_request" event for external PRs. This is to avoid
# duplicate builds for PRs created from internal branches.
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository
steps:
- name: Checkout sources
uses: actions/checkout@v3
with:
submodules: 'recursive'
- name: Install stable toolchain
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: ${{ env.TOOLCHAIN }}-${{ matrix.target }}
target: ${{ matrix.target }}
override: true
- name: Set up MinGW for 64 bit
if: matrix.target == 'x86_64-pc-windows-gnu'
uses: bwoodsend/setup-winlibs-action@v1.10
with:
tag: 12.2.0-16.0.0-10.0.0-msvcrt-r5
- name: Set up MinGW for 32 bit
if: matrix.target == 'i686-pc-windows-gnu'
uses: bwoodsend/setup-winlibs-action@v1.10
with:
architecture: i686
tag: 12.2.0-16.0.0-10.0.0-msvcrt-r5
- name: Install dependencies
uses: crazy-max/ghaction-chocolatey@v2
with:
args: install nasm
- name: Run cargo build
if: endsWith(matrix.target, '-gnu')
uses: actions-rs/cargo@v1
with:
command: build
args: --target=${{ matrix.target }} --verbose --all-targets --features=ffi,qlog
- name: Run cargo test
if: endsWith(matrix.target, '-msvc')
uses: actions-rs/cargo@v1
with:
command: test
args: --target=${{ matrix.target }} --verbose --all-targets --features=ffi,qlog
quiche_multiarch:
runs-on: ubuntu-latest
strategy:
matrix:
target: ["aarch64-unknown-linux-gnu","armv7-unknown-linux-gnueabihf","i686-unknown-linux-gnu"]
# Only run on "pull_request" event for external PRs. This is to avoid
# duplicate builds for PRs created from internal branches.
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository
steps:
- name: Checkout sources
uses: actions/checkout@v3
with:
submodules: 'recursive'
- name: Run cargo test
uses: actions-rs/cargo@v1
with:
command: test
args: --target=${{ matrix.target }} --verbose --all-targets --features=ffi,qlog
use-cross: true
http3_test:
runs-on: ubuntu-latest
# Only run on "pull_request" event for external PRs. This is to avoid
# duplicate builds for PRs created from internal branches.
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository
steps:
- name: Checkout sources
uses: actions/checkout@v3
with:
submodules: 'recursive'
- name: Install stable toolchain
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: ${{ env.TOOLCHAIN }}
override: true
- name: Run cargo test
uses: actions-rs/cargo@v1
with:
command: test
args: --no-run --verbose --manifest-path=tools/http3_test/Cargo.toml
- name: Run cargo clippy
uses: actions-rs/cargo@v1
with:
command: clippy
args: --manifest-path=tools/http3_test/Cargo.toml -- -D warnings
nginx:
runs-on: ubuntu-latest
strategy:
matrix:
version: ["1.16.1"]
# Only run on "pull_request" event for external PRs. This is to avoid
# duplicate builds for PRs created from internal branches.
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository
steps:
- name: Checkout sources
uses: actions/checkout@v3
with:
submodules: 'recursive'
- name: Install stable toolchain
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: ${{ env.TOOLCHAIN }}
override: true
- name: Install dependencies
run: sudo apt-get install libpcre3-dev zlib1g-dev
- name: Download NGINX sources
run: curl -O https://nginx.org/download/nginx-${{ matrix.version }}.tar.gz
- name: Extract NGINX sources
run: tar xzf nginx-${{ matrix.version }}.tar.gz
- name: Build NGINX
run: |
cd nginx-${{ matrix.version }} &&
patch -p01 < ../nginx/nginx-1.16.patch &&
./configure --with-http_ssl_module --with-http_v2_module --with-http_v3_module --with-openssl="${{ github.workspace }}/quiche/deps/boringssl" --with-quiche="${{ github.workspace }}" --with-debug &&
make -j`nproc` &&
objs/nginx -V
docker:
runs-on: ubuntu-latest
# Only run on "pull_request" event for external PRs. This is to avoid
# duplicate builds for PRs created from internal branches.
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository
steps:
- name: Checkout sources
uses: actions/checkout@v3
with:
submodules: 'recursive'
- name: Build Docker images
run: make docker-build
android_ndk_lts:
runs-on: ubuntu-latest
env:
NDK_LTS_VER: "25"
API_LEVEL: "21"
strategy:
matrix:
target: ["aarch64-linux-android","armv7-linux-androideabi","x86_64-linux-android","i686-linux-android"]
include:
- target: "aarch64-linux-android"
arch: "arm64-v8a"
- target: "armv7-linux-androideabi"
arch: "armeabi-v7a"
- target: "x86_64-linux-android"
arch: "x86_64"
- target: "i686-linux-android"
arch: "x86"
# Only run on "pull_request" event for external PRs. This is to avoid
# duplicate builds for PRs created from internal branches.
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository
steps:
- name: Checkout sources
uses: actions/checkout@v3
with:
submodules: 'recursive'
- name: Install stable toolchain for the target
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: ${{ env.TOOLCHAIN }}
target: ${{ matrix.target }}
override: true
- name: Install cargo-ndk
uses: actions-rs/install@v0.1
with:
crate: cargo-ndk
- name: Download NDK
run: curl --http1.1 -O https://dl.google.com/android/repository/android-ndk-r${{ env.NDK_LTS_VER }}-linux.zip
- name: Extract NDK
run: unzip -q android-ndk-r${{ env.NDK_LTS_VER }}-linux.zip
- name: Run cargo ndk
uses: actions-rs/cargo@v1
with:
command: ndk
args: -t ${{ matrix.arch }} -p ${{ env.API_LEVEL }} -- build --verbose --features ffi
env:
ANDROID_NDK_HOME: ${{ github.workspace }}/android-ndk-r${{ env.NDK_LTS_VER }}