-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
152 lines (140 loc) · 4.02 KB
/
docker-compose.yml
File metadata and controls
152 lines (140 loc) · 4.02 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
# great.sh cross-platform test rigs
#
# Usage:
# docker compose up --build ubuntu # Test on Ubuntu 24.04
# docker compose up --build fedora # Test on Fedora 39
# docker compose run ubuntu bash # Interactive shell
# docker compose run --build macos-cross # Cross-compile macOS binaries
# docker compose run --build windows-cross # Cross-compile Windows binary
# docker compose run --build linux-aarch64-cross # Cross-compile Linux ARM64 binary
# docker compose up macos # Boot macOS VM (requires KVM)
# docker compose up windows # Boot Windows VM (requires KVM)
# docker compose up ubuntu-vm # Boot Ubuntu VM (requires KVM)
#
# Each headless container builds the great CLI from source and runs the test suite.
services:
# ── Layer 1: Headless — cross-compilation & test suite ─────────────
ubuntu:
build:
context: .
dockerfile: docker/ubuntu.Dockerfile
volumes:
- .:/workspace:ro
- cargo-cache-ubuntu:/root/.cargo/registry
working_dir: /build
command: ["bash", "/workspace/docker/test.sh"]
environment:
- PLATFORM=ubuntu
fedora:
build:
context: .
dockerfile: docker/fedora.Dockerfile
volumes:
- .:/workspace:ro
- cargo-cache-fedora:/root/.cargo/registry
working_dir: /build
command: ["bash", "/workspace/docker/test.sh"]
environment:
- PLATFORM=fedora
# macOS cross-compilation via osxcross (x86_64 + aarch64)
macos-cross:
build:
context: .
dockerfile: docker/cross-macos.Dockerfile
volumes:
- .:/workspace:ro
- cargo-cache-macos:/opt/rust/registry
- ./test-files:/build/test-files
working_dir: /build
command: ["bash", "/workspace/docker/cross-test-macos.sh"]
# Windows cross-compilation via MinGW (x86_64)
windows-cross:
build:
context: .
dockerfile: docker/cross-windows.Dockerfile
volumes:
- .:/workspace:ro
- cargo-cache-windows:/root/.cargo/registry
- ./test-files:/build/test-files
working_dir: /build
command: ["bash", "/workspace/docker/cross-test-windows.sh"]
# Linux aarch64 (ARM64) cross-compilation
linux-aarch64-cross:
build:
context: .
dockerfile: docker/cross-linux-aarch64.Dockerfile
volumes:
- .:/workspace:ro
- cargo-cache-linux-aarch64:/root/.cargo/registry
- ./test-files:/build/test-files
working_dir: /build
command: ["bash", "/workspace/docker/cross-test-linux-aarch64.sh"]
# ── Layer 2: VNC/VM — graphical host integration testing ───────────
# macOS VM (VNC :5900, web :8007)
macos:
image: dockurr/macos
environment:
VERSION: "15"
RAM_SIZE: "4G"
CPU_CORES: "4"
devices:
- /dev/kvm
- /dev/net/tun
cap_add:
- NET_ADMIN
ports:
- "8007:8006"
- "5900:5900/tcp"
- "5900:5900/udp"
volumes:
- ./macos-storage:/storage
- ./test-files:/shared
restart: unless-stopped
stop_grace_period: 2m
# Windows 11 VM (web :8006, RDP :3389)
windows:
image: dockurr/windows
environment:
VERSION: "11"
RAM_SIZE: "4G"
CPU_CORES: "4"
devices:
- /dev/kvm
- /dev/net/tun
cap_add:
- NET_ADMIN
ports:
- "8006:8006"
- "3389:3389/tcp"
- "3389:3389/udp"
volumes:
- ./windows-storage:/storage
- ./test-files:/shared
restart: unless-stopped
stop_grace_period: 2m
# Ubuntu Desktop VM (web :8009)
ubuntu-vm:
image: qemux/qemu
environment:
BOOT: "ubuntu"
DISK_SIZE: "64G"
RAM_SIZE: "4G"
CPU_CORES: "2"
devices:
- /dev/kvm
- /dev/net/tun
cap_add:
- NET_ADMIN
ports:
- "8009:8006"
volumes:
- ./ubuntu-vm-storage:/storage
- ./test-files:/shared
restart: unless-stopped
stop_grace_period: 2m
volumes:
cargo-cache-ubuntu:
cargo-cache-fedora:
cargo-cache-macos:
cargo-cache-windows:
cargo-cache-linux-aarch64: