Przejdź do głównej zawartości

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).

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 uruchomienioweZakres weryfikacji
lintmacos-latestFormatowanie i Clippy w Rust, walidacja Prettier, kontrola typów TypeScript, audyty ESLint.
testmacos-latestTesty jednostkowe Rust, moduły transkrypcji, testy Vitest z pokryciem kodu, testy Bats dla skryptów kontenerowych.
desktopmacos-latestClippy dla crate’a desktop, testy jednostkowe Angulara z pokryciem kodu, testy kompilacji Tauri.
auditubuntu-latestcargo audit dla przestrzeni Rusta oraz npm audit dla pakietów MCP i interfejsu Desktop.
swiftmacos-latestKompilacja uniwersalnych plików binarnych Mach-O oraz testy SwiftPM (wyłącznie dla PR).
runtime-windowswindows-latestTesty Rust dla podsystemu WSL2 i obiektów zadań Windows; walidacja znaków nowej linii LF.
desktop-windows-checkwindows-latestWeryfikacja kompilacji aplikacji Desktop pod kompilatorem MSVC.

Szczegółowe progi pokrycia kodu opisano w sekcji Testowanie i weryfikacja.

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).

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"]
  1. Narzędzie release-please.yml aktualizuje plik CHANGELOG.md i tworzy pull request wydaniowy na gałęzi main.
  2. Scalenie pull requesta wydania automatycznie wyzwala potok desktop-release.yml.
  3. 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.
  4. Sprawdza kompletność wygenerowanych plików przed przełączeniem wydania ze statusu roboczego (draft) na publiczny.
  • 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łęzi main posiadają tytuły generujące podbicie wersji.
  • Aktualizacje zależności: Zautomatyzowany Dependabot codziennie monitoruje pakiety i wykonuje rebase otwartych pull requestów.