ci: .9 안 Windows CI VM 무인 구축 자동화
Windows 설치 화면을 사람이 클릭할 수 없으므로 전 과정을 무인으로 짰다. autounattend.xml 이 설치와 OOBE 를 끝내고, provision.ps1 이 virtio 드라이버를 오프라인으로 넣어 네트워크를 살리고, 상주 agent.ps1 이 호스트 HTTP 에서 stage2.ps1 을 받아 Git/pwsh7/Python/Node/CMake/act_runner 를 설치한다. 설치 내용을 ISO 에 박지 않고 호스트가 HTTP 로 내려주는 구조로 한 이유는 ISO 를 한 번 구우면 못 고쳐서, 한 줄 고칠 때마다 Windows 재설치가 되기 때문이다. stage2.ps1 만 고치면 게스트가 20초 안에 반영한다. - 시스템 디스크는 SATA. virtio-blk 로 하면 Setup 이 디스크를 못 봐서 WinPE 드라이버 주입이 필요해진다 - VM 은 systemd --user 트랜지언트 유닛으로 띄워 봇 cgroup 밖에 둔다 (MemoryHigh=16G 안에 8G VM 이 들어가면 봇이 OOM 으로 죽는 전례) - Node 포함. act_runner host 모드가 JS 액션을 PATH 의 node 로 돌린다
This commit is contained in:
19
scripts/win-ci/status.sh
Executable file
19
scripts/win-ci/status.sh
Executable file
@@ -0,0 +1,19 @@
|
||||
#!/bin/bash
|
||||
# win-ci VM 현재 상태를 한 번에 본다.
|
||||
cd /home/claude/win-ci
|
||||
echo "=== 유닛 ==="
|
||||
systemctl --user is-active win-ci.service win-ci-http.service | paste -sd' ' -
|
||||
systemctl --user show win-ci.service -p MemoryCurrent -p CPUUsageNSec --value | paste -sd' ' -
|
||||
echo
|
||||
echo "=== 디스크 사용량 (설치가 진행되면 커진다) ==="
|
||||
du -h --apparent-size win-ci.qcow2 2>/dev/null | cut -f1
|
||||
du -h win-ci.qcow2 | cut -f1
|
||||
echo
|
||||
echo "=== 게스트 로그 (HTTP, 최근 25줄) ==="
|
||||
tail -n 25 guest.log 2>/dev/null || echo "(아직 없음 - 네트워크 올라오기 전)"
|
||||
echo
|
||||
echo "=== 시리얼 로그 (최근 25줄) ==="
|
||||
tail -n 25 serial.log 2>/dev/null | tr -d '\r' || echo "(아직 없음)"
|
||||
echo
|
||||
echo "=== 러너 등록 토큰 ==="
|
||||
if [ -s serve/runner-token.txt ]; then echo "있음 ($(wc -c < serve/runner-token.txt) bytes)"; else echo "없음 - serve/runner-token.txt 에 넣으면 게스트가 20초 안에 자동 등록"; fi
|
||||
Reference in New Issue
Block a user