Release and CI

Pełna walidacja wydania

Full Release Validation to nadrzędna walidacja wydania. Jest pojedynczym ręcznym punktem wejścia dla potwierdzenia przedwydaniowego, ale większość pracy odbywa się w przepływach podrzędnych, dzięki czemu nieudaną maszynę można uruchomić ponownie bez restartowania całego wydania.

Uruchom ją z zaufanego refa workflow, zwykle main, i przekaż gałąź wydania, tag albo pełny SHA commita jako ref:

gh workflow run full-release-validation.yml \
  --ref main \
  -f ref=release/YYYY.M.D \
  -f provider=openai \
  -f mode=both \
  -f release_profile=stable

Przepływy podrzędne używają zaufanego refa workflow dla harnessu oraz wejściowego ref dla testowanego kandydata. Dzięki temu nowa logika walidacji jest dostępna podczas walidowania starszej gałęzi wydania albo tagu.

Domyślnie release_profile=stable uruchamia ścieżki blokujące wydanie i pomija wyczerpujący live/Docker soak. Przekaż run_release_soak=true, aby uwzględnić ścieżki soak w stabilnym uruchomieniu. release_profile=full zawsze włącza ścieżki soak, więc szeroki profil doradczy nigdy po cichu nie traci pokrycia.

Akceptacja pakietu zwykle buduje tarball kandydata z rozwiązanego ref, w tym uruchomienia dla pełnego SHA wywołane przez pnpm ci:full-release. Po opublikowaniu przekaż [email protected] (albo openclaw@beta/openclaw@latest), aby zamiast tego uruchomić tę samą macierz pakietu/aktualizacji względem wysłanego pakietu npm.

Etapy najwyższego poziomu

Etap Szczegóły
Rozwiązywanie celu Zadanie: Resolve target ref
Przepływ podrzędny: brak
Potwierdza: rozwiązuje gałąź wydania, tag albo pełny SHA commita i zapisuje wybrane dane wejściowe.
Ponowne uruchomienie: uruchom ponownie przepływ nadrzędny, jeśli to się nie powiedzie.
Vitest i normalne CI Zadanie: Run normal full CI
Przepływ podrzędny: CI
Potwierdza: ręczny pełny graf CI względem refa docelowego, w tym ścieżki Linux Node, shardy dołączonych Pluginów, kontrakty kanałów, zgodność z Node 22, check, check-additional, smoke test kompilacji, kontrole dokumentacji, Python skills, Windows, macOS, i18n Control UI oraz Android przez przepływ nadrzędny.
Ponowne uruchomienie: rerun_group=ci.
Przedwydanie Pluginu Zadanie: Run plugin prerelease validation
Przepływ podrzędny: Plugin Prerelease
Potwierdza: statyczne kontrole Pluginu tylko dla wydania, agentowe pokrycie Pluginu, pełne shardy partii rozszerzeń oraz przedwydaniowe ścieżki Docker dla Pluginu.
Ponowne uruchomienie: rerun_group=plugin-prerelease.
Kontrole wydania Zadanie: Run release/live/Docker/QA validation
Przepływ podrzędny: OpenClaw Release Checks
Potwierdza: smoke test instalacji, międzyplatformowe kontrole pakietów, Akceptację pakietu, parytet QA Lab, live Matrix oraz live Telegram. Z run_release_soak=true albo release_profile=full uruchamia także wyczerpujące zestawy live/E2E oraz fragmenty ścieżki wydania Docker.
Ponowne uruchomienie: rerun_group=release-checks albo węższy uchwyt release-checks.
Artefakt pakietu Zadanie: Prepare release package artifact
Przepływ podrzędny: brak
Potwierdza: tworzy nadrzędny tarball release-package-under-test wystarczająco wcześnie dla kontroli ukierunkowanych na pakiet, które nie muszą czekać na OpenClaw Release Checks.
Ponowne uruchomienie: uruchom ponownie przepływ nadrzędny albo podaj npm_telegram_package_spec dla rerun_group=npm-telegram.
Pakiet Telegram Zadanie: Run package Telegram E2E
Przepływ podrzędny: NPM Telegram Beta E2E
Potwierdza: oparte na artefakcie nadrzędnym potwierdzenie pakietu Telegram dla rerun_group=all z release_profile=full albo potwierdzenie Telegram dla opublikowanego pakietu, gdy ustawiono npm_telegram_package_spec.
Ponowne uruchomienie: rerun_group=npm-telegram z npm_telegram_package_spec.
Weryfikator nadrzędny Zadanie: Verify full validation
Przepływ podrzędny: brak
Potwierdza: ponownie sprawdza zapisane wyniki uruchomień podrzędnych i dopisuje tabele najwolniejszych zadań z przepływów podrzędnych.
Ponowne uruchomienie: uruchom ponownie tylko to zadanie po ponownym uruchomieniu nieudanego przepływu podrzędnego do zielonego stanu.

Dla ref=main i rerun_group=all nowszy przepływ nadrzędny zastępuje starszy. Gdy rodzic zostanie anulowany, jego monitor anuluje każdy przepływ podrzędny, który już uruchomił. Uruchomienia walidacji gałęzi wydania i tagów domyślnie nie anulują się nawzajem.

Etapy kontroli wydania

OpenClaw Release Checks to największy przepływ podrzędny. Rozwiązuje cel raz i przygotowuje współdzielony artefakt release-package-under-test, gdy potrzebują go etapy ukierunkowane na pakiet albo Docker.

Etap Szczegóły
Cel wydania Zadanie: Resolve target ref
Bazowy workflow: brak
Testy: wybrany ref, opcjonalny oczekiwany SHA, profil, grupa ponownego uruchomienia i filtr skupionego zestawu live.
Ponowne uruchomienie: rerun_group=release-checks.
Artefakt pakietu Zadanie: Prepare release package artifact
Bazowy workflow: brak
Testy: pakuje albo rozwiązuje jeden kandydujący tarball i przesyła release-package-under-test dla dalszych kontroli dotyczących pakietu.
Ponowne uruchomienie: objęta problemem grupa pakietu, cross-OS albo live/E2E.
Instalacyjny smoke Zadanie: Run install smoke
Bazowy workflow: Install Smoke
Testy: pełna ścieżka instalacji z ponownym użyciem obrazu smoke z głównego Dockerfile, instalacja pakietu QR, testy smoke Docker dla root i gateway, testy Docker instalatora, smoke dostawcy obrazów przy globalnej instalacji Bun oraz szybkie E2E instalacji/odinstalowania dołączonego Plugin.
Ponowne uruchomienie: rerun_group=install-smoke.
Cross-OS Zadanie: cross_os_release_checks
Bazowy workflow: OpenClaw Cross-OS Release Checks (Reusable)
Testy: ścieżki świeżej instalacji i aktualizacji na Linuxie, Windowsie i macOS dla wybranego dostawcy oraz trybu, z użyciem kandydującego tarballa i pakietu bazowego.
Ponowne uruchomienie: rerun_group=cross-os.
E2E repo i live Zadanie: Run repo/live E2E validation
Bazowy workflow: OpenClaw Live And E2E Checks (Reusable)
Testy: E2E repozytorium, cache live, strumieniowanie websocket OpenAI, natywne shardy live dostawcy i Plugin oraz oparte na Dockerze harnessy live modelu/backendu/Gateway wybrane przez release_profile.
Uruchomienia: run_release_soak=true, release_profile=full albo skupione rerun_group=live-e2e.
Ponowne uruchomienie: rerun_group=live-e2e, opcjonalnie z live_suite_filter.
Ścieżka wydania Docker Zadanie: Run Docker release-path validation
Bazowy workflow: OpenClaw Live And E2E Checks (Reusable)
Testy: fragmenty Docker ścieżki wydania względem współdzielonego artefaktu pakietu.
Uruchomienia: run_release_soak=true, release_profile=full albo skupione rerun_group=live-e2e.
Ponowne uruchomienie: rerun_group=live-e2e.
Akceptacja pakietu Zadanie: Run package acceptance
Bazowy workflow: Package Acceptance
Testy: offline fixtures pakietu Plugin, aktualizacja Plugin, akceptacja pakietu mock-OpenAI Telegram oraz kontrole przetrwania opublikowanej aktualizacji względem tego samego tarballa. Blokujące kontrole wydania używają domyślnej najnowszej opublikowanej bazy; kontrole soak rozszerzają zakres na każde stabilne wydanie npm od 2026.4.23 włącznie oraz fixtures zgłoszonych problemów.
Ponowne uruchomienie: rerun_group=package.
Parytet QA Zadanie: Run QA Lab parity lane i Run QA Lab parity report
Bazowy workflow: bezpośrednie zadania
Testy: kandydat i bazowe pakiety parytetu agentowego, a następnie raport parytetu.
Ponowne uruchomienie: rerun_group=qa-parity albo rerun_group=qa.
QA live Matrix Zadanie: Run QA Lab live Matrix lane
Bazowy workflow: bezpośrednie zadanie
Testy: szybki profil QA live Matrix w środowisku qa-live-shared.
Ponowne uruchomienie: rerun_group=qa-live albo rerun_group=qa.
QA live Telegram Zadanie: Run QA Lab live Telegram lane
Bazowy workflow: bezpośrednie zadanie
Testy: QA live Telegram z dzierżawami poświadczeń Convex CI.
Ponowne uruchomienie: rerun_group=qa-live albo rerun_group=qa.
Weryfikator wydania Zadanie: Verify release checks
Bazowy workflow: brak
Testy: wymagane zadania kontroli wydania dla wybranej grupy ponownego uruchomienia.
Ponowne uruchomienie: uruchom ponownie po przejściu skupionych zadań podrzędnych.

Fragmenty ścieżki wydania Docker

Etap ścieżki wydania Docker uruchamia te fragmenty, gdy live_suite_filter jest pusty:

Fragment Zakres
core Podstawowe ścieżki smoke ścieżki wydania Docker.
package-update-openai Zachowanie instalacji i aktualizacji pakietu OpenAI.
package-update-anthropic Zachowanie instalacji i aktualizacji pakietu Anthropic.
package-update-core Zachowanie pakietu i aktualizacji niezależne od dostawcy.
plugins-runtime-plugins Ścieżki runtime Plugin, które wykonują zachowanie Plugin.
plugins-runtime-services Ścieżki runtime Plugin oparte na usługach; obejmują OpenWebUI na żądanie.
plugins-runtime-install-a do plugins-runtime-install-h Partie instalacji/runtime Plugin podzielone na równoległą walidację wydania.

Użyj ukierunkowanego docker_lanes=<lane[,lane]> w wielorazowym workflow live/E2E, gdy nie powiodła się tylko jedna ścieżka Docker. Artefakty wydania zawierają polecenia ponownego uruchomienia dla poszczególnych ścieżek z artefaktem pakietu i wejściami ponownego użycia obrazu, gdy są dostępne.

Profile wydania

release_profile głównie kontroluje zakres live/dostawców w kontrolach wydania. Nie usuwa normalnego pełnego CI, Plugin Prerelease, instalacyjnego smoke, akceptacji pakietu ani QA Lab. Dla stable wyczerpujące E2E repo/live i fragmenty ścieżki wydania Docker są zakresem soak i uruchamiają się, gdy run_release_soak=true. full wymusza zakres soak, a także sprawia, że uruchomienie parasolowe wykonuje pakietowe E2E Telegram względem nadrzędnego artefaktu pakietu wydania, gdy rerun_group=all, więc pełny kandydat przed publikacją nie pomija po cichu tej ścieżki pakietu Telegram.

Profil Zamierzone użycie Dołączony zakres live/dostawców
minimum Najszybszy smoke krytyczny dla wydania. Ścieżka live OpenAI/core, modele Docker live dla OpenAI, natywny rdzeń Gateway, natywny profil Gateway OpenAI, natywny Plugin OpenAI oraz Docker live Gateway OpenAI.
stable Domyślny profil zatwierdzenia wydania. minimum plus smoke Anthropic, Google, MiniMax, backend, natywny harness testów live, backend Docker live CLI, powiązanie Docker ACP, harness Docker Codex oraz shard smoke OpenCode Go.
full Szeroki przegląd doradczy. stable plus dostawcy doradczy, shardy live Plugin i shardy live mediów.

Dodatki tylko dla full

Te zestawy są pomijane przez stable i dołączane przez full:

Obszar Zakres tylko dla full
Modele Docker live OpenCode Go, OpenRouter, xAI, Z.ai i Fireworks.
Docker live Gateway Dostawcy doradczy podzieleni na shardy DeepSeek/Fireworks, OpenCode Go/OpenRouter oraz xAI/Z.ai.
Natywne profile dostawców Gateway Pełne shardy Anthropic Opus i Sonnet/Haiku, Fireworks, DeepSeek, pełne shardy modeli OpenCode Go, OpenRouter, xAI i Z.ai.
Natywne shardy live Plugin Plugins A-K, L-N, O-Z other, Moonshot i xAI.
Natywne shardy live mediów Audio, muzyka Google, muzyka MiniMax i grupy wideo A-D.

stable obejmuje native-live-src-gateway-profiles-anthropic-smoke i native-live-src-gateway-profiles-opencode-go-smoke; full używa zamiast tego szerszych shardów modeli Anthropic i OpenCode Go. Skupione ponowne uruchomienia nadal mogą używać zagregowanych uchwytów native-live-src-gateway-profiles-anthropic albo native-live-src-gateway-profiles-opencode-go.

Skupione ponowne uruchomienia

Użyj rerun_group, aby uniknąć powtarzania niepowiązanych pól wydania:

Handle Zakres
all Wszystkie etapy pełnej walidacji wydania.
ci Tylko podrzędny ręczny pełny CI.
plugin-prerelease Tylko podrzędny Plugin Prerelease.
release-checks Wszystkie etapy kontroli wydania OpenClaw.
install-smoke Install Smoke przez kontrole wydania.
cross-os Kontrole wydania między systemami operacyjnymi.
live-e2e Walidacja repo/live E2E i ścieżki wydania Docker.
package Package Acceptance.
qa Parzystość QA oraz aktywne ścieżki QA.
qa-parity Tylko ścieżki parzystości QA i raport.
qa-live Tylko aktywne Matrix i Telegram QA.
npm-telegram E2E Telegram dla opublikowanego pakietu; wymaga npm_telegram_package_spec.

Użyj live_suite_filter z rerun_group=live-e2e, gdy jeden aktywny zestaw testów zakończył się niepowodzeniem. Prawidłowe identyfikatory filtrów są zdefiniowane w wielokrotnie używanym przepływie pracy live/E2E, w tym docker-live-models, live-gateway-docker, live-gateway-anthropic-docker, live-gateway-google-docker, live-gateway-minimax-docker, live-gateway-advisory-docker, live-cli-backend-docker, live-acp-bind-docker oraz live-codex-harness-docker.

Uchwyt live-gateway-advisory-docker jest zagregowanym uchwytem ponownego uruchomienia dla swoich trzech fragmentów dostawców, więc nadal rozchodzi się na wszystkie zadania Gateway Docker advisory.

Użyj cross_os_suite_filter z rerun_group=cross-os, gdy jedna ścieżka między systemami operacyjnymi zakończyła się niepowodzeniem. Filtr akceptuje identyfikator systemu operacyjnego, identyfikator zestawu testów lub parę system/zestaw, na przykład windows/packaged-upgrade, windows albo packaged-fresh. Podsumowania między systemami operacyjnymi obejmują czasy poszczególnych faz dla ścieżek aktualizacji pakietowej, a długotrwałe polecenia wypisują linie Heartbeat, aby zawieszona aktualizacja Windows była widoczna przed limitem czasu zadania.

Ścieżki kontroli wydania QA mają charakter doradczy. Niepowodzenie dotyczące tylko QA jest zgłaszane jako ostrzeżenie i nie blokuje weryfikatora kontroli wydania; uruchom ponownie rerun_group=qa, qa-parity albo qa-live, gdy potrzebujesz świeżych dowodów QA.

Dowody do zachowania

Zachowaj podsumowanie Full Release Validation jako indeks na poziomie wydania. Zawiera ono linki do identyfikatorów uruchomień podrzędnych i obejmuje tabele najwolniejszych zadań. W przypadku niepowodzeń najpierw sprawdź podrzędny przepływ pracy, a następnie uruchom ponownie najmniejszy pasujący uchwyt powyżej.

Przydatne artefakty:

  • release-package-under-test z nadrzędnego Full Release Validation oraz OpenClaw Release Checks
  • Artefakty ścieżki wydania Docker w .artifacts/docker-tests/
  • Package Acceptance package-under-test oraz artefakty akceptacji Docker
  • Artefakty kontroli wydania między systemami operacyjnymi dla każdego systemu operacyjnego i zestawu testów
  • Artefakty parzystości QA, Matrix i Telegram

Pliki przepływu pracy

  • .github/workflows/full-release-validation.yml
  • .github/workflows/openclaw-release-checks.yml
  • .github/workflows/openclaw-live-and-e2e-checks-reusable.yml
  • .github/workflows/plugin-prerelease.yml
  • .github/workflows/install-smoke.yml
  • .github/workflows/openclaw-cross-os-release-checks-reusable.yml
  • .github/workflows/package-acceptance.yml