Skip to content

feat(preflight): add raw-socket capability probe #4098

feat(preflight): add raw-socket capability probe

feat(preflight): add raw-socket capability probe #4098

Workflow file for this run

name: CI
on:
push:
branches:
- main
pull_request:
workflow_dispatch:
permissions:
contents: read
env:
GOFLAGS: -mod=readonly -trimpath
GOTOOLCHAIN: local
jobs:
go:
name: Go
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- name: Check out
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Set up Go
uses: actions/setup-go@924ae3a1cded613372ab5595356fb5720e22ba16 # v6.5.0
with:
go-version-file: go.mod
cache: false
- name: Check formatting
shell: bash
run: |
mapfile -t files < <(git ls-files '*.go')
if [ "${#files[@]}" -gt 0 ]; then
diff="$(gofmt -l "${files[@]}")"
if [ -n "$diff" ]; then
echo "$diff"
exit 1
fi
fi
- name: Vet
run: go vet ./...
- name: Deadcode
run: |
output_file=$(mktemp)
go run golang.org/x/tools/cmd/deadcode@v0.45.0 -test ./... > "$output_file"
if [ -s "$output_file" ]; then
cat "$output_file"
exit 1
fi
- name: Test
run: go test -race ./...
- name: Test all Go modules
run: scripts/test-go-modules.sh
- name: Coverage
run: scripts/check-go-coverage.sh 90.0
- name: Build
run: go build -trimpath -o /tmp/crabbox ./cmd/crabbox
windows-pond-mesh-cancellation:
name: Windows Pond Mesh Cancellation
runs-on: windows-latest
timeout-minutes: 20
steps:
- name: Check out
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Set up Go
uses: actions/setup-go@924ae3a1cded613372ab5595356fb5720e22ba16 # v6.5.0
with:
go-version-file: go.mod
cache: false
- name: Test user directory isolation
run: go test ./internal/testutil ./internal/providers/aws ./internal/providers/daytona ./internal/providers/digitalocean ./internal/providers/hyperv ./internal/providers/namespace ./internal/providers/scaleway ./internal/providers/vast ./internal/providers/vultr -count=1
- name: Test pond mesh cancellation
run: go test ./internal/cli/ -run PondMeshCancel -count=1 -v
- name: Test Windows SSH and rsync transport selection
run: go test ./internal/cli/ -run '^(TestWindowsWSLNativeToolProbeUsesDirectCommandOutput|TestWindowsWSLNativeToolPathsRejectsWindowsShims|TestDirectSSHExecutableSelection|TestSSHCommandContextUsesNativeWindowsOpenSSHEvenWhenPATHSelectsMSYS2|TestResolveWindowsNativeRsyncPairUsesExactSibling|TestResolveWindowsNativeRsyncPairFailsClosedWithoutSibling|TestBindWindowsNativeRsyncSSHPreservesOwnedArguments|TestWindowsNativeRsyncCommandUsesSiblingPairAndEnvironment|TestResolvedSSHCopyCommandUsesNativeWindowsSiblingPair|TestResolvedSSHCopyCommandFailsClosedWithoutNativeWindowsSibling)$' -count=1 -v
- name: Test native Windows Python preflight probes
run: go test ./internal/cli/ -run '^(TestPythonPreflightToolValidationAndTargetFiltering|TestPythonPreflightWindowsProbeUsesLiteralExecutableAndMissingContract)$' -count=1 -v
- name: Test Git workspace coherence
run: go test ./internal/cli/ -run '^(TestWindowsGitRootIdentityAcceptsShortAliasAndRejectsDistinctRoot|TestWindowsGitCoherenceRollbackRestoresIndexAfterSymbolicHeadFailure|TestWindowsGitSeedReplacesUnusableExactRootsAfterVerifiedClone|TestWindowsGitCoherenceSupportsDetachedSparseSplitAndLinkedIndexes|TestWorkspaceOwnerWindowsProtocolBehavior)$' -count=1 -v
connector-lifecycles:
name: Connector Lifecycles
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- name: Check out
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Set up Go
uses: actions/setup-go@924ae3a1cded613372ab5595356fb5720e22ba16 # v6.5.0
with:
go-version-file: go.mod
cache: false
- name: Test source-derived hermetic lifecycle packages
run: scripts/test-provider-lifecycles.sh
apple-vm:
name: Apple VM
runs-on: macos-15
timeout-minutes: 15
steps:
- name: Check out
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Verify Apple Silicon runner
run: test "$(uname -m)" = arm64
- name: Set up Node
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: 24
- name: Test macOS script compatibility
run: PATH="/usr/bin:/bin:$PATH" node --test scripts/mint-aws-devtools-image.test.js
- name: Set up Go
uses: actions/setup-go@924ae3a1cded613372ab5595356fb5720e22ba16 # v6.5.0
with:
go-version-file: go.mod
cache: false
- name: Vet native helper
run: go vet ./internal/applevmhelper ./cmd/crabbox-apple-vm-helper
- name: Test native helper and provider
run: go test -race ./internal/applevmhelper ./internal/providers/applevm
- name: Build Swift VM daemon
run: sh scripts/build-vmd.sh
- name: Build native helper with embedded daemon
run: go build -trimpath -tags vmdembed -o /tmp/crabbox-apple-vm-helper ./cmd/crabbox-apple-vm-helper
- name: Verify embedded daemon payload
run: /tmp/crabbox-apple-vm-helper vmd-info | grep -q '"embedded":true'
worker:
name: Worker
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- name: Check out
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Set up Node
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: 24
cache: npm
cache-dependency-path: worker/package-lock.json
- name: Install
run: npm ci
working-directory: worker
- name: Format
run: npm run format:check
working-directory: worker
- name: Lint
run: npm run lint
working-directory: worker
- name: Typecheck
run: npm run check
working-directory: worker
- name: Typecheck Node runtime
run: npm run check:node
working-directory: worker
- name: Test
run: npm test
working-directory: worker
- name: Build
run: npm run build
working-directory: worker
- name: Build Cloudflare Dynamic Workers
run: npm run build:cloudflare-dynamic-workers
working-directory: worker
- name: Build Node runtime
run: npm run build:node
working-directory: worker
- name: Check runtime base image pins
run: node scripts/check-docker-base-images.mjs
- name: Build Node runtime image
run: docker build -f worker/Dockerfile.node worker
scripts:
name: Scripts
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- name: Check out
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
fetch-depth: 0
- name: Set up Node
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: 24
- name: Set up Go
uses: actions/setup-go@924ae3a1cded613372ab5595356fb5720e22ba16 # v6.5.0
with:
go-version-file: go.mod
cache: false
- name: Install script dependencies
run: sudo apt-get update && sudo apt-get install -y ripgrep
- name: Test
run: node --test scripts/*.test.js
docs:
name: Docs
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- name: Check out
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Set up Node
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: 24
- name: Set up Go
uses: actions/setup-go@924ae3a1cded613372ab5595356fb5720e22ba16 # v6.5.0
with:
go-version-file: go.mod
cache: false
- name: Check docs
run: scripts/check-docs.sh