Skip to content

Commit 3329893

Browse files
authored
Merge pull request #16 from buildkite/codex/add-tsnet-serve-api
feat: add tsnet support to cleanroom serve API
2 parents 42aa0f4 + abc567e commit 3329893

File tree

10 files changed

+623
-46
lines changed

10 files changed

+623
-46
lines changed

README.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,20 @@ cleanroom policy validate
4242
cleanroom serve --listen unix://$XDG_RUNTIME_DIR/cleanroom/cleanroom.sock
4343
```
4444

45+
All CLI commands (including `cleanroom exec`) talk to this API endpoint.
46+
47+
To expose the API over Tailscale using embedded `tsnet`:
48+
49+
```bash
50+
cleanroom serve --listen tsnet://cleanroom:7777
51+
```
52+
53+
Then connect with:
54+
55+
```bash
56+
cleanroom exec --host tsnet://cleanroom:7777 -- "npm test"
57+
```
58+
4559
### 3) Launch -> Run -> Terminate via API
4660

4761
```bash

go.mod

Lines changed: 75 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
module github.com/buildkite/cleanroom
22

3-
go 1.23.0
3+
go 1.23.1
44

55
require (
66
connectrpc.com/connect v1.18.1
@@ -14,25 +14,96 @@ require (
1414
golang.org/x/term v0.31.0
1515
google.golang.org/protobuf v1.36.10
1616
gopkg.in/yaml.v3 v3.0.1
17+
tailscale.com v1.80.3
1718
)
1819

1920
require (
21+
filippo.io/edwards25519 v1.1.0 // indirect
22+
github.com/akutz/memconn v0.1.0 // indirect
23+
github.com/alexbrainman/sspi v0.0.0-20231016080023-1a75b4708caa // indirect
24+
github.com/aws/aws-sdk-go-v2 v1.24.1 // indirect
25+
github.com/aws/aws-sdk-go-v2/config v1.26.5 // indirect
26+
github.com/aws/aws-sdk-go-v2/credentials v1.16.16 // indirect
27+
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.14.11 // indirect
28+
github.com/aws/aws-sdk-go-v2/internal/configsources v1.2.10 // indirect
29+
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.5.10 // indirect
30+
github.com/aws/aws-sdk-go-v2/internal/ini v1.7.2 // indirect
31+
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.10.4 // indirect
32+
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.10.10 // indirect
33+
github.com/aws/aws-sdk-go-v2/service/ssm v1.44.7 // indirect
34+
github.com/aws/aws-sdk-go-v2/service/sso v1.18.7 // indirect
35+
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.21.7 // indirect
36+
github.com/aws/aws-sdk-go-v2/service/sts v1.26.7 // indirect
37+
github.com/aws/smithy-go v1.19.0 // indirect
2038
github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect
39+
github.com/bits-and-blooms/bitset v1.13.0 // indirect
2140
github.com/charmbracelet/colorprofile v0.2.3-0.20250311203215-f60798e515dc // indirect
2241
github.com/charmbracelet/lipgloss v1.1.0 // indirect
2342
github.com/charmbracelet/x/ansi v0.8.0 // indirect
2443
github.com/charmbracelet/x/cellbuf v0.0.13-0.20250311204145-2c3ea96c31dd // indirect
2544
github.com/charmbracelet/x/term v0.2.1 // indirect
45+
github.com/coder/websocket v1.8.12 // indirect
46+
github.com/coreos/go-iptables v0.7.1-0.20240112124308-65c67c9f46e6 // indirect
47+
github.com/dblohm7/wingoes v0.0.0-20240119213807-a09d6be7affa // indirect
48+
github.com/digitalocean/go-smbios v0.0.0-20180907143718-390a4f403a8e // indirect
49+
github.com/fxamacker/cbor/v2 v2.7.0 // indirect
50+
github.com/gaissmai/bart v0.11.1 // indirect
51+
github.com/go-json-experiment/json v0.0.0-20250103232110-6a9a0fde9288 // indirect
2652
github.com/go-logfmt/logfmt v0.6.0 // indirect
53+
github.com/go-ole/go-ole v1.3.0 // indirect
54+
github.com/godbus/dbus/v5 v5.1.1-0.20230522191255-76236955d466 // indirect
55+
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
56+
github.com/google/btree v1.1.2 // indirect
57+
github.com/google/go-cmp v0.7.0 // indirect
58+
github.com/google/nftables v0.2.1-0.20240414091927-5e242ec57806 // indirect
59+
github.com/google/uuid v1.6.0 // indirect
60+
github.com/gorilla/csrf v1.7.3-0.20250123201450-9dd6af1f6d30 // indirect
61+
github.com/gorilla/securecookie v1.1.2 // indirect
62+
github.com/hdevalence/ed25519consensus v0.2.0 // indirect
63+
github.com/illarion/gonotify/v2 v2.0.3 // indirect
64+
github.com/insomniacslk/dhcp v0.0.0-20231206064809-8c70d406f6d2 // indirect
65+
github.com/jmespath/go-jmespath v0.4.0 // indirect
66+
github.com/jsimonetti/rtnetlink v1.4.0 // indirect
67+
github.com/klauspost/compress v1.17.11 // indirect
68+
github.com/kortschak/wol v0.0.0-20200729010619-da482cc4850a // indirect
2769
github.com/lucasb-eyer/go-colorful v1.2.0 // indirect
2870
github.com/mattn/go-isatty v0.0.20 // indirect
2971
github.com/mattn/go-runewidth v0.0.16 // indirect
30-
github.com/mdlayher/socket v0.2.0 // indirect
72+
github.com/mdlayher/genetlink v1.3.2 // indirect
73+
github.com/mdlayher/netlink v1.7.3-0.20250113171957-fbb4dce95f42 // indirect
74+
github.com/mdlayher/sdnotify v1.0.0 // indirect
75+
github.com/mdlayher/socket v0.5.0 // indirect
76+
github.com/miekg/dns v1.1.58 // indirect
77+
github.com/mitchellh/go-ps v1.0.0 // indirect
3178
github.com/muesli/termenv v0.16.0 // indirect
79+
github.com/pierrec/lz4/v4 v4.1.21 // indirect
80+
github.com/prometheus-community/pro-bing v0.4.0 // indirect
3281
github.com/rivo/uniseg v0.4.7 // indirect
33-
github.com/sirupsen/logrus v1.8.3 // indirect
82+
github.com/safchain/ethtool v0.3.0 // indirect
83+
github.com/sirupsen/logrus v1.9.3 // indirect
84+
github.com/tailscale/certstore v0.1.1-0.20231202035212-d3fa0460f47e // indirect
85+
github.com/tailscale/go-winio v0.0.0-20231025203758-c4f33415bf55 // indirect
86+
github.com/tailscale/golang-x-crypto v0.0.0-20240604161659-3fde5e568aa4 // indirect
87+
github.com/tailscale/goupnp v1.0.1-0.20210804011211-c64d0f06ea05 // indirect
88+
github.com/tailscale/hujson v0.0.0-20221223112325-20486734a56a // indirect
89+
github.com/tailscale/netlink v1.1.1-0.20240822203006-4d49adab4de7 // indirect
90+
github.com/tailscale/peercred v0.0.0-20250107143737-35a0c7bd7edc // indirect
91+
github.com/tailscale/web-client-prebuilt v0.0.0-20250124233751-d4cd19a26976 // indirect
92+
github.com/tailscale/wireguard-go v0.0.0-20250107165329-0b8b35511f19 // indirect
93+
github.com/u-root/uio v0.0.0-20240224005618-d2acac8f3701 // indirect
94+
github.com/vishvananda/netns v0.0.4 // indirect
95+
github.com/x448/float16 v0.8.4 // indirect
3496
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect
35-
golang.org/x/exp v0.0.0-20231006140011-7918f672742d // indirect
97+
go4.org/mem v0.0.0-20240501181205-ae6ca9944745 // indirect
98+
go4.org/netipx v0.0.0-20231129151722-fdeea329fbba // indirect
99+
golang.org/x/crypto v0.36.0 // indirect
100+
golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 // indirect
101+
golang.org/x/mod v0.22.0 // indirect
36102
golang.org/x/sync v0.12.0 // indirect
37103
golang.org/x/text v0.23.0 // indirect
104+
golang.org/x/time v0.9.0 // indirect
105+
golang.org/x/tools v0.29.0 // indirect
106+
golang.zx2c4.com/wintun v0.0.0-20230126152724-0fa3db229ce2 // indirect
107+
golang.zx2c4.com/wireguard/windows v0.5.3 // indirect
108+
gvisor.dev/gvisor v0.0.0-20240722211153-64c016c92987 // indirect
38109
)

0 commit comments

Comments
 (0)