mirror of
https://github.com/tailscale/tailscale.git
synced 2026-11-05 11:38:20 +09:00
Add Docker integration tests for TCP and Unix forwarding, pty size, resize and modes, session env, envknobs, x11 rejection, session teardown, SessionDuration, policy changes and RuleExpires on active sessions, Shutdown, host keys and utmp, and run every integrationtest test in the Dockerfile. Extend the vmtest SSH tests to use real OpenSSH clients across the tailnet for pty, sftp/scp, agent and port forwarding, AcceptEnv, ControlMaster, large transfers, banners, user mapping, revocation, check mode (via a new testcontrol handler), recording, and the tailscale ssh CLI. Fix make sshintegrationtest, which only ever tested one image and always exited 0, and trigger the workflow on go.mod changes and a schedule. Updates #13038 Updates tailscale/corp#50380 Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com> Change-Id: Ie4fffad7e9298b6b77c3ec3a6ae81fd784d182ce
52 lines
1.9 KiB
YAML
52 lines
1.9 KiB
YAML
# Run the ssh integration tests in various Docker containers.
|
|
# These tests can also be run locally via `make sshintegrationtest`.
|
|
name: "ssh-integrationtest"
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
|
cancel-in-progress: true
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
pull_request:
|
|
paths:
|
|
- "ssh/**"
|
|
# gliderssh and x/crypto/ssh bumps.
|
|
- "go.mod"
|
|
- "go.sum"
|
|
- "Makefile"
|
|
- ".github/workflows/ssh-integrationtest.yml"
|
|
schedule:
|
|
# Changes outside ssh/** (ipn/ipnlocal, util/osuser, envknob,
|
|
# cmd/tailscaled) can break Tailscale SSH without triggering the
|
|
# pull_request paths above, so also run on main daily around
|
|
# midnight UK time (cron is UTC; 00:13 GMT, 01:13 BST), so results
|
|
# are ready the next morning. Off the hour to avoid GitHub's :00
|
|
# cron backlog.
|
|
- cron: "13 0 * * *"
|
|
jobs:
|
|
ssh-integrationtest:
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- base: "ubuntu:focal"
|
|
tag: "ssh-ubuntu-focal"
|
|
- base: "ubuntu:jammy"
|
|
tag: "ssh-ubuntu-jammy"
|
|
- base: "ubuntu:noble"
|
|
tag: "ssh-ubuntu-noble"
|
|
- base: "alpine:latest"
|
|
tag: "ssh-alpine-latest"
|
|
steps:
|
|
- name: Check out code
|
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
- name: Build test binaries
|
|
run: |
|
|
GOOS=linux GOARCH=amd64 CGO_ENABLED=0 ./tool/go test -tags integrationtest -c ./ssh/tailssh -o ssh/tailssh/testcontainers/tailssh.test
|
|
GOOS=linux GOARCH=amd64 CGO_ENABLED=0 ./tool/go build -o ssh/tailssh/testcontainers/tailscaled ./cmd/tailscaled
|
|
- name: Run SSH integration tests (${{ matrix.base }})
|
|
run: |
|
|
docker build --build-arg="BASE=${{ matrix.base }}" -t "${{ matrix.tag }}" ssh/tailssh/testcontainers
|