name: Spec Compliance on: schedule: - cron: "0 0 * * 3" permissions: contents: read jobs: h2spec: name: h2spec runs-on: ${{ matrix.os }} strategy: matrix: include: - TARGET: linux-glibc CC: gcc os: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Install h2spec id: install-h2spec run: | H2SPEC_VERSION=`curl --silent "https://api.github.com/repos/summerwind/h2spec/releases/latest" | jq -r -j '.tag_name'` curl -fsSL https://github.com/summerwind/h2spec/releases/download/${H2SPEC_VERSION}/h2spec_linux_amd64.tar.gz -o h2spec.tar.gz tar xvf h2spec.tar.gz sudo install -m755 h2spec /usr/local/bin/h2spec echo "version=${H2SPEC_VERSION}" >> $GITHUB_OUTPUT - name: Compile HAProxy with ${{ matrix.CC }} run: | make -j$(nproc) all \ ERR=1 \ TARGET=${{ matrix.TARGET }} \ CC=${{ matrix.CC }} \ DEBUG="-DDEBUG_STRICT -DDEBUG_MEMORY_POOLS -DDEBUG_POOL_INTEGRITY" \ USE_OPENSSL=1 sudo make install - name: Show HAProxy version id: show-version run: | echo "::group::Show dynamic libraries." if command -v ldd > /dev/null; then # Linux ldd $(which haproxy) else # macOS otool -L $(which haproxy) fi echo "::endgroup::" haproxy -vv echo "version=$(haproxy -v |awk 'NR==1{print $3}')" >> $GITHUB_OUTPUT - name: Launch HAProxy ${{ steps.show-version.outputs.version }} run: haproxy -f .github/h2spec.config -D - name: Run h2spec ${{ steps.install-h2spec.outputs.version }} run: h2spec -Svtk -h 127.0.0.1 -p 8443