Skip to content

Fix draft 18 request stream polling #19

Fix draft 18 request stream polling

Fix draft 18 request stream polling #19

Workflow file for this run

name: Release Builds
on:
push:
tags:
- "v*"
workflow_dispatch:
inputs:
release_tag:
description: "Optional release tag to publish, for example v0.1.0"
required: false
type: string
permissions:
contents: write
jobs:
build-release:
name: Build ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
- ubuntu-latest
- macos-latest
- windows-latest
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Checkout picoquic
uses: actions/checkout@v5
with:
repository: private-octopus/picoquic
ref: master
path: third_party/picoquic
- name: Checkout picotls
uses: actions/checkout@v5
with:
repository: private-octopus/picotls
ref: master
path: third_party/picotls
submodules: recursive
- name: Set up Windows dependencies
if: runner.os == 'Windows'
shell: pwsh
run: |
# picotls requires pkg-config at configure time (even on Windows where
# brotli is absent); install the lightweight pkgconfiglite shim.
choco install pkgconfiglite --no-progress -y
$candidates = @(
"C:\Program Files\OpenSSL",
"C:\Program Files\OpenSSL-Win64",
"C:\OpenSSL-Win64"
)
$opensslFound = $false
foreach ($candidate in $candidates) {
if (Test-Path "$candidate\include\openssl\ssl.h") {
"OPENSSL_ROOT_DIR=$candidate" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
Write-Host "OpenSSL found at $candidate"
$opensslFound = $true
break
}
}
if (-not $opensslFound) {
choco install openssl --no-progress -y
foreach ($candidate in $candidates) {
if (Test-Path "$candidate\include\openssl\ssl.h") {
"OPENSSL_ROOT_DIR=$candidate" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
Write-Host "OpenSSL installed at $candidate"
break
}
}
}
- name: Configure
shell: bash
run: |
args=(
cmake -S . -B build
-DCMAKE_BUILD_TYPE=Release
-DCMAKE_POLICY_VERSION_MINIMUM=3.5
"-DOPENMOQ_PICOQUIC_SOURCE_DIR=${{ github.workspace }}/third_party/picoquic"
"-DOPENMOQ_PICOTLS_SOURCE_DIR=${{ github.workspace }}/third_party/picotls"
-DOPENMOQ_RUN_PICOQUIC_SMOKE_TESTS=OFF
)
if [ -n "${OPENSSL_ROOT_DIR:-}" ]; then
args+=("-DOPENSSL_ROOT_DIR=${OPENSSL_ROOT_DIR}")
fi
"${args[@]}"
- name: Build
run: cmake --build build --config Release --parallel
- name: Package
shell: bash
run: |
set -euo pipefail
version="${{ github.event.inputs.release_tag }}"
if [[ -z "${version}" ]]; then
version="${GITHUB_REF_NAME}"
fi
if [[ -z "${version}" || "${GITHUB_REF_TYPE}" != "tag" && -z "${{ github.event.inputs.release_tag }}" ]]; then
version="manual-${GITHUB_RUN_NUMBER}"
fi
package_root="openmoq-publisher-${version}-${RUNNER_OS}"
mkdir -p "${package_root}"
if [[ "${RUNNER_OS}" == "Windows" ]]; then
# MSVC multi-config generator places the binary under build/Release/
cp build/Release/openmoq-publisher.exe "${package_root}/"
cp README.md LICENSE "${package_root}/"
cp -R docs "${package_root}/docs"
archive="${package_root}.zip"
7z a "${archive}" "${package_root}"
else
cp build/openmoq-publisher "${package_root}/"
cp README.md LICENSE "${package_root}/"
cp -R docs "${package_root}/docs"
archive="${package_root}.tar.gz"
tar -czf "${archive}" "${package_root}"
fi
if [[ "${version}" == v* ]]; then
echo "release_enabled=true" >> "${GITHUB_ENV}"
else
echo "release_enabled=false" >> "${GITHUB_ENV}"
fi
echo "release_tag=${version}" >> "${GITHUB_ENV}"
echo "artifact_name=${package_root}" >> "${GITHUB_ENV}"
echo "archive=${archive}" >> "${GITHUB_ENV}"
- name: Upload workflow artifact
uses: actions/upload-artifact@v6
with:
name: ${{ env.artifact_name }}
path: ${{ env.archive }}
if-no-files-found: error
- name: Attach assets to GitHub release
if: env.release_enabled == 'true'
env:
GH_TOKEN: ${{ github.token }}
shell: bash
run: |
set -euo pipefail
tag="${{ env.release_tag }}"
if gh release view "${tag}" >/dev/null 2>&1; then
gh release upload "${tag}" "${{ env.archive }}" --clobber
else
gh release create "${tag}" "${{ env.archive }}" \
--title "${tag}" \
--target "${GITHUB_SHA}" \
--generate-notes
fi