diff --git a/Jenkinsfile b/Jenkinsfile index d963663..8530e3e 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -48,7 +48,7 @@ try { parallel( 'Windows Build': buildOnLabel('windows', 'yarn build:electron'), 'MacOS Build': buildOnLabel('macos', 'yarn build:electron'), - 'Linux Build': buildOnLabel('ubuntu', 'yarn build:electron') + 'Linux Build': buildOnLabel('ubuntu', 'yarn build:linux') ) echo 'All parallel stages completed successfully!' diff --git a/package.json b/package.json index 66866e4..ed58f88 100644 --- a/package.json +++ b/package.json @@ -8,9 +8,12 @@ "start": "node build/index.js", "dev": "cross-env NODE_ENV=development nodemon src/index.js", "dev:electron": "concurrently \"cross-env NODE_ENV=development vite src/electron --port 5287 --no-open\" \"cross-env NODE_ENV=development electron src/index.js\"", - "build": "yarn clean && mkdir build && cp -r src/* build/ && cp package.json config.json build/ && yarn build:electron-renderer && cp src/electron/preload.js build/electron/ && 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": "yarn clean && yarn build:server && yarn build:renderer", + "build:server": "mkdir -p build && cp -r src/* build/ && cp package.json config.json build/", + "build:renderer": "yarn build:electron-renderer && cp src/electron/preload.js build/electron/ && 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": "yarn build && electron-builder", + "build:linux": "yarn build:server && mkdir -p app_dist/linux && pkg . --targets node23-linux-x64 --output app_dist/linux/farmcontrol-server && fpm -s dir -t deb -n farmcontrol-server -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 -s dir -t rpm -n farmcontrol-server -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", @@ -47,6 +50,7 @@ "electron-builder": "^26.0.12", "jest": "^30.2.0", "nodemon": "^3.1.11", + "pkg": "^5.8.1", "react": "^19.2.0", "react-dom": "^19.2.0", "rimraf": "^6.1.2", @@ -72,31 +76,6 @@ }, "win": { "target": "nsis" - }, - "linux": { - "target": [ - "AppImage", - "deb", - "rpm" - ], - "category": "Utility", - "maintainer": "Tom Butcher ", - "executableName": "farmcontrol-server" - }, - "deb": { - "priority": "optional", - "afterInstall": "packaging/linux/after-install.sh", - "afterRemove": "packaging/linux/after-remove.sh" - }, - "rpm": { - "afterInstall": "packaging/linux/after-install.sh", - "afterRemove": "packaging/linux/after-remove.sh" - }, - "extraResources": [ - { - "from": "packaging/linux/farmcontrol-server.service", - "to": "farmcontrol-server.service" - } - ] + } } } diff --git a/packaging/linux/after-install.sh b/packaging/linux/after-install.sh index 676469b..602b62f 100755 --- a/packaging/linux/after-install.sh +++ b/packaging/linux/after-install.sh @@ -1,16 +1,5 @@ #!/bin/bash -# Copy systemd service file -# The installation directory is usually /opt/Farm Control Server -# but we can try to find it if it's different. -APP_DIR="/opt/Farm Control Server" -if [ ! -d "$APP_DIR" ]; then - # Fallback to slugified name - APP_DIR="/opt/farmcontrol-server" -fi - -cp "$APP_DIR/resources/farmcontrol-server.service" /etc/systemd/system/farmcontrol-server.service - # Reload systemd to recognize the new service systemctl daemon-reload diff --git a/packaging/linux/after-remove.sh b/packaging/linux/after-remove.sh index 71c1e53..e68233b 100755 --- a/packaging/linux/after-remove.sh +++ b/packaging/linux/after-remove.sh @@ -6,9 +6,6 @@ systemctl stop farmcontrol-server.service # Disable the service systemctl disable farmcontrol-server.service -# Remove the systemd service file -rm -f /etc/systemd/system/farmcontrol-server.service - # Reload systemd systemctl daemon-reload