[PR #5005] [MERGED] feat(infra): desktop aio build workflow pipeline #5014

Closed
opened 2026-03-17 02:30:01 +03:00 by kerem · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/hoppscotch/hoppscotch/pull/5005
Author: @CuriousCorrelation
Created: 4/17/2025
Status: Merged
Merged: 4/25/2025
Merged by: @AndrewBastin

Base: nextHead: feat-desktop-build-pipeline


📝 Commits (3)

  • 7c45e98 feat(infra): desktop aio build workflow
  • 28712f1 fix(infra): temporarily disable release workflow
  • 6845594 fix(infra): use repo secret for env var contents

📊 Changes

1 file changed (+477 additions, -0 deletions)

View changed files

.github/workflows/build-hoppscotch-desktop.yml (+477 -0)

📄 Description

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.

Dispatch Runners
image image
Artifacts Files
image image

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
    • from secrets.ENV_FILE_CONTENT (repo secrets)
    • to customize instance target
  • an option to disable code signing
    • this is self explanatory
    • this doesn't disable updater signing

Closes HFE-800

Notes to reviewers

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 https://github.com/hoppscotch/hoppscotch/issues/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.

You can checkout the latest builds with this workflow from the internal desktop ci repo.


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/hoppscotch/hoppscotch/pull/5005 **Author:** [@CuriousCorrelation](https://github.com/CuriousCorrelation) **Created:** 4/17/2025 **Status:** ✅ Merged **Merged:** 4/25/2025 **Merged by:** [@AndrewBastin](https://github.com/AndrewBastin) **Base:** `next` ← **Head:** `feat-desktop-build-pipeline` --- ### 📝 Commits (3) - [`7c45e98`](https://github.com/hoppscotch/hoppscotch/commit/7c45e9899b78eecd3f1a40d33633990d3bca0fd0) feat(infra): desktop aio build workflow - [`28712f1`](https://github.com/hoppscotch/hoppscotch/commit/28712f12310627b21e43bfed444fe9a84a3256d5) fix(infra): temporarily disable release workflow - [`6845594`](https://github.com/hoppscotch/hoppscotch/commit/6845594caf227b1ee0f1215f849473f78642244e) fix(infra): use repo secret for env var contents ### 📊 Changes **1 file changed** (+477 additions, -0 deletions) <details> <summary>View changed files</summary> ➕ `.github/workflows/build-hoppscotch-desktop.yml` (+477 -0) </details> ### 📄 Description 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. | Dispatch | Runners | | --- | --- | | ![image](https://github.com/user-attachments/assets/f259f8fa-d429-48f7-b366-5c350b9b6255) | ![image](https://github.com/user-attachments/assets/7b007f6f-84f8-4773-925c-03238b8e4415) | | Artifacts | Files | | --- | --- | | ![image](https://github.com/user-attachments/assets/e3020032-db5b-4544-af70-134ac8bba274) | ![image](https://github.com/user-attachments/assets/d5e9eb56-cc96-44c0-92ed-7f014fbb77f8) | 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 - from `secrets.ENV_FILE_CONTENT` (repo secrets) - to customize instance target - an option to disable code signing - this is self explanatory - this doesn't disable updater signing Closes HFE-800 ### Notes to reviewers 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 https://github.com/hoppscotch/hoppscotch/issues/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. You can checkout the latest builds with this workflow from the internal desktop ci repo. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
kerem 2026-03-17 02:30:01 +03:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/hoppscotch#5014
No description provided.