cargo-deny.yml (runs-on: ubuntu-latest) and windows-build.yml (runs-on: windows-latest) target runner labels no registered runner advertises, so every push queued two runs Gitea auto-cancelled ~24h later — the Actions page has shown 2 cancelled runs per push since the runner went live. - cargo-deny.yml: deleted; redundant with ci.yml's deny step, which now runs `cargo deny --locked check` to preserve the locked-tree stance. - windows-build.yml: kept but workflow_dispatch-only until a Windows runner exists; restore instructions in the header comment. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
90 lines
3.7 KiB
YAML
90 lines
3.7 KiB
YAML
name: windows-build
|
|
|
|
# Milestone M1 of the Windows port (see docs/handoff windows-migration-plan):
|
|
# prove the tree compiles for `x86_64-pc-windows-msvc` and the unit tests pass.
|
|
# The audio backend is the Phase 0 `CpalBackend` stub for now — this job guards
|
|
# the *compile* boundary (cfg gating, platform deps, the PlatformAudioBackend
|
|
# alias) so a Unix-only assumption can't sneak back in and break Windows.
|
|
#
|
|
# RUNNER REQUIREMENT: this needs a Windows act_runner registered with the
|
|
# `windows-latest` label (a Linux-container approach does NOT apply here —
|
|
# Windows jobs run on the host, not a Linux container). If your runner
|
|
# advertises a different label, change `runs-on` below.
|
|
#
|
|
# MANUAL-ONLY until that runner exists: with push/PR triggers enabled, every
|
|
# push queued a run no runner could claim and Gitea auto-cancelled it ~24h
|
|
# later, littering the Actions page with cancelled runs. Restore the push/PR
|
|
# triggers when a Windows runner is registered:
|
|
#
|
|
# on:
|
|
# push:
|
|
# branches: [main, "windows-port-**"]
|
|
# pull_request:
|
|
# workflow_dispatch:
|
|
#
|
|
# BUILD-HOST REQUIREMENTS (validated by the opus spike, see
|
|
# peerspeak-windows-opus-spike.md):
|
|
# - MSVC C toolchain (Visual Studio Build Tools) — to compile vendored libopus.
|
|
# - CMake on PATH — `audiopus_sys` builds libopus from source via cmake.
|
|
# - CMAKE_POLICY_VERSION_MINIMUM=3.5 (set below) — the vendored libopus declares
|
|
# an ancient `cmake_minimum_required` that CMake >= 4.0 refuses without it.
|
|
# GitHub-hosted `windows-latest` images ship MSVC + CMake; a self-hosted runner
|
|
# must provide both.
|
|
|
|
on:
|
|
# Manual runs from the Gitea Actions UI only — see the header comment.
|
|
workflow_dispatch:
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
env:
|
|
CARGO_TERM_COLOR: always
|
|
# The vendored libopus (audiopus_sys -> cmake) uses cmake_minimum_required < 3.5,
|
|
# which CMake 4.x rejects unless this is set. See the opus spike report.
|
|
CMAKE_POLICY_VERSION_MINIMUM: "3.5"
|
|
|
|
jobs:
|
|
windows-build:
|
|
runs-on: windows-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Install Rust (MSVC, pinned to repo toolchain if present)
|
|
uses: dtolnay/rust-toolchain@stable
|
|
with:
|
|
targets: x86_64-pc-windows-msvc
|
|
components: clippy
|
|
|
|
- name: Show toolchain + build prerequisites
|
|
shell: bash
|
|
run: |
|
|
set -euo pipefail
|
|
rustc --version
|
|
cargo --version
|
|
# libopus is built from source via cmake; fail early with a clear
|
|
# message if the runner lacks it rather than deep in the opus build.
|
|
if ! command -v cmake >/dev/null 2>&1; then
|
|
echo "::error::cmake not found on PATH. The opus crate builds libopus from source via cmake; install CMake on this runner."
|
|
exit 1
|
|
fi
|
|
cmake --version
|
|
|
|
# Build on a *locked* tree so the pinned, vetted Cargo.lock versions are what
|
|
# get compiled — same supply-chain stance as the cargo-deny job.
|
|
- name: Build (all targets, msvc)
|
|
run: cargo build --all-targets --locked --target x86_64-pc-windows-msvc
|
|
|
|
# Unit (lib) tests only: the `transport_loopback` integration tests stand up
|
|
# real iroh/QUIC endpoints and need working loopback networking, which isn't
|
|
# guaranteed on a CI runner. Add `--tests` here once a networked Windows
|
|
# runner is confirmed.
|
|
- name: Unit tests (lib, msvc)
|
|
run: cargo test --lib --locked --target x86_64-pc-windows-msvc
|
|
|
|
# Informational for now (not `-D warnings`): the Windows tree may surface
|
|
# platform-specific lints we haven't triaged. Tighten to deny-warnings once
|
|
# it's clean.
|
|
- name: Clippy (msvc)
|
|
run: cargo clippy --all-targets --locked --target x86_64-pc-windows-msvc
|