Kristoffer Dalby fa3105efd6 .github: capture diagnostics and run both macOS exit-status test steps
The macos-ssh-integrationtest job was failing in under a second with
no usable log output, and the job's two test steps were sequenced so
a failure in the first skipped the second. Make both deficiencies
go away.

Preflight diagnostics step dumps uname, sw_vers, id, id runner,
ssh -V, dscl . -read /Users/runner UserShell, /etc/ssh listing,
sudo capability, and PATH. This is the environment context every
future failure on this runner will need to debug, captured before
the test binary even runs.

PATH propagation through sudo is now an explicit, expanded list
(/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:$PATH) instead of
inheriting the GitHub Actions PATH, which doesn't always include
/usr/sbin where macOS keeps utilities the incubator may invoke.

Both test steps now use continue-on-error: true with id-tagged
outcomes, and a final aggregator step fails the job if either was
not 'success'. Previously a failure in the OpenSSH step skipped the
Go SSH step entirely; we lost half the signal on every failed run.

Test output is tee'd to /tmp/openssh-exitcodes.log and
/tmp/gossh-exitcodes.log. The incubator log /tmp/tailscalessh.log
is sudo-copied (it's owned by root after sudo) and made readable.
All three are uploaded as a macos-ssh-integrationtest-logs
artifact retained 14 days. actions/upload-artifact pinned to v7.0.0
to match the rest of the repo.

The per-step timeout is bumped from 3m to 5m to give the in-test
retry logic (up to 3 attempts) headroom without hitting the
workflow timeout before the final attempt completes.

Updates #18256

Signed-off-by: Kristoffer Dalby <kristoffer@tailscale.com>
2026-05-04 15:06:43 +00:00
..
2025-04-08 15:55:14 -07:00