Some checks failed
joule-moq-remote host agent / joule-moq-remote · does this change touch it (push) Successful in 3m51s
joule-moq-room room service / joule-moq-room · does this change touch it (push) Successful in 1m40s
repository checks / lockfiles, advisories, tests in CI, workflow hygiene, spec and section references, public text (push) Has been cancelled
joule-moq-remote host agent / joule-moq-remote, every target (linux-arm64) (push) Has been cancelled
joule-moq-remote host agent / joule-moq-remote, every target (macos) (push) Has been cancelled
joule-moq-room room service / joule-moq-room, every target (push) Has been cancelled
Work now lands as direct commits to main. joule-moq-room and joule-moq-remote ran only on pull requests and have no schedule, so a direct commit touching the room service, the host agent, the relay, joule-moq, jwp, wai-rs or wai-ops built and tested none of them. Each now also runs on a push to main, on its pull-request paths. The gate job has no pull request to read on a push and answers true, so the push's own path filter decides. Both test the whole tree, so the per-ref group's cancel-in-progress stays as the other main-push workflows have it: a newer push's tree contains the older push's commits. Changelog: none Co-Authored-By: Claude Opus 5.5 <[email protected]>
106 lines
4.7 KiB
YAML
106 lines
4.7 KiB
YAML
name: joule-moq-remote host agent
|
|
|
|
# The remote desktop host agent (joule-code/joule-code-rs/crates/joule-moq-remote), a workspace
|
|
# of its own with its own lock file (WAI extensions/remote-desktop.md): its room files, the
|
|
# pure-function H.264 encoder (every macroblock I_PCM), the pattern source and the recorder, and
|
|
# tests/loopback.rs, a session over a relay on loopback: three viewers verify every frame against
|
|
# its receipt, a click under the floor applied, a viewer with no control power and a controller
|
|
# off the floor refused, the floor handed over, a paused screen refused, latency records signed,
|
|
# and the session's chains verified whole by wai-rs; and the gate's order, a participant's records
|
|
# taken in its chain's order as a room service's clock takes them; alice's typing sealed to the
|
|
# host's sealing key, injected as typed and absent from what a viewer receives, and the session
|
|
# verified at the opened level too; and tests/tls.rs, the clients of the room service over
|
|
# https:// and of the relay over wss:// through a TLS front, every certificate verified. The same
|
|
# host in a room the room service keeps is joule-moq-room's tests/remote_room.rs. On Linux arm64 the Linux adapters (X11
|
|
# capture, the kernel's input device) compile and the session runs with the pure-function
|
|
# encoder; on macOS it runs again with the platform's hardware encoder, whose units are checked
|
|
# for the Annex B the capability carries.
|
|
#
|
|
# It builds on wai-rs's room and remote desktop records, on the relay and on joule-moq, so a
|
|
# change to any of them runs it. Push filters match the push's delta, so every path the job
|
|
# reads is listed.
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
on:
|
|
# A push to main runs it too: work lands as direct commits to main, and this workflow has
|
|
# no schedule, so without this a direct commit would build and test none of it.
|
|
push:
|
|
branches: [main]
|
|
paths:
|
|
- 'joule-code/joule-code-rs/crates/joule-moq-remote/**'
|
|
- 'joule-code/joule-code-rs/crates/joule-moq/**'
|
|
- 'joule-code/joule-code-rs/crates/joule-moq-relay/**'
|
|
- 'joule-code/joule-code-rs/crates/jwp/**'
|
|
- 'joule-code/joule-code-rs/vendor/**'
|
|
- 'wai/wai-rs/**'
|
|
- 'wai/wai-ops/**'
|
|
- '.github/workflows/joule-moq-remote.yml'
|
|
pull_request:
|
|
paths:
|
|
- 'joule-code/joule-code-rs/crates/joule-moq-remote/**'
|
|
- 'joule-code/joule-code-rs/crates/joule-moq/**'
|
|
- 'joule-code/joule-code-rs/crates/joule-moq-relay/**'
|
|
- 'joule-code/joule-code-rs/crates/jwp/**'
|
|
- 'joule-code/joule-code-rs/vendor/**'
|
|
- 'wai/wai-rs/**'
|
|
- 'wai/wai-ops/**'
|
|
- '.github/workflows/joule-moq-remote.yml'
|
|
|
|
jobs:
|
|
# Forgejo matches `paths:` against the push delta, so a rebase fires this workflow
|
|
# whatever the pull request changes. This job reads the pull request's own diff against
|
|
# the paths above (scripts/pr-touches-paths.py, which fails open).
|
|
relevant:
|
|
name: joule-moq-remote · does this change touch it
|
|
runs-on: gate
|
|
outputs:
|
|
run: ${{ steps.gate.outputs.run }}
|
|
steps:
|
|
- uses: actions/checkout@v5
|
|
with:
|
|
fetch-depth: 0
|
|
- id: gate
|
|
run: |
|
|
set -euo pipefail
|
|
r=$(python3 scripts/pr-touches-paths.py .github/workflows/joule-moq-remote.yml \
|
|
"${{ github.event.pull_request.base.sha }}" \
|
|
"${{ github.event.pull_request.head.sha }}")
|
|
echo "this change touches the host agent: $r"
|
|
echo "run=$r" >> "$GITHUB_OUTPUT"
|
|
|
|
test:
|
|
name: joule-moq-remote, every target (${{ matrix.os }})
|
|
needs: relevant
|
|
if: needs.relevant.outputs.run == 'true'
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
os: [linux-arm64, macos]
|
|
runs-on: ${{ matrix.os }}
|
|
timeout-minutes: 45
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Install Rust 1.99.1
|
|
shell: bash
|
|
run: |
|
|
export PATH="$HOME/.cargo/bin:$PATH"
|
|
command -v rustup >/dev/null 2>&1 || \
|
|
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1
|
|
rustup toolchain install 1.99.1 --profile minimal --component clippy
|
|
rustup default 1.99.1
|
|
echo "$HOME/.cargo/bin" >> "$GITHUB_PATH"
|
|
|
|
# One test at a time: the sessions share the host with other jobs, and each takes a lock.
|
|
- name: joule-moq-remote, every target, and clippy
|
|
working-directory: joule-code/joule-code-rs/crates/joule-moq-remote
|
|
shell: bash
|
|
run: |
|
|
set -euo pipefail
|
|
export PATH="$HOME/.cargo/bin:$PATH"
|
|
cargo test --locked --all-targets -- --test-threads=1
|
|
cargo clippy --locked --all-targets --no-deps -- -D warnings
|