Skip to content

Connect v3 CI, fuzz campaigns and guarded release publication #13

Connect v3 CI, fuzz campaigns and guarded release publication

Connect v3 CI, fuzz campaigns and guarded release publication #13

name: v3 installed package validation
on:
push:
branches: [v3, master]
pull_request:
branches: [v3, master]
workflow_dispatch:
permissions:
contents: read
jobs:
linux:
runs-on: ubuntu-24.04
timeout-minutes: 90
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
- name: Prerequisites
run: sudo apt-get update && sudo apt-get install -y clang autoconf automake libtool pkg-config python3 perl libcurl4-openssl-dev binutils python3-venv
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020
with:
node-version: '24.15.0'
- name: Selected client environment and executable Git provenance
run: |
mkdir -p "$RUNNER_TEMP/package-evidence"
exec > >(tee "$RUNNER_TEMP/package-evidence/clients.log") 2>&1
python3 -c 'import subprocess; subprocess.run(["git", "--version"], check=True)'
python3 -m venv "$RUNNER_TEMP/package-evidence/clients"
"$RUNNER_TEMP/package-evidence/clients/bin/python" -m pip install -r test/integ/http2-client-requirements.txt
- name: Build selected prerequisites
run: python3 scripts/prepare-v3-package-ci.py --output "$RUNNER_TEMP/package-evidence/prerequisites"
- name: Bootstrap
run: ./bootstrap
- name: Installed matrix
run: |
prefix=()
if ! python3 -c 'import socket; s=socket.socket(); s.bind(("127.0.0.1",443)); s.close()'; then
prefix=(sudo env "PATH=$PATH" GIT_CONFIG_COUNT=1 GIT_CONFIG_KEY_0=safe.directory "GIT_CONFIG_VALUE_0=$PWD")
fi
"${prefix[@]}" python3 scripts/check-v3-installed-consumer.py --output "$RUNNER_TEMP/package-evidence/matrix" --provider-prefix "$RUNNER_TEMP/package-evidence/prerequisites/provider" --pkg-config-dir /usr/lib/x86_64-linux-gnu/pkgconfig --pkg-config-dir /usr/share/pkgconfig --client-python "$RUNNER_TEMP/package-evidence/clients/bin/python" --node node --compiler clang++ --cc clang --jobs 2
- if: always()
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02
with:
name: v3-package-linux-${{ github.sha }}
path: ${{ runner.temp }}/package-evidence
retention-days: 14
if-no-files-found: error
macos:
runs-on: macos-14
timeout-minutes: 90
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
- name: Prerequisites
run: brew install autoconf automake libtool pkg-config python curl
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020
with:
node-version: '24.15.0'
- name: Selected client environment and executable Git provenance
run: |
mkdir -p "$RUNNER_TEMP/package-evidence"
exec > >(tee "$RUNNER_TEMP/package-evidence/clients.log") 2>&1
python3 -c 'import subprocess; subprocess.run(["git", "--version"], check=True)'
python3 -m venv "$RUNNER_TEMP/package-evidence/clients"
"$RUNNER_TEMP/package-evidence/clients/bin/python" -m pip install -r test/integ/http2-client-requirements.txt
- name: Build selected prerequisites
run: python3 scripts/prepare-v3-package-ci.py --output "$RUNNER_TEMP/package-evidence/prerequisites"
- name: Bootstrap
run: ./bootstrap
- name: Installed matrix
run: |
prefix=()
if ! python3 -c 'import socket; s=socket.socket(); s.bind(("127.0.0.1",443)); s.close()'; then
prefix=(sudo env "PATH=$PATH" GIT_CONFIG_COUNT=1 GIT_CONFIG_KEY_0=safe.directory "GIT_CONFIG_VALUE_0=$PWD")
fi
"${prefix[@]}" python3 scripts/check-v3-installed-consumer.py --output "$RUNNER_TEMP/package-evidence/matrix" --provider-prefix "$RUNNER_TEMP/package-evidence/prerequisites/provider" --pkg-config-dir "$(brew --prefix)/share/pkgconfig" --client-python "$RUNNER_TEMP/package-evidence/clients/bin/python" --node node --compiler clang++ --cc clang --jobs 2
- if: always()
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02
with:
name: v3-package-macos-${{ github.sha }}
path: ${{ runner.temp }}/package-evidence
retention-days: 14
if-no-files-found: error
mingw64:
runs-on: windows-2022
timeout-minutes: 90
defaults:
run:
shell: msys2 {0}
steps:
- name: Keep selected Git source bytes unchanged
shell: pwsh
run: git config --global core.autocrlf false
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
- uses: msys2/setup-msys2@e9898307ac31d1a803454791be09ab9973336e1c
with:
msystem: MINGW64
update: true
install: >-
autotools base-devel perl git
mingw-w64-x86_64-clang mingw-w64-x86_64-gcc mingw-w64-x86_64-binutils
mingw-w64-x86_64-python mingw-w64-x86_64-pkgconf mingw-w64-x86_64-libtool mingw-w64-x86_64-curl mingw-w64-x86_64-libsystre
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020
with:
node-version: '24.15.0'
- name: Selected client environment and executable Git provenance
run: |
mkdir -p "$RUNNER_TEMP/package-evidence"
exec > >(tee "$RUNNER_TEMP/package-evidence/clients.log") 2>&1
export PATH="/c/Program Files/Git/cmd:$PATH"
/mingw64/bin/python -c 'import subprocess; subprocess.run(["git", "--version"], check=True)'
/mingw64/bin/python -m venv "$RUNNER_TEMP/package-evidence/clients"
"$(cygpath -m "$RUNNER_TEMP/package-evidence/clients/Scripts/python.exe")" -m pip install -r test/integ/http2-client-requirements.txt
- name: Build selected prerequisites
run: /mingw64/bin/python scripts/prepare-v3-package-ci.py --output "$RUNNER_TEMP/package-evidence/prerequisites"
- name: Bootstrap
run: ./bootstrap
- name: Installed matrix (native Python; IOCP and WSAPoll)
run: >-
/mingw64/bin/python scripts/check-v3-installed-consumer.py --output "$RUNNER_TEMP/package-evidence/matrix"
--provider-prefix "$(cygpath -m "$RUNNER_TEMP/package-evidence/prerequisites/provider")" --toolchain-prefix "$(cygpath -m /mingw64)"
--client-python "$(cygpath -m "$RUNNER_TEMP/package-evidence/clients/Scripts/python.exe")" --node node --compiler clang++ --cc clang --jobs 2
- if: always()
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02
with:
name: v3-package-mingw64-${{ github.sha }}
path: ${{ runner.temp }}/package-evidence
retention-days: 14
if-no-files-found: error
freebsd:
runs-on: ubuntu-24.04
timeout-minutes: 180
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
- name: freebsd_instance
uses: vmactions/freebsd-vm@c9f815bc7aa0d34c9fdd0619b034a32d6ca7b57e
with:
release: '14.3'
mem: 8192
cpu: 2
prepare: pkg install -y bash autoconf automake libtool pkgconf python311 gmake curl binutils perl5 llvm git py311-pip py311-virtualenv node24
run: |
export RUNNER_TEMP=/tmp/v3-package-${{ github.run_id }}-${{ github.run_attempt }}
mkdir -p "$RUNNER_TEMP/package-evidence"
trap 'cp -R "$RUNNER_TEMP/package-evidence" ./package-evidence' EXIT
if [ "$(node --version)" != v24.15.0 ]; then
mkdir -p "$RUNNER_TEMP/node-source"
curl --fail --location https://nodejs.org/dist/v24.15.0/node-v24.15.0.tar.gz -o "$RUNNER_TEMP/node-source/node-v24.15.0.tar.gz"
test "$(sha256 -q "$RUNNER_TEMP/node-source/node-v24.15.0.tar.gz")" = 729de494dd2872e5a3a6c32a1cd156a5413d4aca2772b2d873ee86bb5531bcd9
tar -xzf "$RUNNER_TEMP/node-source/node-v24.15.0.tar.gz" -C "$RUNNER_TEMP/node-source"
(
cd "$RUNNER_TEMP/node-source/node-v24.15.0"
./configure --prefix="$RUNNER_TEMP/node"
gmake -j2 > "$RUNNER_TEMP/node-source/build.log" 2>&1
gmake install >> "$RUNNER_TEMP/node-source/build.log" 2>&1
)
export PATH="$RUNNER_TEMP/node/bin:$PATH"
fi
test "$(node --version)" = v24.15.0
python3.11 -c 'import subprocess; subprocess.run(["git", "--version"], check=True)'
python3.11 -m venv "$RUNNER_TEMP/package-evidence/clients"
"$RUNNER_TEMP/package-evidence/clients/bin/python" -m pip install -r test/integ/http2-client-requirements.txt
python3.11 scripts/prepare-v3-package-ci.py --output "$RUNNER_TEMP/package-evidence/prerequisites" --make gmake
./bootstrap
python3.11 scripts/check-v3-installed-consumer.py --output "$RUNNER_TEMP/package-evidence/matrix" \
--provider-prefix "$RUNNER_TEMP/package-evidence/prerequisites/provider" \
--client-python "$RUNNER_TEMP/package-evidence/clients/bin/python" --node node --pkg-config-dir /usr/local/share/pkgconfig --compiler clang++ --cc clang --make gmake --jobs 2
- if: always()
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02
with:
name: v3-package-freebsd-${{ github.sha }}
path: package-evidence
retention-days: 14
if-no-files-found: error