Skip to content

Commit 1867f23

Browse files
feat(infra): desktop aio build workflow pipeline (hoppscotch#5005)
* feat(infra): desktop aio build workflow This PR adds an actions workflow pipeline for building and packaging the self-hosted Hoppscotch Desktop app across different platforms. Platform supported right now are - Windows x86_64 (`msi`) - MacOS x64 and ARM64 (`dmg`) - Linux x86_64 (`.deb`, `AppImage`) The workflow can be triggered either automatically when a new release is created or manually through workflow dispatch. Manual trigger has a few customizations like - build version, - to support building a different version of the app from prior releases - repository to checkout, - to support building from a different source - branch or tag to build from, - to support building a different release - release notes, - these are mainly for the updater manifest - custom environment file content, and - to customize instance target - an option to disable code signing - this is self explanatory - this doesn't disable updater signing Closes HFE-800 For Linux builds, the workflow generates packages using Ubuntu 24.04, yet it still contains some specific libraries ``` libwebkit2gtk-4.1-0=2.44.0-2 \ libwebkit2gtk-4.1-dev=2.44.0-2 \ libjavascriptcoregtk-4.1-0=2.44.0-2 \ libjavascriptcoregtk-4.1-dev=2.44.0-2 \ gir1.2-javascriptcoregtk-4.1=2.44.0-2 \ gir1.2-webkit2-4.1=2.44.0-2; ``` For more information, see hoppscotch#4880 ``` Could not create default EGL display: EGL_BAD_PARAMETER. Aborting... ``` Also see: tauri-apps/tauri#8588 https://bugs.webkit.org/show_bug.cgi?id=180739 https://bugs.webkit.org/show_bug.cgi?id=165246 tauri-apps/tauri#8535 Also `code-signing-cli` is often installed directly from source bin, since installing it from `crates.io` sometimes breaks the CI: ``` error[E0599]: no method named `fetch_mode_no_cors` found for struct `reqwest::RequestBuilder` in the current scope --> C:\Users\runneradmin\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\reqwest-middleware-0.4.1\src\client.rs:532:31 | 532 | inner: self.inner.fetch_mode_no_cors(), | ^^^^^^^^^^^^^^^^^^ method not found in `RequestBuilder` ``` The build dependency management is a bit complex but it should handles all necessary system dependencies and builds for the web app first before bundling it into the desktop app using `webapp-bundler`. On Windows, the workflow uses Microsoft Azure code signing integration (when enabled). For macOS, the workflow builds separate packages for both Intel (x64) and Apple Silicon (ARM64). It similar to Windows workflow, implements Apple's code signing and notarization (when credentials are provided). The final step generates an update manifest that includes info about all built packages, their signatures, and download URLs. This manifest is used by the app's auto-updater. * fix(infra): temporarily disable release workflow * fix(infra): use repo secret for env var contents
1 parent 485ac8c commit 1867f23

File tree

1 file changed

+477
-0
lines changed

1 file changed

+477
-0
lines changed

0 commit comments

Comments
 (0)