diff --git a/Jenkinsfile b/Jenkinsfile index 5d0793a..de14984 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -44,11 +44,47 @@ def buildOnLabel(label, buildCommand) { } } +def buildLinuxWithBun() { + return { + node('ubuntu') { + stage("Checkout (Linux)") { + checkout scm + } + + stage("Setup Bun (Linux)") { + sh ''' + curl -fsSL https://bun.sh/install | bash + export PATH="$HOME/.bun/bin:$PATH" + bun --version + ''' + } + + stage("Install Dependencies (Linux)") { + sh ''' + export PATH="$HOME/.bun/bin:$PATH" + bun install --frozen-lockfile + ''' + } + + stage("Build (Linux)") { + sh ''' + export PATH="$HOME/.bun/bin:$PATH" + NODE_ENV=production bun run build:linux + ''' + } + + stage("Archive Artifacts (Linux)") { + archiveArtifacts artifacts: 'app_dist/**/*.deb, app_dist/**/*.rpm', fingerprint: true + } + } + } +} + try { parallel( 'Windows Build': buildOnLabel('windows', 'pnpm build:electron'), 'MacOS Build': buildOnLabel('macos', 'pnpm build:electron'), - 'Linux Build': buildOnLabel('ubuntu', 'pnpm build:linux') + 'Linux Build': buildLinuxWithBun() ) echo 'All parallel stages completed successfully!' diff --git a/package.json b/package.json index c8ec340..7853390 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,7 @@ "build:renderer": "pnpm build:electron-renderer && shx cp src/electron/preload.js build/electron/ && shx rm -rf build/electron/App.jsx build/electron/main.jsx build/electron/App.css build/electron/index.css build/electron/FarmControlLogo.jsx build/electron/vite.config.js build/electron/public build/electron/build", "build:electron-renderer": "vite build src/electron --outDir build/electron", "build:electron": "pnpm build && electron-builder", - "build:linux": "pnpm clean && pnpm build:server && shx mkdir -p app_dist/linux && pkg . --targets node18-linux-x64 --output app_dist/linux/farmcontrol-server && fpm -f -s dir -t deb -n farmcontrol-server -p app_dist/linux/ -v $(node -p \"require('./package.json').version\") --after-install packaging/linux/after-install.sh --after-remove packaging/linux/after-remove.sh app_dist/linux/farmcontrol-server=/usr/bin/farmcontrol-server packaging/linux/farmcontrol-server.service=/lib/systemd/system/farmcontrol-server.service && fpm -f -s dir -t rpm -n farmcontrol-server -p app_dist/linux/ -v $(node -p \"require('./package.json').version\") --after-install packaging/linux/after-install.sh --after-remove packaging/linux/after-remove.sh app_dist/linux/farmcontrol-server=/usr/bin/farmcontrol-server packaging/linux/farmcontrol-server.service=/lib/systemd/system/farmcontrol-server.service", + "build:linux": "bun run clean && bun run build:server && shx mkdir -p app_dist/linux && pkg . --targets node18-linux-x64 --output app_dist/linux/farmcontrol-server && fpm -f -s dir -t deb -n farmcontrol-server -p app_dist/linux/ -v $(node -p \"require('./package.json').version\") --after-install packaging/linux/after-install.sh --after-remove packaging/linux/after-remove.sh app_dist/linux/farmcontrol-server=/usr/bin/farmcontrol-server packaging/linux/farmcontrol-server.service=/lib/systemd/system/farmcontrol-server.service && fpm -f -s dir -t rpm -n farmcontrol-server -p app_dist/linux/ -v $(node -p \"require('./package.json').version\") --after-install packaging/linux/after-install.sh --after-remove packaging/linux/after-remove.sh app_dist/linux/farmcontrol-server=/usr/bin/farmcontrol-server packaging/linux/farmcontrol-server.service=/lib/systemd/system/farmcontrol-server.service", "clean": "rimraf build" }, "author": "Tom Butcher",