Fixed build config.
Some checks failed
farmcontrol/farmcontrol-server/pipeline/head There was a failure building this commit
Some checks failed
farmcontrol/farmcontrol-server/pipeline/head There was a failure building this commit
This commit is contained in:
parent
afe42dafa6
commit
b57d269f9b
89
Jenkinsfile
vendored
89
Jenkinsfile
vendored
@ -1,3 +1,38 @@
|
|||||||
|
def buildLinux() {
|
||||||
|
node('ubuntu') {
|
||||||
|
try {
|
||||||
|
stage('Checkout (Ubuntu)') {
|
||||||
|
checkout scm
|
||||||
|
}
|
||||||
|
|
||||||
|
stage('Setup Node.js (Ubuntu)') {
|
||||||
|
nodejs(nodeJSInstallationName: 'Node23') {
|
||||||
|
sh 'node -v'
|
||||||
|
sh 'pnpm -v'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
stage('Install Dependencies (Ubuntu)') {
|
||||||
|
nodejs(nodeJSInstallationName: 'Node23') {
|
||||||
|
sh 'pnpm install --frozen-lockfile --production=false'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
stage('Build (Ubuntu)') {
|
||||||
|
nodejs(nodeJSInstallationName: 'Node23') {
|
||||||
|
sh "VITE_BUILD_NUMBER=${env.BUILD_NUMBER} NODE_ENV=production pnpm build:linux"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
stage('Archive Artifacts (Ubuntu)') {
|
||||||
|
archiveArtifacts artifacts: 'app_dist/**/*.deb, app_dist/**/*.rpm', fingerprint: true
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
cleanWs()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
def buildOnLabel(label, buildCommand) {
|
def buildOnLabel(label, buildCommand) {
|
||||||
return {
|
return {
|
||||||
node(label) {
|
node(label) {
|
||||||
@ -30,61 +65,45 @@ def buildOnLabel(label, buildCommand) {
|
|||||||
stage("Build (${label})") {
|
stage("Build (${label})") {
|
||||||
nodejs(nodeJSInstallationName: 'Node23') {
|
nodejs(nodeJSInstallationName: 'Node23') {
|
||||||
if (isUnix()) {
|
if (isUnix()) {
|
||||||
sh "NODE_ENV=production ${buildCommand}"
|
sh "VITE_BUILD_NUMBER=${env.BUILD_NUMBER} NODE_ENV=production ${buildCommand}"
|
||||||
} else {
|
} else {
|
||||||
bat "set NODE_ENV=production && ${buildCommand}"
|
bat "set VITE_BUILD_NUMBER=${env.BUILD_NUMBER} && set NODE_ENV=production && ${buildCommand}"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
stage("Archive Artifacts (${label})") {
|
stage("Archive Artifacts (${label})") {
|
||||||
archiveArtifacts artifacts: 'app_dist/**/*.dmg, app_dist/**/*.exe, app_dist/**/*.AppImage, app_dist/**/*.deb, app_dist/**/*.rpm', fingerprint: true
|
archiveArtifacts artifacts: 'app_dist/**/farmcontrol-server-*.dmg, app_dist/**/farmcontrol-server-*.exe, app_dist/**/farmcontrol-server-*.pkg, app_dist/**/farmcontrol-server-*.msi', fingerprint: true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
def buildLinuxWithBun() {
|
def setBuildNameFromPackageVersion() {
|
||||||
return {
|
node('ubuntu') {
|
||||||
node('ubuntu') {
|
stage('Set Build Name') {
|
||||||
stage("Checkout (Linux)") {
|
checkout scm
|
||||||
checkout scm
|
def version
|
||||||
}
|
nodejs(nodeJSInstallationName: 'Node23') {
|
||||||
|
version = sh(
|
||||||
stage("Setup Bun (Linux)") {
|
script: "node -p \"require('./package.json').version\"",
|
||||||
sh '''
|
returnStdout: true
|
||||||
curl -fsSL https://bun.sh/install | bash
|
).trim()
|
||||||
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
|
|
||||||
}
|
}
|
||||||
|
def buildName = "v${version}-b${env.BUILD_NUMBER}"
|
||||||
|
currentBuild.displayName = buildName
|
||||||
|
echo "Build name set to: ${buildName}"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
setBuildNameFromPackageVersion()
|
||||||
|
|
||||||
parallel(
|
parallel(
|
||||||
'Windows Build': buildOnLabel('windows', 'pnpm build:electron'),
|
'Windows Build': buildOnLabel('windows', 'pnpm build:electron'),
|
||||||
'MacOS Build': buildOnLabel('macos', 'pnpm build:electron'),
|
'MacOS Build': buildOnLabel('macos', 'pnpm build:electron'),
|
||||||
'Linux Build': buildLinuxWithBun()
|
'Ubuntu Build': { buildLinux() }
|
||||||
)
|
)
|
||||||
|
|
||||||
echo 'All parallel stages completed successfully!'
|
echo 'All parallel stages completed successfully!'
|
||||||
|
|||||||
49
package.json
49
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: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-renderer": "vite build src/electron --outDir build/electron",
|
||||||
"build:electron": "pnpm build && electron-builder",
|
"build:electron": "pnpm build && electron-builder",
|
||||||
"build:linux": "bun run cleanBuild && 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",
|
"build:linux": "pnpm run cleanBuild && pnpm 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",
|
||||||
"cleanBuild": "rimraf build"
|
"cleanBuild": "rimraf build"
|
||||||
},
|
},
|
||||||
"author": "Tom Butcher",
|
"author": "Tom Butcher",
|
||||||
@ -74,6 +74,7 @@
|
|||||||
"appId": "com.tombutcher.farmcontrolserver",
|
"appId": "com.tombutcher.farmcontrolserver",
|
||||||
"productName": "Farm Control Server",
|
"productName": "Farm Control Server",
|
||||||
"executableName": "farmcontrol-server",
|
"executableName": "farmcontrol-server",
|
||||||
|
"artifactName": "farmcontrol-server-${version}-${arch}.${ext}",
|
||||||
"icon": "assets/farmcontrolhosticon.png",
|
"icon": "assets/farmcontrolhosticon.png",
|
||||||
"directories": {
|
"directories": {
|
||||||
"output": "app_dist"
|
"output": "app_dist"
|
||||||
@ -83,10 +84,52 @@
|
|||||||
"node_modules/**/*"
|
"node_modules/**/*"
|
||||||
],
|
],
|
||||||
"mac": {
|
"mac": {
|
||||||
"target": "dmg"
|
"target": [
|
||||||
|
{
|
||||||
|
"target": "dmg",
|
||||||
|
"arch": [
|
||||||
|
"arm64"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"target": "pkg",
|
||||||
|
"arch": [
|
||||||
|
"arm64"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"target": "dmg",
|
||||||
|
"arch": [
|
||||||
|
"x64"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"target": "pkg",
|
||||||
|
"arch": [
|
||||||
|
"x64"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"mergeASARs": true,
|
||||||
|
"x64ArchFiles": "**/node_modules/@esbuild/darwin-x64/**",
|
||||||
|
"singleArchFiles": "**/node_modules/**"
|
||||||
},
|
},
|
||||||
"win": {
|
"win": {
|
||||||
"target": "nsis"
|
"target": [
|
||||||
|
"nsis",
|
||||||
|
"msiWrapped"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"nsis": {
|
||||||
|
"oneClick": false,
|
||||||
|
"allowToChangeInstallationDirectory": true,
|
||||||
|
"perMachine": true
|
||||||
|
},
|
||||||
|
"msiWrapped": {
|
||||||
|
"upgradeCode": "{A4E29F1C-8B3D-5E2A-9C71-1D6F8E4A2B90}",
|
||||||
|
"perMachine": true,
|
||||||
|
"impersonate": false,
|
||||||
|
"wrappedInstallerArgs": "/S"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5,6 +5,7 @@ import svgr from "vite-plugin-svgr";
|
|||||||
import svgo from "vite-plugin-svgo";
|
import svgo from "vite-plugin-svgo";
|
||||||
|
|
||||||
export default defineConfig({
|
export default defineConfig({
|
||||||
|
base: "./",
|
||||||
plugins: [react(), svgr(), svgo()],
|
plugins: [react(), svgr(), svgo()],
|
||||||
root: path.resolve(__dirname),
|
root: path.resolve(__dirname),
|
||||||
build: {
|
build: {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user