Commit 1867f23
authored
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 contents1 parent 485ac8c commit 1867f23
1 file changed
+477
-0
lines changed
0 commit comments