From ae06459eea693de08f97d5f3de0fcd190059809f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADtor=20Vasconcellos?= Date: Tue, 4 Jun 2024 20:19:41 -0300 Subject: [PATCH] Package & distribute frontend bundle when doing releases for Linux (#2500) * Package & distribute frontend bundle when doing releases for Linux * Only check for tar.xz frontend bundle * debug * Fix sd-desktop --- .gitattributes | 1 + .github/actions/publish-artifacts/index.ts | 26 +++++++++++++----- .../actions/publish-artifacts/package.json | 2 +- .github/workflows/release.yml | 10 ++++++- pnpm-lock.yaml | Bin 1024296 -> 1028286 bytes scripts/fix-deb.sh | 11 ++++++++ 6 files changed, 41 insertions(+), 9 deletions(-) diff --git a/.gitattributes b/.gitattributes index d16251ec2..0de51b6d1 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,2 +1,3 @@ pnpm-lock.yaml -diff package-lock.json -diff +.github/actions/publish-artifacts/dist/index.js -diff diff --git a/.github/actions/publish-artifacts/index.ts b/.github/actions/publish-artifacts/index.ts index 6e0b0406a..1896f8247 100644 --- a/.github/actions/publish-artifacts/index.ts +++ b/.github/actions/publish-artifacts/index.ts @@ -2,6 +2,7 @@ import client from '@actions/artifact'; import * as core from '@actions/core'; import * as glob from '@actions/glob'; import * as io from '@actions/io'; +import { exists } from '@actions/io/lib/io-util'; type OS = 'darwin' | 'windows' | 'linux'; type Arch = 'x64' | 'arm64'; @@ -43,13 +44,24 @@ const PROFILE = core.getInput('profile'); const BUNDLE_DIR = `target/${TARGET}/${PROFILE}/bundle`; const ARTIFACTS_DIR = '.artifacts'; const ARTIFACT_BASE = `Spacedrive-${OS}-${ARCH}`; +const FRONT_END_BUNDLE = 'apps/desktop/dist.tar.xz'; const UPDATER_ARTIFACT_NAME = `Spacedrive-Updater-${OS}-${ARCH}`; +const FRONTEND_ARCHIVE_NAME = `Spacedrive-frontend-${OS}-${ARCH}`; async function globFiles(pattern: string) { const globber = await glob.create(pattern); return await globber.glob(); } +async function uploadFrontend() { + if (!(await exists(FRONT_END_BUNDLE))) { + console.error(`Frontend archive not found`); + return; + } + + await client.uploadArtifact(FRONTEND_ARCHIVE_NAME, [FRONT_END_BUNDLE], 'apps/desktop'); +} + async function uploadUpdater(updater: BuildTarget['updater']) { if (!updater) return; const { bundle, bundleExt, archiveExt } = updater; @@ -57,7 +69,7 @@ async function uploadUpdater(updater: BuildTarget['updater']) { const files = await globFiles(`${BUNDLE_DIR}/${bundle}/*.${fullExt}*`); const updaterPath = files.find((file) => file.endsWith(fullExt)); - if (!updaterPath) return console.error(`Updater path not found. Files: ${files}`); + if (!updaterPath) throw new Error(`Updater path not found. Files: ${files}`); const artifactPath = `${ARTIFACTS_DIR}/${UPDATER_ARTIFACT_NAME}.${archiveExt}`; @@ -76,7 +88,7 @@ async function uploadStandalone({ bundle, ext }: TargetConfig) { const files = await globFiles(`${BUNDLE_DIR}/${bundle}/*.${ext}*`); const standalonePath = files.find((file) => file.endsWith(ext)); - if (!standalonePath) return console.error(`Standalone path not found. Files: ${files}`); + if (!standalonePath) throw new Error(`Standalone path not found. Files: ${files}`); const artifactName = `${ARTIFACT_BASE}.${ext}`; const artifactPath = `${ARTIFACTS_DIR}/${artifactName}`; @@ -90,10 +102,10 @@ async function run() { const { updater, standalone } = OS_TARGETS[OS]; - await uploadUpdater(updater); - - for (const config of standalone) { - await uploadStandalone(config); - } + await Promise.all([ + uploadUpdater(updater), + uploadFrontend(), + ...standalone.map((config) => uploadStandalone(config)) + ]); } run(); diff --git a/.github/actions/publish-artifacts/package.json b/.github/actions/publish-artifacts/package.json index cbfb85c8b..124890dd7 100644 --- a/.github/actions/publish-artifacts/package.json +++ b/.github/actions/publish-artifacts/package.json @@ -7,7 +7,7 @@ "lint": "eslint . --cache" }, "dependencies": { - "@actions/artifact": "^2.1.3", + "@actions/artifact": "^2.1.7", "@actions/core": "^1.10.1", "@actions/glob": "^0.4.0", "@actions/io": "^1.1.3" diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 6dedb68d9..0b91ca579 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,8 +1,10 @@ name: Release on: + pull_request: + paths: + - '.github/workflows/release.yml' workflow_dispatch: -# NOTE: For Linux builds, we can only build with Ubuntu. It should be the oldest base system we intend to support. See PR-759 & https://tauri.app/v1/guides/building/linux for reference. # From: https://github.com/rust-lang/rust-analyzer/blob/master/.github/workflows/release.yaml#L13-L21 env: @@ -112,6 +114,12 @@ jobs: APPLE_API_KEY: ${{ secrets.APPLE_API_KEY }} SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} + - name: Package frontend + if: ${{ runner.os == 'Linux' }} + run: | + set -eux + XZ_OPT='-T0 -7' tar -cJf apps/desktop/dist.tar.xz -C apps/desktop/dist . + - name: Publish Artifacts uses: ./.github/actions/publish-artifacts with: diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a3f6c67fe89d308b4b726b51e2270c08c15ec0c7..f6f28c81e58373213106ab473c28b2d19e71abd7 100644 GIT binary patch delta 6707 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 K=zwCU=>GsB=PnTd delta 6037 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