blob: ddce63e057f359218cba05f32e689fc047d6886e [file] [log] [blame]
on: [push, pull_request]
name: Stable
env:
RUSTFLAGS: "-D warnings"
TOOLCHAIN: "stable"
jobs:
quiche:
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@v2
with:
submodules: 'recursive'
- name: Install stable toolchain
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: ${{ env.TOOLCHAIN }}
components: clippy
override: true
- name: Install dependencies
run: sudo apt-get install libev-dev uthash-dev
- name: Run cargo test
uses: actions-rs/cargo@v1
with:
command: test
args: --tests --examples --verbose --features qlog
- name: Run cargo package
uses: actions-rs/cargo@v1
with:
command: package
args: --verbose --allow-dirty
- name: Run cargo clippy
uses: actions-rs/cargo@v1
with:
command: clippy
args: --examples -- -D warnings
- name: Run cargo doc
uses: actions-rs/cargo@v1
with:
command: doc
args: --no-deps
- name: Build C examples
run: make -C examples
quiche_macos:
runs-on: macos-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@v2
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
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@v2
with:
submodules: 'recursive'
- name: Install stable toolchain
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: ${{ env.TOOLCHAIN }}
target: ${{ matrix.target }}
override: true
- name: Run cargo build
uses: actions-rs/cargo@v1
with:
command: build
args: --target=${{ matrix.target }} --verbose
quiche_windows:
runs-on: windows-latest
strategy:
matrix:
target: ["x86_64-pc-windows-msvc", "i686-pc-windows-msvc"]
# 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@v2
with:
submodules: 'recursive'
- name: Install stable toolchain
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: ${{ env.TOOLCHAIN }}
target: ${{ matrix.target }}
override: true
- name: Install dependencies
uses: crazy-max/ghaction-chocolatey@v1
with:
args: install nasm
- name: Run cargo test
uses: actions-rs/cargo@v1
with:
command: test
args: --target=${{ matrix.target }} --verbose
quiche_multiarch:
runs-on: ubuntu-latest
strategy:
matrix:
target: ["aarch64-unknown-linux-gnu","armv7-unknown-linux-gnueabihf","i686-unknown-linux-gnu"]
cmd: ["test"]
include:
# cross doesn't support test in FreeBSD yet.
- target: "x86_64-unknown-freebsd"
cmd: "build"
# 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@v2
with:
submodules: 'recursive'
- name: Run cargo build/test
uses: actions-rs/cargo@v1
with:
command: ${{ matrix.cmd }}
args: --target=${{ matrix.target }} --verbose
use-cross: true
apps:
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@v2
with:
submodules: 'recursive'
- name: Install stable toolchain
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: ${{ env.TOOLCHAIN }}
override: true
- name: Run cargo build
uses: actions-rs/cargo@v1
with:
command: build
args: --verbose --manifest-path=tools/apps/Cargo.toml
- name: Run cargo clippy
uses: actions-rs/cargo@v1
with:
command: clippy
args: --manifest-path=tools/apps/Cargo.toml -- -D warnings
qlog:
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@v2
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 --manifest-path=tools/qlog/Cargo.toml
- name: Run cargo clippy
uses: actions-rs/cargo@v1
with:
command: clippy
args: --manifest-path=tools/qlog/Cargo.toml -- -D warnings
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@v2
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@v2
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 < ../extras/nginx/nginx-1.16.patch &&
./configure --with-http_ssl_module --with-http_v2_module --with-http_v3_module --with-openssl="../deps/boringssl" --with-quiche=".." --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@v2
with:
submodules: 'recursive'
- name: Build Docker images
run: make docker-build
android_ndk_old:
runs-on: ubuntu-latest
strategy:
matrix:
ndk_version: ["r13b"]
# 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@v2
with:
submodules: 'recursive'
- name: Install stable toolchain aarch64-linux-android
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: ${{ env.TOOLCHAIN }}
target: aarch64-linux-android
override: true
- name: Install stable toolchain arm-linux-androideabi
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: ${{ env.TOOLCHAIN }}
target: arm-linux-androideabi
override: true
- name: Install stable toolchain armv7-linux-androideabi
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: ${{ env.TOOLCHAIN }}
target: armv7-linux-androideabi
override: true
- name: Install stable toolchain i686-linux-android
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: ${{ env.TOOLCHAIN }}
target: i686-linux-android
override: true
- name: Download NDK
run: curl --http1.1 -O https://dl.google.com/android/repository/android-ndk-${{ matrix.ndk_version }}-linux-x86_64.zip
- name: Extract NDK
run: unzip -q android-ndk-${{ matrix.ndk_version }}-linux-x86_64.zip
- name: Run build
run: |
mkdir -p $TOOLCHAIN_DIR &&
tools/android/setup_android.sh &&
tools/android/build_android.sh --verbose --features ndk-old-gcc
env:
ANDROID_NDK_HOME: ${{ github.workspace }}/android-ndk-${{ matrix.ndk_version }}
TOOLCHAIN_DIR: ${{ github.workspace }}/toolchain
android_ndk_lts:
runs-on: ubuntu-latest
env:
NDK_LTS_VER: "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@v2
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-x86_64.zip
- name: Extract NDK
run: unzip -q android-ndk-r${{ env.NDK_LTS_VER }}-linux-x86_64.zip
- name: Run cargo ndk
uses: actions-rs/cargo@v1
with:
command: ndk
args: -t ${{ matrix.arch }} -p ${{ env.NDK_LTS_VER }} -- build --verbose --features ffi
env:
ANDROID_NDK_HOME: ${{ github.workspace }}/android-ndk-r${{ env.NDK_LTS_VER }}