From fc1c7990be84c38f60fbab2b9e6851374bec6fec Mon Sep 17 00:00:00 2001 From: Davide Grilli Date: Mon, 16 Mar 2026 11:21:00 +0100 Subject: [PATCH 1/2] feat(build): aggiunge infrastruttura Docker per build Linux riproducibile - contrib/linux: Dockerfile (node:20-bookworm-slim) e build.sh con mount CA certs - package.json: target linux (AppImage/deb), files whitelist, electron in devDependencies - main.js: icona finestra impostata esplicitamente per Linux - build/.gitkeep: cartella build tracciata per icon.ico e icon.png --- contrib/linux/Dockerfile | 12 ++++++++++++ contrib/linux/build.sh | 25 +++++++++++++++++++++++++ main.js | 1 + package.json | 17 +++++++++++++++-- 4 files changed, 53 insertions(+), 2 deletions(-) create mode 100644 contrib/linux/Dockerfile create mode 100755 contrib/linux/build.sh diff --git a/contrib/linux/Dockerfile b/contrib/linux/Dockerfile new file mode 100644 index 0000000..cf4b13f --- /dev/null +++ b/contrib/linux/Dockerfile @@ -0,0 +1,12 @@ +FROM node:20-bookworm-slim +RUN apt-get update && apt-get install -y --no-install-recommends \ + libudev-dev \ + libusb-1.0-0-dev \ + fuse \ + rpm \ + dpkg-dev \ + python3 \ + make \ + g++ \ + && rm -rf /var/lib/apt/lists/* +WORKDIR /project diff --git a/contrib/linux/build.sh b/contrib/linux/build.sh new file mode 100755 index 0000000..6fa5f5b --- /dev/null +++ b/contrib/linux/build.sh @@ -0,0 +1,25 @@ +#!/usr/bin/env bash +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)" +IMAGE_NAME="cadroute-builder-linux" + +echo "[cadroute] Building Docker image..." +docker build -t "$IMAGE_NAME" "$SCRIPT_DIR" + +echo "[cadroute] Running Linux build..." +docker run --rm \ + --device /dev/fuse \ + --cap-add SYS_ADMIN \ + -v "$PROJECT_ROOT":/project \ + -w /project \ + -v cadroute-electron-cache:/root/.cache/electron \ + -v cadroute-electronbuilder-cache:/root/.cache/electron-builder \ + -v /etc/ssl/certs/ca-certificates.crt:/etc/ssl/certs/ca-certificates.crt:ro \ + -e SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt \ + -e NODE_EXTRA_CA_CERTS=/etc/ssl/certs/ca-certificates.crt \ + "$IMAGE_NAME" \ + bash -c "npm ci && npm run build -- --linux --x64" + +echo "[cadroute] Artefatti in: $PROJECT_ROOT/dist" diff --git a/main.js b/main.js index 3160a5f..8b0bd62 100644 --- a/main.js +++ b/main.js @@ -68,6 +68,7 @@ function createWindow() { const win = new BrowserWindow({ width: 900, height: 640, + icon: path.join(__dirname, 'build', 'icon.png'), webPreferences: { preload: path.join(__dirname, 'preload.js'), contextIsolation: true, diff --git a/package.json b/package.json index 92bfa0e..84a7d7e 100644 --- a/package.json +++ b/package.json @@ -14,16 +14,29 @@ "build": { "appId": "com.cadroute", "productName": "CadRoute", + "files": [ + "main.js", + "preload.js", + "renderer/**/*", + "services/**/*", + "build/icon.png" + ], "win": { - "target": "nsis" + "target": "nsis", + "icon": "build/icon.ico" + }, + "linux": { + "target": ["AppImage", "deb"], + "icon": "build/icon.png", + "category": "Utility" } }, "dependencies": { - "electron": "^40.7.0", "fs-extra": "^11.3.4", "unzipper": "^0.12.3" }, "devDependencies": { + "electron": "^40.7.0", "electron-builder": "^26.8.1" } } From 1c758d68fca491a94b6947c93934ca75f2d3531d Mon Sep 17 00:00:00 2001 From: Davide Grilli Date: Mon, 16 Mar 2026 11:28:28 +0100 Subject: [PATCH 2/2] feat(build): aggiunge infrastruttura Docker per build Windows con Wine --- contrib/windows/Dockerfile | 2 ++ contrib/windows/build.sh | 20 ++++++++++++++++++++ 2 files changed, 22 insertions(+) create mode 100644 contrib/windows/Dockerfile create mode 100755 contrib/windows/build.sh diff --git a/contrib/windows/Dockerfile b/contrib/windows/Dockerfile new file mode 100644 index 0000000..d3627a9 --- /dev/null +++ b/contrib/windows/Dockerfile @@ -0,0 +1,2 @@ +FROM electronuserland/builder:wine-mono +WORKDIR /project diff --git a/contrib/windows/build.sh b/contrib/windows/build.sh new file mode 100755 index 0000000..5b8e183 --- /dev/null +++ b/contrib/windows/build.sh @@ -0,0 +1,20 @@ +#!/usr/bin/env bash +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)" +IMAGE_NAME="cadroute-builder-windows" + +echo "[cadroute] Building Docker image..." +docker build -t "$IMAGE_NAME" "$SCRIPT_DIR" + +echo "[cadroute] Running Windows build..." +docker run --rm \ + -v "$PROJECT_ROOT":/project \ + -w /project \ + -v cadroute-electron-cache:/root/.cache/electron \ + -v cadroute-electronbuilder-cache:/root/.cache/electron-builder \ + "$IMAGE_NAME" \ + bash -c "npm ci && npm run build -- --win --x64" + +echo "[cadroute] Artefatti in: $PROJECT_ROOT/dist"