Skip to content

Conversation

@michaelneale
Copy link
Collaborator

@michaelneale michaelneale commented Jun 9, 2025

This PR adds a new GitHub workflow to build Linux desktop packages (.deb and .rpm files) for the Electron app.

Changes

  • New workflow
  • Builds both .deb and .rpm packages using existing Electron Forge configuration
  • Runs on Ubuntu with necessary system dependencies
  • Uploads packages as downloadable artifacts

Testing

This workflow is currently configured to run on this specific branch for testing. Once verified, it can be updated to run on appropriate triggers.

The workflow should:

  1. Build the goosed Rust binary
  2. Copy it to the Electron app
  3. Use Electron Forge to create .deb and .rpm packages
  4. Upload them as artifacts that can be downloaded from the GitHub Actions page

EDIT: this is to test out building of linux desktop packages, once ready, it will be part of release on main
you can find rpm and deb files here: https://github.com/block/goose/actions/runs/15526901766?pr=2826

- Creates new workflow that builds both .deb and .rpm packages using Electron Forge
- Runs on pushes to micn/linux-desktop-app branch and PRs affecting desktop code
- Uses Ubuntu runner with necessary system dependencies
- Builds goosed binary and copies to Electron app
- Uploads packages as downloadable artifacts
- Includes debugging output for troubleshooting
Ubuntu 24.04 (Noble) replaced libasound2 with libasound2t64
The lance-encoding crate requires protoc to build
@ATrueLight4
Copy link
Contributor

I downloaded the .zip for for Debian
Installed it on an Ubuntu desktop
Ran it and clicked on the Tell me what you can do, responded as expected

- Convert bundle-desktop-linux.yml to reusable workflow
- Add Linux builds to release.yml and canary.yml workflows
- Add fake-release.yml to test integration
- Linux packages (.deb/.rpm) will now be included in releases
- Add cleanup step to remove build artifacts after Rust build
- This should prevent 'No space left on device' error during Electron build
- Remove package-lock.json and node_modules before install
- Use npm install instead of npm ci
- Clear npm cache to resolve rollup/vite module loading issues
- This addresses the @rollup/rollup-linux-x64-gnu and vite ES module errors
- Pin to 9d7e65c320fdb52dcd45ffaa68deb6c02c8754d9 (v1)
- Consistent with other workflows that pin actions to specific SHAs
- Pre-build cleanup: Remove dotnet, android, ghc, boost directories
- Post-Rust cleanup: Remove all build artifacts except binary
- Final cleanup: Remove entire target directory after copying binary
- Clean cargo registry and git caches
- This should prevent disk space issues during Electron build
Copy link
Contributor

@kalvinnchau kalvinnchau left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

one minor comment, but LGTM!! 🔥

@michaelneale
Copy link
Collaborator Author

merging now - if this causes a problem with next release - can remove it from release.yml and canary.yml from the list of things to build

@michaelneale michaelneale merged commit 2050fc1 into main Jun 11, 2025
7 checks passed
@michaelneale michaelneale deleted the micn/linux-desktop-app branch June 11, 2025 04:48
opdich added a commit to opdich/goose that referenced this pull request Jun 11, 2025
* upstream/main: (26 commits)
  docs: add CLI token usage (block#2857)
  Add Linux desktop package building workflow (block#2826)
  fix: large sessions summarize/truncate  (block#2846)
  Fix: Adding dark mode support for recipe modal (block#2853)
  fix just (block#2849)
  add temporal service to builds. (block#2842)
  fix: added url encoding and decoding for goose recipe url (block#2845)
  claude 4 listing (block#2843)
  fix: Use the existing spinner in interactive mode (block#2829)
  chore(release): release version 1.0.27 (block#2844)
  Revert "Mnovich/temporal scheduler (block#2745)" (block#2839)
  chore(release): release version 1.0.26 (block#2833)
  Removed ui-v2 directory and updated project to use node in hermit and readme (block#2831)
  Mnovich/temporal scheduler (block#2745)
  fix: intel builds (block#2832)
  chore(release): release version 1.0.25 (block#2811)
  Nostrbook MCP is now on npm (block#2816)
  Update macOS install guide with Homebrew instructions (block#2823)
  remember window position (block#2808)
  feat(ui): put the scheduler behind an alpha (block#2810)
  ...
laanak08 added a commit that referenced this pull request Jun 16, 2025
* main:
  docs: add CLI token usage (#2857)
  Add Linux desktop package building workflow (#2826)
  fix: large sessions summarize/truncate  (#2846)
  Fix: Adding dark mode support for recipe modal (#2853)
  fix just (#2849)
  add temporal service to builds. (#2842)
  fix: added url encoding and decoding for goose recipe url (#2845)
  claude 4 listing (#2843)
  fix: Use the existing spinner in interactive mode (#2829)
  chore(release): release version 1.0.27 (#2844)
  Revert "Mnovich/temporal scheduler (#2745)" (#2839)
  chore(release): release version 1.0.26 (#2833)
  Removed ui-v2 directory and updated project to use node in hermit and readme (#2831)
  Mnovich/temporal scheduler (#2745)
  fix: intel builds (#2832)
  chore(release): release version 1.0.25 (#2811)
s-soroosh pushed a commit to s-soroosh/goose that referenced this pull request Jul 18, 2025
cbruyndoncx pushed a commit to cbruyndoncx/goose that referenced this pull request Jul 20, 2025
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.

4 participants