build: separated github and forgejo build workflows

This commit is contained in:
Simeon Radivoev 2026-02-08 22:03:19 +02:00
parent d79738a2f1
commit 3a8f301043
Signed by: simeonradivoev
GPG key ID: 7611A451D2A5D37A
2 changed files with 15 additions and 50 deletions

View file

@ -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 }}

View file

@ -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 });
});
},
}]