Skip to content

ci(build-tauri): expose Linux AppImage and deb as standalone release artifacts#1301

Closed
TimeToBuildBob wants to merge 1 commit into
ActivityWatch:masterfrom
TimeToBuildBob:fix/add-linux-appimage-artifacts
Closed

ci(build-tauri): expose Linux AppImage and deb as standalone release artifacts#1301
TimeToBuildBob wants to merge 1 commit into
ActivityWatch:masterfrom
TimeToBuildBob:fix/add-linux-appimage-artifacts

Conversation

@TimeToBuildBob
Copy link
Copy Markdown
Contributor

Fixes #1300.

Problem

After make package, aw-tauri already builds an .AppImage and .deb — these land inside dist/activitywatch/aw-tauri/ (and end up zipped inside the .zip release). But the Upload step only picks up files matching dist/activitywatch-*.*, so the AppImage and deb were never exposed as standalone downloadable artifacts in CI or releases.

The macOS workflow already has a dedicated "Package dmg" step that moves the .dmg to dist/ with the right name. Linux had no equivalent.

Fix

Add a Linux-specific step (mirroring "Package dmg") that copies the AppImage and deb out to dist/ using the standard naming convention:

dist/activitywatch-tauri-<version>-linux-<arch>.AppImage
dist/activitywatch-tauri-<version>-linux-<arch>.deb

These then get picked up by the existing Upload packages step and included in releases.

Test plan

  • CI on this PR shows both activitywatch-tauri-*-linux-x86_64.AppImage and .deb in the uploaded artifacts for the ubuntu runners
  • ARM build similarly produces aarch64 variants

…artifacts

After `make package`, aw-tauri's package target already builds AppImage and
deb alongside the zip — they land in dist/activitywatch/aw-tauri/ but weren't
exposed as standalone files matching the Upload step's dist/activitywatch-*.*
glob.

Add a Linux-specific step (mirroring the existing macOS 'Package dmg' step)
that copies the AppImage and deb out to dist/ with the standard naming
convention.

Closes ActivityWatch#1300
@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps Bot commented May 9, 2026

Greptile Summary

This PR adds a Linux-specific CI step that copies the aw-tauri-produced .AppImage and .deb files from dist/activitywatch/aw-tauri/ into dist/ under the standard activitywatch-tauri-<version>-linux-<arch> naming convention, mirroring what the existing "Package dmg" step does for macOS.

  • The new step runs after make package and before "Upload packages", ensuring both Linux artifact types are picked up by the existing dist/activitywatch-*.* glob and exposed as standalone downloadable artifacts in CI and releases.
  • find ... | head -1 is used for discovery; if no AppImage is found a warning is printed, but if no .deb is found the block exits silently — a minor inconsistency compared to the AppImage branch.
  • The step never exits non-zero when artifacts are absent, so a regression in make package that stops producing these files would not be caught by CI.

Confidence Score: 4/5

Safe to merge; the change is additive and only affects the Linux packaging step — no existing behavior is modified.

The copy logic is straightforward and mirrors the existing macOS dmg step. The two nits (missing else-branch warning for deb, no non-zero exit when artifacts are absent) are easy to address but won't break current builds or releases.

.github/workflows/build-tauri.yml — specifically the deb discovery block and the overall step exit behavior.

Important Files Changed

Filename Overview
.github/workflows/build-tauri.yml Adds a Linux-only step that copies the aw-tauri-produced AppImage and .deb into dist/ so the existing Upload step exposes them as standalone artifacts. One minor asymmetry: the .deb block has no else-branch warning when no file is found, unlike the AppImage block.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[Package step\nmake package] --> B{runner.os}
    B -- macOS --> C[Package dmg step\nbuild + sign + notarize\nmv to dist/activitywatch-tauri-VERSION-macos-ARCH.dmg]
    B -- Linux --> D[Package AppImage and deb step\nfind dist/activitywatch/aw-tauri/]
    B -- Windows --> E[no extra step]
    D --> F{AppImage found?}
    F -- yes --> G[cp to dist/activitywatch-tauri-VERSION-linux-ARCH.AppImage]
    F -- no --> H[echo Warning, continue]
    D --> I{deb found?}
    I -- yes --> J[cp to dist/activitywatch-tauri-VERSION-linux-ARCH.deb]
    I -- no --> K[silent, no warning]
    G --> L[Upload packages\ndist/activitywatch-*.*]
    J --> L
    H --> L
    C --> L
    E --> L
    K --> L
Loading

Reviews (1): Last reviewed commit: "ci(build-tauri): expose Linux AppImage a..." | Re-trigger Greptile

Comment thread .github/workflows/build-tauri.yml
Comment thread .github/workflows/build-tauri.yml
@TimeToBuildBob
Copy link
Copy Markdown
Contributor Author

Superseded by #1302, which also handles .rpm and uses nullglob for cleaner no-op behavior when bundles are absent.

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.

Missing aw-tauri binary in linux pre-release.

1 participant