CI: install sshd from a fast mirror, or not at all
CI / checks (push) Skipped
CI / checks (pull_request) Successful in 2m10s
CI / e2e (pull_request) Successful in 9m32s

archive.ubuntu.com has been crawling (a few KB/s), taking the sshd install
in every job from 8 seconds to 3.5-9.5 minutes (another agent measured it;
the runner and inference-4090 were healthy). scripts/ci-sshd.sh skips the
install when the image has sshd, and otherwise points apt at
mirrors.edge.kernel.org first (both source layouts, 22.04 and 24.04).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PPQ14L3LikyefCMFBqEbKE
This commit is contained in:
dongarandClaude Opus 5.5 committed 2026-10-07 22:29:41 +00:00
1 parent e35aea5045
commit ff5a7a644f
3 files changed
+29 -17

No files matched your search

+8 -12
View File
@@ -39,12 +39,10 @@ jobs:
- name: Install sshd - name: Install sshd
# The tests reach "the build VM" over real SSH, through a throwaway # The tests reach "the build VM" over real SSH, through a throwaway
# sshd the test fixture starts (nisse_dev/testing.py). # sshd the test fixture starts (nisse_dev/testing.py). Skipped when the image has it; otherwise from
run: | # a kernel.org mirror: archive.ubuntu.com has been slow enough to add
SUDO=$(command -v sudo || true) # minutes to every job.
$SUDO apt-get update -qq run: scripts/ci-sshd.sh
$SUDO apt-get install -y -qq openssh-server openssh-client > /dev/null
$SUDO mkdir -p /run/sshd
- name: Lint - name: Lint
run: uv run ruff check . run: uv run ruff check .
@@ -100,12 +98,10 @@ jobs:
run: uv sync --all-packages run: uv sync --all-packages
- name: Install sshd - name: Install sshd
# The build VM is a throwaway sshd here (scripts/e2e.sh --local). # The build VM is a throwaway sshd here (scripts/e2e.sh --local). Skipped when the image has it; otherwise from
run: | # a kernel.org mirror: archive.ubuntu.com has been slow enough to add
SUDO=$(command -v sudo || true) # minutes to every job.
$SUDO apt-get update -qq run: scripts/ci-sshd.sh
$SUDO apt-get install -y -qq openssh-server openssh-client > /dev/null
$SUDO mkdir -p /run/sshd
- name: End-to-end tests - name: End-to-end tests
env: env:
+1 -5
View File
@@ -48,11 +48,7 @@ jobs:
run: uv sync --all-packages run: uv sync --all-packages
- name: Install sshd - name: Install sshd
run: | run: scripts/ci-sshd.sh
SUDO=$(command -v sudo || true)
$SUDO apt-get update -qq
$SUDO apt-get install -y -qq openssh-server openssh-client > /dev/null
$SUDO mkdir -p /run/sshd
- name: Lint - name: Lint
run: uv run ruff check . && uv run ruff format --check . run: uv run ruff check . && uv run ruff format --check .
+20
View File
@@ -0,0 +1,20 @@
#!/usr/bin/env bash
# The throwaway sshd the tests need (nisse_dev/testing.py), in a CI job.
# Skipped when the job's image already has it. Otherwise apt fetches from a
# kernel.org mirror rather than archive.ubuntu.com, which has been slow
# enough (a few KB/s) to add minutes to every job.
set -euo pipefail
SUDO=$(command -v sudo || true)
if command -v /usr/sbin/sshd > /dev/null && command -v ssh > /dev/null; then
echo "sshd already installed"
else
MIRROR=${APT_MIRROR:-http://mirrors.edge.kernel.org/ubuntu}
# Both layouts: deb822 (ubuntu.sources, 24.04+) and sources.list (older).
for f in /etc/apt/sources.list.d/ubuntu.sources /etc/apt/sources.list; do
[ -f "$f" ] && $SUDO sed -i -E \
"s#https?://(archive|security)\.ubuntu\.com/ubuntu/?#$MIRROR/#g" "$f"
done
$SUDO apt-get update -qq
$SUDO apt-get install -y -qq openssh-server openssh-client > /dev/null
fi
$SUDO mkdir -p /run/sshd