Model przechowywania
Mantis używa trzech warstw przechowywania:- Obraz dostawcy — należy do Crabbox i jest przechowywany na koncie dostawcy chmury. Zawiera możliwości maszyny (Chrome/Chromium, ffmpeg, scrot, Node/corepack/pnpm, natywne narzędzia kompilacyjne) oraz puste katalogi pamięci podręcznej.
- Stan rozgrzanej dzierżawy — należy do bieżącej sesji operatora. Może zawierać
zalogowany profil przeglądarki,
/var/cache/crabbox/pnpmoraz przygotowaną kopię roboczą kodu źródłowego przez czas trwania dzierżawy. - Artefakty Mantis — należą do uruchomienia OpenClaw. Znajdują się w
.artifacts/qa-e2e/mantis/...; GitHub Actions je przesyła, a aplikacja Mantis GitHub App dodaje komentarz z dowodami bezpośrednio w PR.
node_modules ani dist/ w obrazie dostawcy.
Uruchamianie przez GitHub
Uruchom przepływ pracy zmain:
candidate_ref podlega ograniczeniom, ponieważ przepływ pracy używa rzeczywistych danych uwierzytelniających:
musi wskazywać element w historii bieżącej gałęzi main, tag wydania lub głowę otwartego PR
w openclaw/openclaw.
Przepływ pracy generuje:
- przesłany artefakt
mantis-slack-desktop-smoke-<run-id>-<attempt> - komentarz bezpośrednio w PR od aplikacji Mantis GitHub App
slack-desktop-smoke.png,slack-desktop-smoke.mp4slack-desktop-smoke-preview.gif,slack-desktop-smoke-change.mp4mantis-slack-desktop-smoke-summary.json,mantis-slack-desktop-smoke-report.md- zdalne dzienniki:
slack-desktop-command.log,openclaw-gateway.log,chrome.log,ffmpeg.log
<!-- mantis-slack-desktop-smoke -->.
Lokalne CLI
Weryfikacja kodu źródłowego na zimno:--hydrate-mode prehydrated tylko wtedy, gdy ponownie używany zdalny obszar roboczy ma już
node_modules i skompilowany katalog dist/; w przeciwnym razie Mantis bezpiecznie przerywa działanie.
Potwierdź natywny interfejs zatwierdzania Slack:
--approval-checkpoints i --gateway-setup wzajemnie się wykluczają. Ta opcja uruchamia
dobrowolnie włączane scenariusze slack-approval-exec-native i slack-approval-plugin-native,
chyba że przekażesz jawny scenariusz punktu kontrolnego zatwierdzania przez --scenario; pozostałe
scenariusze Slack są odrzucane przed uruchomieniem maszyny wirtualnej. Program uruchamiający QA Slack zapisuje
każdy plik JSON punktu kontrolnego na podstawie rzeczywistej wiadomości API Slack, którą zaobserwował, a następnie
zdalny proces monitorujący renderuje tę wiadomość do
approval-checkpoints/<scenario>-pending.png i
approval-checkpoints/<scenario>-resolved.png. Uruchomienie kończy się niepowodzeniem, jeśli brakuje
któregokolwiek pliku JSON punktu kontrolnego, dowodu wiadomości, pliku JSON potwierdzenia odbioru lub wyrenderowanego zrzutu ekranu
albo jeśli którykolwiek z nich jest pusty.
Zimne dzierżawy GitHub Actions nie mają plików cookie Slack Web, więc przechwytywanie obrazu z przeglądarki
może zakończyć się na ekranie logowania Slack. Przy weryfikacji punktów kontrolnych zatwierdzania należy polegać na
wyrenderowanych obrazach punktów kontrolnych i artefaktach QA Slack, a nie na
slack-desktop-smoke.png. Zachowanej rozgrzanej dzierżawy z ręcznie
zalogowanym profilem Slack Web używaj tylko wtedy, gdy sam zrzut ekranu przeglądarki musi przedstawiać
Slack Web.
Tryby przygotowania
GitHub Actions zawsze przygotowuje kopię roboczą kandydata przed uruchomieniem maszyny wirtualnej. Magazyn
pnpm jest buforowany według systemu operacyjnego, wersji Node i pliku blokady. Uruchomienie maszyny wirtualnej w trybie
source
również używa ponownie /var/cache/crabbox/pnpm, jeśli jest dostępny.
Interpretacja czasów
mantis-slack-desktop-smoke-report.md zawiera czasy poszczególnych faz:
crabbox.warmup— uruchomienie u dostawcy chmury, gotowość pulpitu/przeglądarki, SSH.crabbox.inspect— pobranie metadanych dzierżawy.credentials.prepare— pozyskanie dzierżawy danych uwierzytelniających Convex.crabbox.remote_run— synchronizacja, uruchomienie przeglądarki, instalacja/kompilacja OpenClaw lub weryfikacja przygotowania, uruchomienie Gateway, wykonanie zrzutu ekranu i nagranie wideo.artifacts.copy— synchronizacja zwrotna przez rsync z maszyny wirtualnej.
crabbox.remote_run może mieć stan accepted, gdy Crabbox zwróci niezerowy
zdalny kod stanu, ale Mantis skopiuje metadane potwierdzające, że konfiguracja Gateway OpenClaw
została ukończona albo samo polecenie QA Slack zakończyło się pomyślnie. Traktuj
accepted jako powodzenie z wyjaśnieniem, a nie jako nieudany scenariusz.
Jeśli uruchomienie trwa długo:
- Dominuje rozgrzewanie: przygotuj wcześniej lub wypromuj lepszy obraz dostawcy Crabbox.
remote_rundominuje w trybiesource: użyj rozgrzanej dzierżawy, popraw ponowne użycie magazynu pnpm lub przenieś wymagania wstępne maszyny do obrazu dostawcy.remote_rundominuje w trybieprehydrated: zdalny obszar roboczy nie był faktycznie gotowy albo konfiguracja Gateway/przeglądarki/Slack jest powolna.- Dominuje kopiowanie artefaktów: sprawdź rozmiar nagrania i zawartość katalogu artefaktów.
Lista kontrolna dowodów
Dobry komentarz w PR zawiera:- identyfikator scenariusza i SHA kandydata
- adres URL uruchomienia GitHub Actions i adres URL artefaktu
- osadzony zrzut ekranu punktu kontrolnego zatwierdzania albo zrzut ekranu Slack Web z zalogowanej rozgrzanej dzierżawy
- osadzony animowany podgląd, jeśli jest dostępny
- odnośniki do pełnego i przyciętego pliku MP4
- stan powodzenia/niepowodzenia oraz podsumowanie czasów z raportu
Obsługa niepowodzeń
Jeśli przepływ pracy zakończy się niepowodzeniem przed uruchomieniem maszyny wirtualnej, najpierw sprawdź zadanie Actions. Typowe przyczyny: niezaufanycandidate_ref, brak sekretów środowiska lub
niepowodzenie instalacji/kompilacji kandydata.
Jeśli uruchomienie maszyny wirtualnej zakończy się niepowodzeniem, ale zrzuty ekranu zostały skopiowane z powrotem, sprawdź:
crabbox vnc ...
z raportu, a po zakończeniu zatrzymaj dzierżawę:
--lease-id. Nie umieszczaj tego profilu przeglądarki w obrazie dostawcy.