From 3a8f301043986283d336517e41039904eed791f5 Mon Sep 17 00:00:00 2001 From: Simeon Radivoev Date: Sun, 8 Feb 2026 22:03:19 +0200 Subject: [PATCH] build: separated github and forgejo build workflows --- .github/workflows/build.yml | 26 +++++++++---------------- scripts/package-bun.ts | 39 ++++++------------------------------- 2 files changed, 15 insertions(+), 50 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 2d97bef..d29feb6 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -7,7 +7,10 @@ on: jobs: build: - runs-on: docker + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [windows-latest, ubuntu-latest] container: image: node:20 steps: @@ -20,30 +23,19 @@ jobs: apt-get update apt-get install -y unzip libstdc++6 libnss3 libatk1.0-0 libatk-bridge2.0-0 libcups2 libdrm2 libxkbcommon0 libxcomposite1 libxdamage1 libxrandr2 libgbm1 libasound2 - - name: Manual Bun Install - run: | - # Download and install via official script - curl -fsSL https://bun.sh/install | bash - - # Manually add Bun to the PATH for subsequent steps - echo "BUN_INSTALL=$HOME/.bun" >> $GITHUB_ENV - echo "$HOME/.bun/bin" >> $GITHUB_PATH - - # Force execution permissions just in case - chmod +x $HOME/.bun/bin/bun - - # Verify it works immediately - $HOME/.bun/bin/bun --version + - name: Bun Install + uses: oven-sh/setup-bun@v2 - name: Install dependencies run: bun install --frozen-lockfile - name: Build Canary run: bun run package:auto-prod + env: + BUILD_DIR: ./build/${{ runner.os }} - name: Upload Artifact uses: actions/upload-artifact@v3 with: name: canary-build - path: build/ - retention-days: 7 + path: build/${{ runner.os }} diff --git a/scripts/package-bun.ts b/scripts/package-bun.ts index fba4a8f..4fefbf7 100644 --- a/scripts/package-bun.ts +++ b/scripts/package-bun.ts @@ -1,35 +1,8 @@ -import { PluginBuilder } from "bun"; import fs from "node:fs/promises"; -import path, { resolve, sep } from "node:path"; +import path, { } from "node:path"; import os from "node:os"; -import appPackage from '../package.json'; -const plugin = { - name: "dist-absolute-filter", - setup (build: PluginBuilder) - { - build.onStart(async () => - { - if (await fs.exists('./build')) - { - await fs.rm('./build', { recursive: true }); - } - }); - // 1. Intercept all resolutions to check their REAL path - build.onResolve({ filter: /.*/, namespace: 'file' }, (args) => - { - if (args.path.startsWith(`.${sep}dist`)) - { - return { path: resolve(args.resolveDir, args.path), namespace: "dist_assets" }; - } - }); - build.onLoad({ filter: /.*/, namespace: 'dist_assets' }, async (args) => - { - console.log(args.path); - return { contents: await Bun.file(args.path).bytes(), loader: 'file' }; - }); - }, -}; +const buildSubDir = process.env.BUILD_DIR ?? `./build/${os.platform()}`; const compileOption: Bun.CompileBuildOptions = { outfile: "gameflow", @@ -49,7 +22,7 @@ await Bun.build({ entrypoints: ["./src/bun/index.ts", "./src/bun/webview-worker.ts"], metafile: true, compile: compileOption, - outdir: `./build/${os.platform()}`, + outdir: buildSubDir, root: './src/bun', define: { "process.env.IS_BINARY": "true" @@ -67,9 +40,9 @@ await Bun.build({ { build.onStart(async () => { - if (await fs.exists(`./build/${os.platform()}`)) + if (await fs.exists(buildSubDir)) { - const files = await fs.readdir(`./build/${os.platform()}`, { withFileTypes: true }); + const files = await fs.readdir(buildSubDir, { withFileTypes: true }); for (const file of files) { await fs.rm(path.join(file.parentPath, file.name), { recursive: true }); @@ -78,7 +51,7 @@ await Bun.build({ }); build.onEnd(async () => { - await fs.cp('./dist', `./build/${os.platform()}/dist`, { recursive: true }); + await fs.cp('./dist', `${buildSubDir}/dist`, { recursive: true }); }); }, }]