From fbd17414e9b017178bea9623004ff72254f9ad5c Mon Sep 17 00:00:00 2001 From: Abhishek Gawade Date: Sun, 3 May 2026 01:29:19 +0530 Subject: [PATCH] Add Ubuntu deb release artifact --- .github/workflows/release.yml | 8 ++++++++ docs/release.md | 4 +++- package.json | 1 + scripts/build-desktop-artifact.ts | 4 ++-- 4 files changed, 14 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 4409c54c8e..fbce35dd3c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -194,6 +194,11 @@ jobs: platform: linux target: AppImage arch: x64 + - label: Ubuntu .deb x64 + runner: blacksmith-32vcpu-ubuntu-2404 + platform: linux + target: deb + arch: x64 - label: Windows x64 runner: blacksmith-32vcpu-windows-2025 platform: win @@ -318,6 +323,7 @@ jobs: "release/*.dmg" \ "release/*.zip" \ "release/*.AppImage" \ + "release/*.deb" \ "release/*.exe" \ "release/*.blockmap" \ "release/*.yml"; do @@ -485,6 +491,7 @@ jobs: release-assets/*.dmg release-assets/*.zip release-assets/*.AppImage + release-assets/*.deb release-assets/*.exe release-assets/*.blockmap release-assets/*.yml @@ -505,6 +512,7 @@ jobs: release-assets/*.dmg release-assets/*.zip release-assets/*.AppImage + release-assets/*.deb release-assets/*.exe release-assets/*.blockmap release-assets/*.yml diff --git a/docs/release.md b/docs/release.md index fc17d3e39d..c7c55f5784 100644 --- a/docs/release.md +++ b/docs/release.md @@ -10,10 +10,11 @@ This document covers the unified release workflow for stable and nightly desktop - scheduled nightly at `09:00 UTC` - manual `workflow_dispatch` for either channel - Runs quality gates first: lint, typecheck, test. -- Builds four artifacts in parallel for both channels: +- Builds five artifacts in parallel for both channels: - macOS `arm64` DMG - macOS `x64` DMG - Linux `x64` AppImage + - Ubuntu `x64` `.deb` - Windows `x64` NSIS installer - Publishes one GitHub Release with all produced files. - Stable tags with a suffix after `X.Y.Z` (for example `1.2.3-alpha.1`) are published as GitHub prereleases. @@ -58,6 +59,7 @@ This document covers the unified release workflow for stable and nightly desktop - the app forwards it as an `Authorization: Bearer ` request header for updater HTTP calls. - Required release assets for updater: - platform installers (`.exe`, `.dmg`, `.AppImage`, plus macOS `.zip` for Squirrel.Mac update payloads) + - Ubuntu `.deb` packages are published for direct installation, but Linux auto-update metadata still targets the AppImage build only. - channel metadata: `latest*.yml` for stable releases, `nightly*.yml` for nightly releases - `*.blockmap` files (used for differential downloads) - macOS metadata note: diff --git a/package.json b/package.json index 5ed5a80861..5cec178a53 100644 --- a/package.json +++ b/package.json @@ -50,6 +50,7 @@ "dist:desktop:dmg:arm64": "node scripts/build-desktop-artifact.ts --platform mac --target dmg --arch arm64", "dist:desktop:dmg:x64": "node scripts/build-desktop-artifact.ts --platform mac --target dmg --arch x64", "dist:desktop:linux": "node scripts/build-desktop-artifact.ts --platform linux --target AppImage --arch x64", + "dist:desktop:deb": "node scripts/build-desktop-artifact.ts --platform linux --target deb --arch x64", "dist:desktop:win": "node scripts/build-desktop-artifact.ts --platform win --target nsis", "dist:desktop:win:arm64": "node scripts/build-desktop-artifact.ts --platform win --target nsis --arch arm64", "dist:desktop:win:x64": "node scripts/build-desktop-artifact.ts --platform win --target nsis --arch x64", diff --git a/scripts/build-desktop-artifact.ts b/scripts/build-desktop-artifact.ts index 74e8bed0cb..db9cd80e97 100644 --- a/scripts/build-desktop-artifact.ts +++ b/scripts/build-desktop-artifact.ts @@ -774,7 +774,7 @@ const buildDesktopArtifact = Effect.fn("buildDesktopArtifact")(function* ( options.verbose, ); - // electron-builder is filtering out stageResourcesDir directory in the AppImage for production + // electron-builder filters this directory out of Linux bundles, so stage a copy that packaged builds can read. yield* fs.copy(stageResourcesDir, path.join(stageAppDir, "apps/desktop/prod-resources")); const stagePackageJson: StagePackageJson = { @@ -896,7 +896,7 @@ const buildDesktopArtifactCli = Command.make("build-desktop-artifact", { ), target: Flag.string("target").pipe( Flag.withDescription( - "Artifact target, for example dmg/AppImage/nsis (env: T3CODE_DESKTOP_TARGET).", + "Artifact target, for example dmg/AppImage/deb/nsis (env: T3CODE_DESKTOP_TARGET).", ), Flag.optional, ),