Potoki CI/CD
Wszystkie procesy weryfikacji jakości kodu, kompilacji wieloplatformowej, podpisywania cyfrowego i publikacji wydań w projekcie Speedwave są zautomatyzowane za pomocą GitHub Actions. Definicje potoków znajdują się w katalogu .github/workflows/, a wywoływane akcje są przypięte do niezmiennych skrótów commitów (SHA).
Weryfikacja pull requestów (test.yml)
Dział zatytułowany „Weryfikacja pull requestów (test.yml)”Główny potok testowy uruchamia się przy każdym commicie oraz w pull requestach kierowanych do gałęzi main i dev, automatycznie anulując poprzednie nieaktualne zadania:
| Zadanie w potoku | Środowisko uruchomieniowe | Zakres weryfikacji |
|---|---|---|
lint | macos-latest | Formatowanie i Clippy w Rust, walidacja Prettier, kontrola typów TypeScript, audyty ESLint. |
test | macos-latest | Testy jednostkowe Rust, moduły transkrypcji, testy Vitest z pokryciem kodu, testy Bats dla skryptów kontenerowych. |
desktop | macos-latest | Clippy dla crate’a desktop, testy jednostkowe Angulara z pokryciem kodu, testy kompilacji Tauri. |
audit | ubuntu-latest | cargo audit dla przestrzeni Rusta oraz npm audit dla pakietów MCP i interfejsu Desktop. |
swift | macos-latest | Kompilacja uniwersalnych plików binarnych Mach-O oraz testy SwiftPM (wyłącznie dla PR). |
runtime-windows | windows-latest | Testy Rust dla podsystemu WSL2 i obiektów zadań Windows; walidacja znaków nowej linii LF. |
desktop-windows-check | windows-latest | Weryfikacja kompilacji aplikacji Desktop pod kompilatorem MSVC. |
Szczegółowe progi pokrycia kodu opisano w sekcji Testowanie i weryfikacja.
Pakowanie aplikacji Desktop (desktop-build.yml)
Dział zatytułowany „Pakowanie aplikacji Desktop (desktop-build.yml)”Potok kompilacji aplikacji uruchamia się przy zmianach w kodzie frontendowym, crate’ach Rusta lub serwerach MCP:
- Pull requesty: Kompiluje pakiety macOS dla architektury Apple Silicon w celu szybkiej weryfikacji.
- Pushe do
dev/main: Buduje uniwersalne instalatory macOS (DMG) oraz instalatory Windows (MSI/NSIS).
Automatyzacja wydań
Dział zatytułowany „Automatyzacja wydań”Speedwave wdraża model ciągłego dostarczania oparty na Release Please:
flowchart LR PR["Pull Request (Conventional Commits)<br/>Scalony do main"] --> RP["release-please.yml<br/>Tworzy Release PR"] RP --> Merge["Scalenie Release PR"] --> Release["desktop-release.yml<br/>Kompilacja, Podpisywanie, Publikacja"]
- Narzędzie
release-please.ymlaktualizuje plikCHANGELOG.mdi tworzy pull request wydaniowy na gałęzimain. - Scalenie pull requesta wydania automatycznie wyzwala potok
desktop-release.yml. - Potok kompiluje i podpisuje pakiety binarne:
- macOS: Podpisywanie certyfikatem Apple Developer ID i automatyczna notaryzacja w Apple.
- Windows: Podpisywanie certyfikatami Authenticode.
- CLI: Kompilacja wieloplatformowa samodzielnych plików binarnych CLI.
- Sprawdza kompletność wygenerowanych plików przed przełączeniem wydania ze statusu roboczego (draft) na publiczny.
Bramki jakości na gałęziach
Dział zatytułowany „Bramki jakości na gałęziach”- Weryfikacja tytułów PR (
pr-title.yml): Wymusza format Conventional Commits (feat:,fix:,chore:itp.). - Bramka strategii scalania (
merge-strategy-check.yml): Weryfikuje, czy zmiany na gałęzimainposiadają tytuły generujące podbicie wersji. - Aktualizacje zależności: Zautomatyzowany Dependabot codziennie monitoruje pakiety i wykonuje rebase otwartych pull requestów.