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. |
ci-gate | ubuntu-latest | Zbiera wyniki wszystkich powyższych zadań w jeden wymagany status (check), weryfikowany przez reguły ochrony gałęzi (branch protection). |
Szczegółowe progi pokrycia kodu opisano w sekcji Testowanie i weryfikacja.
Budowanie aplikacji desktopowej (desktop-build.yml)
Dział zatytułowany „Budowanie aplikacji desktopowej (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.
- Wypchnięcia do gałęzi
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 aplikacji, CLI, instalatorów i deinstalatora za pośrednictwem Azure Artifact Signing, z uwierzytelnieniem federacyjnym GitHub OIDC i bez konieczności przechowywania sekretów w repozytorium.
- 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łęzimainmają tytuły generujące podbicie wersji semantycznej. - Aktualizacje zależności: zautomatyzowany Dependabot codziennie monitoruje pakiety i wykonuje rebase otwartych pull requestów.