feat: add aw-tauri CI builds alongside aw-qt#1209
feat: add aw-tauri CI builds alongside aw-qt#1209ErikBjare merged 7 commits intoActivityWatch:masterfrom
Conversation
- Ubuntu 22.04 → 24.04, add macos-latest alongside macOS-13 - Node 20 → 22 - Fix macOS Python setup condition (matrix.os instead of runner.os) - Use matrix.os in cache keys for unique per-variant caching - Enable cargo cache on macOS (was disabled) - Fix qt5-default → qt5-qmake + qtbase5-dev (ubuntu-24.04) - Fix artifact upload name collision (matrix.os) - Fix typo: 'Wether' → 'Whether'
aw-tauri is the Tauri-based replacement for aw-qt (system tray). awatcher is used on Linux for Wayland-compatible window watching.
Add a separate build-tauri.yml CI workflow that builds aw-tauri alongside the existing aw-qt builds. The two build pipelines coexist independently. Makefile changes: - TAURI_BUILD=true flag switches between aw-qt and aw-tauri submodules - aw-server-rust builds only aw-sync in Tauri mode (not full server) - ICON points to aw-tauri icons when TAURI_BUILD is set - Conditional packaging: aw-tauri app bundle on macOS, Inno Setup on Windows Packaging: - build_app_tauri.sh: macOS .app bundle creator for Tauri - aw-tauri.iss: Windows Inno Setup with different AppId/AppName to avoid colliding with existing aw-qt installations (addresses review comment) - move-to-aw-modules.sh: Linux module discovery helper (rsync -a, proper line continuation) - README.txt: Linux end-user instructions (typos fixed) - package-all.sh: Tauri-aware zip/installer selection Build-tauri.yml features: - Multi-OS: ubuntu-24.04, ubuntu-24.04-arm, windows-latest, macOS-13, macos-latest - Retry wrapper (nick-fields/retry) for flaky builds - Separate artifact names (builds-tauri-*) to not collide with aw-qt - Tauri-specific APT deps (libgtk-3-dev, libwebkit2gtk-4.1-dev, etc.) Also updates contributor CSV files (brayo-pip → 0xbrayo). Based on work by @0xbrayo in PR ActivityWatch#1163.
There was a problem hiding this comment.
Important
Looks good to me! 👍
Reviewed everything up to 8870044 in 9 seconds. Click for details.
- Reviewed
787lines of code in13files - Skipped
0files when reviewing. - Skipped posting
0draft comments. View those below. - Modify your settings and rules to customize what types of comments Ellipsis leaves. And don't forget to react with 👍 or 👎 to teach Ellipsis.
Workflow ID: wflow_CXYXZixNJluOuIqa
You can customize by changing your verbosity settings, reacting with 👍 or 👎, replying to comments, or adding code review rules.
|
@greptileai review |
GitHub Actions runner labels are case-sensitive. `macOS-13` (capital OS) is not a valid runner label and causes CI failures. The correct label is `macos-13` (all lowercase). Fix this in both build.yml and build-tauri.yml.
|
Fixed the Changed in both Note: CI is showing |
|
"macos-13, py-3.9, node-22 |
macos-13 (x86_64) is deprecated by GitHub Actions. Replace with macos-14 (ARM64/Apple Silicon) in both build.yml and build-tauri.yml. Also remove the macos-13-specific Python workaround (custom pkg install for macOS 10.9 compatibility) since macos-14 uses standard actions/setup-python.
|
Fixed the Commit: f179ea6 |
|
@TimeToBuildBob thinking about merging this now, but what's up with the failing windows job and the absolutely massive windows buildtimes? (34min is a bit much...) |
|
@ErikBjare windows arm build for tauri is still failing for me on my fork. Will let you know when I have a fix :) |
|
Now noticing that @TimeToBuildBob hasn't set up tauri builds for windows arm here. |
Windows Job FailureThe failing Root cause: Poetry 1.3.2 (Jan 2023) + pip on Windows has a known race condition during package replacement. Multiple subprojects share the same venv and trigger pluggy version churn (1.5.0 → 1.3.0 → 1.5.0), causing pip's temporary rename to fail under Windows file locking. Fix: Upgrade Poetry from 1.3.2 to 1.8+ in 34-Minute Windows Build TimesBreakdown of the
Two bottlenecks:
Suggestions to cut to ~15 min:
Happy to submit a PR for the caching improvements if you'd like. |
|
@TimeToBuildBob Make those fixes in this PR @0xbrayo I think Bob can probably figure it out, at least getting CI to pass. So you can focus on the integration/UI/ideas :) |
|
@TimeToBuildBob I have sent an invite to be a collaborator on my fork, you need push access to send tags, for testing the CI. Current issue is misconfigured TLS on windows arm builds. |
|
Thanks @0xbrayo — collaborator invite accepted (aw-tauri fork). I can now push tags for Windows ARM CI testing. For the activitywatch build.yml CI fixes that @ErikBjare asked about: I don't have push access to your activitywatch fork. Two options:
Which would you prefer? |
Poetry 1.3.x has a known Windows file-locking race condition when installing packages (tilde-prefixed dist-info temp files cause OSError). Version 1.4.0+ fixes this. Using 1.4.2 (last release in 1.4.x series) to stay on same lockfile format as 1.3.x. Fixes: Windows CI failure in jobs that run 'poetry install'
|
Fixed the Windows CI failure in commit 278a864. Root cause: Poetry 1.3.2 has a file-locking race condition on Windows when installing packages — it creates temp dirs with tilde-prefixed names ( Fix: Upgraded Poetry from 1.3.2 → 1.4.2. Version 1.4.0 fixed this race condition. Using 1.4.2 (last stable 1.4.x release) to stay on the same lockfile format as 1.3.x — no lockfile regeneration needed. CI is running now (waiting for maintainer approval on first-time contributor workflow run). |
- Cache node_modules directly instead of npm global cache. The global cache only saves download time, but npm ci still does a full install into node_modules every run (~5-7 min per npm ci call). Caching node_modules directly skips this entirely on cache hit. - Cache aw-tauri/src-tauri/target alongside aw-server-rust/target in the Tauri workflow. The Tauri Cargo release build takes ~8 min uncached and was not being cached previously. - Also cache aw-tauri/node_modules in the Tauri workflow (has its own package-lock.json separate from aw-webui). Expected improvement: ~15-20 min savings on cached Windows Tauri builds (from ~34 min to ~15 min).
|
Pushed caching improvements to reduce build times (7fea151): Changes to both
Combined with the Poetry 1.4.2 fix from the previous commit, the Windows CI should now:
CI will need maintainer approval to run (first-time contributor workflow restriction). |
|
Alright, merging! |
|
@TimeToBuildBob make a PR replacing aw-notify module with aw-notify-rs https://github.com/0xbrayo/aw-notify-rs, note the different build processes necessary for each module. |
|
On it @0xbrayo! I'll open a PR replacing the aw-notify-rs already has compatible
Will post the PR shortly. |
|
PR submitted: #1210 Replaced the aw-notify Python submodule with aw-notify-rs. The Makefile targets are compatible so the build system integrates cleanly — just swapping Python/poetry build for cargo. |
Summary
This PR adds aw-tauri support to the ActivityWatch build pipeline, running alongside the existing aw-qt builds (not replacing them). Both build pipelines coexist independently.
Supersedes #1163 — takes over the work by @0xbrayo, applying it cleanly on current master and addressing all outstanding review comments.
Changes
New:
build-tauri.ymlCI workflownick-fields/retry) for build resiliencebuilds-tauri-*) to avoid collisionsUpdated:
build.yml(aw-qt CI)matrix.osnotrunner.osfor multi-runner)qt5-default→qt5-qmake+qtbase5-dev(ubuntu-24.04)Updated:
MakefileTAURI_BUILD=trueflag switches submodule set (aw-tauri instead of aw-qt)aw-syncin Tauri modeNew packaging scripts
build_app_tauri.sh: macOS.appbundle for Tauriaw-tauri.iss: Windows Inno Setup — different AppId and install dir to avoid collision with aw-qt (addresses Erik's review comment on Replace aw-qt with aw-tauri #1163)move-to-aw-modules.sh: Linux module discovery helper (usesrsync -a, proper line continuation)README.txt: End-user instructions for LinuxNew submodules
aw-tauri(ActivityWatch/aw-tauri)awatcher(2e3s/awatcher — used on Linux for Wayland support)Review comments addressed from #1163
AppId,AppName="ActivityWatch (Tauri)",DefaultDirName=ActivityWatch-Tauriaw-tauri/src-tauri/icons/icon.pngfor Tauri buildsrsync -aconsistentlyTest plan
build.yml) still passes with the modernized runnersbuild-tauri.yml) builds on all platforms.appbundle creationImportant
Adds Tauri-based CI builds and packaging scripts for ActivityWatch, alongside existing Qt builds, with updates to workflows, Makefile, and submodules.
build-tauri.ymlfor Tauri builds on multiple OS (Ubuntu, Windows, macOS).build.ymlto modernize runners and fix macOS Python setup.TAURI_BUILDflag to switch submodules and build logic.build_app_tauri.sh,aw-tauri.iss,move-to-aw-modules.shfor Tauri packaging.package-all.shto handle Tauri-specific packaging.aw-tauriandawatcherfor Tauri and Wayland support.This description was created by
for 8870044. You can customize this summary. It will automatically update as commits are pushed.