ci(release): Desktop release workflow failure in Docker runner (missing system dependencies & toolchains) #27

Closed
opened 2026-08-25 15:49:34 +00:00 by gabogg · 1 comment
Owner

Problem Description

The release-desktop workflow in .forgejo/workflows/release.yml failed when building the Desktop Client on the Forgejo Actions ubuntu:24.04 Docker runner upon pushing tag desktop-v1.13.0.


Root Cause Analysis

1. Missing Tauri v2 Linux System Dependencies

The desktop/src-tauri crate depends on soup3-sys and javascriptcore-rs-sys (via Tauri v2 WebKit integration). In Ubuntu 24.04, libwebkit2gtk-4.1-dev alone does not provide all required .pc pkg-config files.

  • Missing pkg-config files: libsoup-3.0.pc, javascriptcoregtk-4.1.pc.
  • Compilation error:
    pkg-config exited with status code 1
    > PKG_CONFIG_ALLOW_SYSTEM_CFLAGS=1 pkg-config --libs --cflags libsoup-3.0 'libsoup-3.0 >= 3.0'
    Package 'libsoup-3.0' not found
    The system library `libsoup-3.0` required by crate `soup3-sys` was not found.
    

2. Missing rustup in Ubuntu APT Package

The workflow runs:

apt-get install -y cargo rustc
rustup target add x86_64-pc-windows-gnu

In Debian/Ubuntu, cargo and rustc packages do not include the rustup toolchain manager. The command rustup is not found, preventing the Windows target (x86_64-pc-windows-gnu) from being installed and compiled.

3. AppImage / FUSE Container Environment

Building AppImage packages inside non-privileged Docker containers fails unless squashfs-tools is installed and APPIMAGE_EXTRACT_AND_RUN=1 is set in the environment.


  1. Update APT dependencies in .forgejo/workflows/release.yml:

    apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \
      libwebkit2gtk-4.1-dev \
      libsoup-3.0-dev \
      libjavascriptcoregtk-4.1-dev \
      libgtk-3-dev \
      libayatana-appindicator3-dev \
      librsvg2-dev \
      libxdo-dev \
      libssl-dev \
      build-essential \
      pkg-config \
      file \
      patchelf \
      rpm \
      squashfs-tools \
      mingw-w64 \
      nsis \
      curl \
      git
    
  2. Install Rust via official rustup installer & Node 22 via NodeSource:

    # Install Rustup
    curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain stable --target x86_64-unknown-linux-gnu x86_64-pc-windows-gnu
    . "$HOME/.cargo/env"
    
    # Install Node.js 22 LTS
    curl -fsSL https://deb.nodesource.com/setup_22.x | bash -
    apt-get install -y nodejs
    
  3. Set AppImage environment flags:

    env:
      APPIMAGE_EXTRACT_AND_RUN: 1
      NO_STRIP: "true"
    
  4. Verify Windows build:
    Compile with cargo build --manifest-path desktop/src-tauri/Cargo.toml --target x86_64-pc-windows-gnu --release ensuring dependencies and executable output to dist-release/inventory-manager-desktop.exe.

  5. Re-trigger release:
    Delete and re-push the desktop-v1.13.0 tag (or bump to next patch) to verify the workflow execution on Forgejo Actions.

## Problem Description The `release-desktop` workflow in [`.forgejo/workflows/release.yml`](file:///.forgejo/workflows/release.yml) failed when building the Desktop Client on the Forgejo Actions `ubuntu:24.04` Docker runner upon pushing tag `desktop-v1.13.0`. --- ## Root Cause Analysis ### 1. Missing Tauri v2 Linux System Dependencies The `desktop/src-tauri` crate depends on `soup3-sys` and `javascriptcore-rs-sys` (via Tauri v2 WebKit integration). In Ubuntu 24.04, `libwebkit2gtk-4.1-dev` alone does not provide all required `.pc` pkg-config files. - **Missing pkg-config files**: `libsoup-3.0.pc`, `javascriptcoregtk-4.1.pc`. - **Compilation error**: ``` pkg-config exited with status code 1 > PKG_CONFIG_ALLOW_SYSTEM_CFLAGS=1 pkg-config --libs --cflags libsoup-3.0 'libsoup-3.0 >= 3.0' Package 'libsoup-3.0' not found The system library `libsoup-3.0` required by crate `soup3-sys` was not found. ``` ### 2. Missing `rustup` in Ubuntu APT Package The workflow runs: ```bash apt-get install -y cargo rustc rustup target add x86_64-pc-windows-gnu ``` In Debian/Ubuntu, `cargo` and `rustc` packages do not include the `rustup` toolchain manager. The command `rustup` is not found, preventing the Windows target (`x86_64-pc-windows-gnu`) from being installed and compiled. ### 3. AppImage / FUSE Container Environment Building AppImage packages inside non-privileged Docker containers fails unless `squashfs-tools` is installed and `APPIMAGE_EXTRACT_AND_RUN=1` is set in the environment. --- ## Action Items & Recommended Fixes 1. **Update APT dependencies in `.forgejo/workflows/release.yml`**: ```bash apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \ libwebkit2gtk-4.1-dev \ libsoup-3.0-dev \ libjavascriptcoregtk-4.1-dev \ libgtk-3-dev \ libayatana-appindicator3-dev \ librsvg2-dev \ libxdo-dev \ libssl-dev \ build-essential \ pkg-config \ file \ patchelf \ rpm \ squashfs-tools \ mingw-w64 \ nsis \ curl \ git ``` 2. **Install Rust via official `rustup` installer & Node 22 via NodeSource**: ```bash # Install Rustup curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain stable --target x86_64-unknown-linux-gnu x86_64-pc-windows-gnu . "$HOME/.cargo/env" # Install Node.js 22 LTS curl -fsSL https://deb.nodesource.com/setup_22.x | bash - apt-get install -y nodejs ``` 3. **Set AppImage environment flags**: ```yaml env: APPIMAGE_EXTRACT_AND_RUN: 1 NO_STRIP: "true" ``` 4. **Verify Windows build**: Compile with `cargo build --manifest-path desktop/src-tauri/Cargo.toml --target x86_64-pc-windows-gnu --release` ensuring dependencies and executable output to `dist-release/inventory-manager-desktop.exe`. 5. **Re-trigger release**: Delete and re-push the `desktop-v1.13.0` tag (or bump to next patch) to verify the workflow execution on Forgejo Actions.
Author
Owner

Resolution Implemented in PR #28

All root causes identified in this issue have been resolved:

  1. Added Missing System Libraries:

    • Added libsoup-3.0-dev, libjavascriptcoregtk-4.1-dev, libgtk-3-dev, and squashfs-tools to the APT package list in .forgejo/workflows/release.yml.
  2. Installed Official Rustup Toolchain & Node.js 22 LTS:

    • Replaced distro cargo/rustc with official rustup installer configuring x86_64-unknown-linux-gnu and x86_64-pc-windows-gnu targets.
    • Installed Node.js 22 LTS via NodeSource.
  3. Configured AppImage Environment Variables:

    • Set APPIMAGE_EXTRACT_AND_RUN=1 and NO_STRIP=true in the container workflow environment.
  4. Branches Updated:

    • Hotfix pushed and synced to dev and open for master in PR #28 (ready to merge upon approval).
## Resolution Implemented in [PR #28](https://git.gaboggamer.online/PCivil/inventory-system/pulls/28) All root causes identified in this issue have been resolved: 1. **Added Missing System Libraries**: - Added `libsoup-3.0-dev`, `libjavascriptcoregtk-4.1-dev`, `libgtk-3-dev`, and `squashfs-tools` to the APT package list in `.forgejo/workflows/release.yml`. 2. **Installed Official Rustup Toolchain & Node.js 22 LTS**: - Replaced distro `cargo/rustc` with official `rustup` installer configuring `x86_64-unknown-linux-gnu` and `x86_64-pc-windows-gnu` targets. - Installed Node.js 22 LTS via NodeSource. 3. **Configured AppImage Environment Variables**: - Set `APPIMAGE_EXTRACT_AND_RUN=1` and `NO_STRIP=true` in the container workflow environment. 4. **Branches Updated**: - Hotfix pushed and synced to `dev` and open for `master` in **[PR #28](https://git.gaboggamer.online/PCivil/inventory-system/pulls/28)** (ready to merge upon approval).
Sign in to join this conversation.
No labels
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
PCivil/inventory-system#27
No description provided.