RELEASE-NOTES: synced #1
This file contains 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
# Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al. | |
# | |
# SPDX-License-Identifier: curl | |
name: ngtcp2-linux | |
on: | |
push: | |
branches: | |
- master | |
- '*/ci' | |
paths-ignore: | |
- '**/*.md' | |
- '**/CMakeLists.txt' | |
- '.azure-pipelines.yml' | |
- '.circleci/**' | |
- '.cirrus.yml' | |
- 'appveyor.yml' | |
- 'CMake/**' | |
- 'packages/**' | |
- 'plan9/**' | |
- 'projects/**' | |
- 'winbuild/**' | |
pull_request: | |
branches: | |
- master | |
paths-ignore: | |
- '**/*.md' | |
- '**/CMakeLists.txt' | |
- '.azure-pipelines.yml' | |
- '.circleci/**' | |
- '.cirrus.yml' | |
- 'appveyor.yml' | |
- 'CMake/**' | |
- 'packages/**' | |
- 'plan9/**' | |
- 'projects/**' | |
- 'winbuild/**' | |
concurrency: | |
# Hardcoded workflow filename as workflow name above is just Linux again | |
group: ngtcp2-${{ github.event.pull_request.number || github.sha }} | |
cancel-in-progress: true | |
permissions: {} | |
env: | |
MAKEFLAGS: -j 3 | |
openssl-version: 3.0.9+quic | |
nghttp3-version: v0.13.0 | |
ngtcp2-version: v0.17.0 | |
nghttp2-version: v1.55.1 | |
gnutls-version: 3.8.0 | |
wolfssl-version: v5.6.3-stable | |
mod_h2-version: v2.0.21 | |
jobs: | |
autotools: | |
name: ${{ matrix.build.name }} | |
runs-on: 'ubuntu-latest' | |
timeout-minutes: 60 | |
strategy: | |
fail-fast: false | |
matrix: | |
build: | |
- name: quictls | |
configure: >- | |
PKG_CONFIG_PATH="$HOME/nghttpx/lib/pkgconfig" LDFLAGS="-Wl,-rpath,$HOME/nghttpx/lib" | |
--with-ngtcp2=$HOME/nghttpx --enable-warnings --enable-werror --enable-debug | |
--with-test-nghttpx="$HOME/nghttpx/bin/nghttpx" | |
--with-openssl=$HOME/nghttpx | |
- name: gnutls | |
configure: >- | |
PKG_CONFIG_PATH="$HOME/nghttpx/lib/pkgconfig" LDFLAGS="-Wl,-rpath,$HOME/nghttpx/lib" | |
--with-ngtcp2=$HOME/nghttpx --enable-warnings --enable-werror --enable-debug | |
--with-test-nghttpx="$HOME/nghttpx/bin/nghttpx" | |
--with-gnutls=$HOME/nghttpx | |
- name: wolfssl | |
configure: >- | |
PKG_CONFIG_PATH="$HOME/nghttpx/lib/pkgconfig" LDFLAGS="-Wl,-rpath,$HOME/nghttpx/lib" | |
--with-ngtcp2=$HOME/nghttpx --enable-warnings --enable-werror --enable-debug | |
--with-test-nghttpx="$HOME/nghttpx/bin/nghttpx" | |
--with-wolfssl=$HOME/nghttpx | |
steps: | |
- run: | | |
sudo apt-get update | |
sudo apt-get install libtool autoconf automake pkg-config stunnel4 \ | |
libpsl-dev libbrotli-dev libzstd-dev zlib1g-dev libev-dev libc-ares-dev \ | |
nettle-dev libp11-kit-dev libtspi-dev libunistring-dev guile-2.2-dev libtasn1-bin \ | |
libtasn1-6-dev libidn2-0-dev gawk gperf libtss2-dev dns-root-data bison gtk-doc-tools \ | |
texinfo texlive texlive-extra-utils autopoint libev-dev \ | |
apache2 apache2-dev libnghttp2-dev | |
name: 'install prereqs and impacket, pytest, crypto, apache2' | |
- name: cache nghttpx | |
uses: actions/cache@v3 | |
id: cache-nghttpx | |
env: | |
cache-name: cache-nghttpx | |
with: | |
path: /home/runner/nghttpx | |
key: ${{ runner.os }}-build-${{ env.cache-name }}-openssl-${{ env.openssl-version }}-nghttp3-${{ env.nghttp3-version }}-ngtcp2-${{ env.ngtcp2-version }}-nghttp2-${{ env.nghttp2-version }}-gnutls-${{ env.gnutls-version }}-wolfssl-${{ env.wolfssl-version }} | |
- if: steps.cache-nghttpx.outputs.cache-hit != 'true' | |
run: | | |
git clone --quiet --depth=1 -b openssl-${{ env.openssl-version }} https://github.com/quictls/openssl | |
cd openssl | |
./config --prefix=$HOME/nghttpx --libdir=$HOME/nghttpx/lib | |
make -j1 install_sw | |
name: 'install quictls' | |
- if: steps.cache-nghttpx.outputs.cache-hit != 'true' | |
run: | | |
git clone --quiet --depth=1 -b ${{ env.gnutls-version }} https://github.com/gnutls/gnutls.git | |
cd gnutls | |
./bootstrap | |
./configure --prefix=$HOME/nghttpx \ | |
PKG_CONFIG_PATH="$HOME/nghttpx/lib/pkgconfig" LDFLAGS="-Wl,-rpath,$HOME/nghttpx/lib -L$HOME/nghttpx/lib" \ | |
--with-included-libtasn1 --with-included-unistring \ | |
--disable-guile --disable-doc --disable-tests --disable-tools | |
make install | |
name: 'install gnutls' | |
- if: steps.cache-nghttpx.outputs.cache-hit != 'true' | |
run: | | |
git clone --quiet --depth=1 -b ${{ env.wolfssl-version }} https://github.com/wolfSSL/wolfssl.git | |
cd wolfssl | |
./autogen.sh | |
./configure --enable-all --enable-quic --prefix=$HOME/nghttpx | |
make install | |
name: 'install wolfssl' | |
- if: steps.cache-nghttpx.outputs.cache-hit != 'true' | |
run: | | |
git clone --quiet --depth=1 -b ${{ env.nghttp3-version }} https://github.com/ngtcp2/nghttp3 | |
cd nghttp3 | |
autoreconf -fi | |
./configure --prefix=$HOME/nghttpx PKG_CONFIG_PATH="$HOME/nghttpx/lib/pkgconfig" --enable-lib-only | |
make install | |
name: 'install nghttp3' | |
- if: steps.cache-nghttpx.outputs.cache-hit != 'true' | |
run: | | |
git clone --quiet --depth=1 -b ${{ env.ngtcp2-version }} https://github.com/ngtcp2/ngtcp2 | |
cd ngtcp2 | |
autoreconf -fi | |
./configure --prefix=$HOME/nghttpx PKG_CONFIG_PATH="$HOME/nghttpx/lib/pkgconfig" --enable-lib-only --with-openssl --with-gnutls --with-wolfssl | |
make install | |
name: 'install ngtcp2' | |
- if: steps.cache-nghttpx.outputs.cache-hit != 'true' | |
run: | | |
git clone --quiet --depth=1 -b ${{ env.nghttp2-version }} https://github.com/nghttp2/nghttp2 | |
cd nghttp2 | |
autoreconf -fi | |
./configure --prefix=$HOME/nghttpx PKG_CONFIG_PATH="$HOME/nghttpx/lib/pkgconfig" --enable-http3 | |
make install | |
name: 'install nghttp2' | |
- name: cache mod_h2 | |
uses: actions/cache@v3 | |
id: cache-mod_h2 | |
env: | |
cache-name: cache-mod_h2 | |
with: | |
path: /home/runner/mod_h2 | |
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ env.mod_h2-version }} | |
- if: steps.cache-mod_h2.outputs.cache-hit != 'true' | |
run: | | |
cd $HOME | |
git clone --quiet --depth=1 -b ${{ env.mod_h2-version }} https://github.com/icing/mod_h2 | |
cd mod_h2 | |
autoreconf -fi | |
./configure | |
make | |
name: 'build mod_h2' | |
- run: | | |
cd $HOME/mod_h2 | |
sudo make install | |
name: 'install mod_h2' | |
- uses: actions/checkout@v3 | |
- run: | | |
sudo python3 -m pip install -r tests/requirements.txt -r tests/http/requirements.txt | |
name: 'install python test prereqs' | |
- run: autoreconf -fi | |
name: 'autoreconf' | |
- run: ./configure ${{ matrix.build.configure }} | |
name: 'configure' | |
- run: make V=1 | |
name: 'make' | |
- run: make V=1 examples | |
name: 'make examples' | |
- run: make V=1 -C tests | |
name: 'make tests' | |
- run: make V=1 test-ci | |
name: 'run tests' | |
env: | |
TFLAGS: "${{ matrix.build.tflags }}" | |
- run: pytest -v | |
name: 'run pytest' | |
env: | |
TFLAGS: "${{ matrix.build.tflags }}" |