Skip to content

023 pwa desktop packaging#52

Merged
aligneddev merged 20 commits into
mainfrom
023-pwa-desktop-packaging
Jun 12, 2026
Merged

023 pwa desktop packaging#52
aligneddev merged 20 commits into
mainfrom
023-pwa-desktop-packaging

Conversation

@aligneddev

Copy link
Copy Markdown
Owner

No description provided.

aligneddev and others added 20 commits June 9, 2026 21:26
- Add src-tauri/src/main.rs (Tauri binary entry point calling lib::run())
- Remove invalid fs:read-all capability (Rust uses std::fs directly, no plugin needed)
- Update Cargo.lock (removes http-range dep no longer needed)
- Commit generated gen/schemas/ (Tauri capability schema files)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Remove erroneous -- separator (was passing flags to cargo, not tauri CLI)
- Add --bundles deb to CI tauri check (prevents AppImage build which fails without FUSE)
- Fix upload-artifact version: v7 -> v4 in ci.yaml

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Tauri produces BikeTracking_*_amd64.deb (capital B, T from productName),
not biketracking_*. Linux FS is case-sensitive so glob would never match,
causing upload-artifact and fail_on_unmatched_files to error.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Validated with DISPLAY=:99 Xvfb in DevContainer:
- Vite dev server started on :5173 (HTTP 200)
- Rust compiled and bike-tracking binary launched
- WebKitNetworkProcess + WebKitWebProcess running = WebView opened
- DRI3 warnings only (software rendering, non-fatal)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Cache ~/.cache/ms-playwright keyed on package-lock.json hash
  On hit: playwright install skips browser download, only runs apt deps
  Saves ~150 MB download per run after first warm

- Cache ~/.cargo + src-tauri/target/ keyed on Cargo.lock hash
  Same key strategy as release.yml package-linux job
  Saves full Tauri recompile (~2-3 min) on unchanged Rust code

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Split install into two steps:
- Install browser: skipped entirely when cache hits (cache-hit == true)
- Install system deps: always runs via install-deps (apt only, no download)

Previous approach used --with-deps on every run; even on cache hit it
would still invoke apt-get which can hang. Now cache hit = zero network
activity for browser binary.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
On cache hit: skip install entirely (ubuntu-latest has Chromium
system deps pre-installed, no need for install-deps).
On cache miss: --with-deps handles browser + system deps (known good).

Removes the install-deps-always step which was the new hang point.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Cold cache (first ever run) downloads 150 MB Chromium from Playwright CDN.
CDN can stall indefinitely. timeout-minutes: 5 makes it fail fast -> retryable.
On retry, cache from first attempt may partially populate; on success, future
runs hit cache and skip download entirely.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
PLAYWRIGHT_DOWNLOAD_HOST -> Microsoft PRSS CDN (faster, more reliable
than default azureedge on GitHub runners).
PLAYWRIGHT_DOWNLOAD_CONNECTION_TIMEOUT=60000 -> fail at 60s instead
of hanging indefinitely.
Combined with timeout-minutes: 5 and cache-hit skip for belt+suspenders.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
… runners

Playwright 1.58.2 on ubuntu-x64 uses Chrome for Testing (CFT),
downloading from builds/cft/<version>/linux64/chrome-linux64.zip via
https://cdn.playwright.dev → Google Storage.

Setting PLAYWRIGHT_DOWNLOAD_HOST replaces the mirrors list entirely.
The PRSS CDN has no builds/cft/ path → HTTP 400 on every install attempt.

Fix: drop the env block; let Playwright use its default CDN logic.
The cache + timeout-minutes: 5 guard remains.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…ut to 15m

--with-deps mixes apt-get (2-3 min) + 170 MB download in one step.
5-minute cap reliably kills it before download finishes.

Split into two steps:
- install-deps: runs apt-get via playwright install-deps (always, fast, no CDN)
- install browser: CDN download only, guarded by cache, 15-minute timeout

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…-with-deps

Step timeout caused a death cycle: download never finished -> cache never
seeded -> every run re-downloads -> times out again.

Changes:
- Remove timeout-minutes from install step (job-level 40 min is the guard)
- Collapse back to --with-deps (single step, apt-get + download together)
- Prefix cache key with runner.os for correctness

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Google Storage CFT download is throttled on GH Actions runners
(<110 KB/s for 260 MB) -> consistently times out at any step limit.

Fix: new 'e2e' job uses mcr.microsoft.com/playwright:v1.58.2-noble
which has Chromium pre-installed. Zero CDN downloads needed.

Changes:
- verify job: drop playwright cache + install steps entirely
- e2e job: playwright container, setup-dotnet, npm ci, run tests
- e2e needs: verify (runs after verify passes)
- artifact paths fixed to src/BikeTracking.Frontend/ prefix
- e2e sqlite cleanup includes biketracking.e2e.db

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@aligneddev aligneddev merged commit 55e88f5 into main Jun 12, 2026
6 checks passed
@aligneddev aligneddev deleted the 023-pwa-desktop-packaging branch June 12, 2026 15:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant