Files
aurora-dockside/scripts/build-native-linux-x64.cjs

40 lines
1.6 KiB
JavaScript

'use strict'
/* eslint-disable @typescript-eslint/no-require-imports, @typescript-eslint/explicit-function-return-type */
const { chmodSync, existsSync, mkdirSync, rmSync } = require('fs')
const { join, resolve } = require('path')
const { spawnSync } = require('child_process')
const projectRoot = resolve(__dirname, '..')
const buildRoot = join(projectRoot, 'runtime-build', 'linux-x64')
const stagingRoot = join(projectRoot, 'dist', 'native-runtime', 'linux-x64-stage')
const archive = join(projectRoot, 'dist', 'native-runtime', 'aurora-native-0.1.0-linux-x64.tar.gz')
function run(command, args) {
const result = spawnSync(command, args, { cwd: projectRoot, stdio: 'inherit' })
if (result.error) throw result.error
if (result.status !== 0) throw new Error(`${command} failed with exit code ${result.status}`)
}
if (process.platform !== 'linux' || process.arch !== 'x64')
throw new Error('This builder targets Linux x64 only.')
mkdirSync(stagingRoot, { recursive: true })
rmSync(stagingRoot, { recursive: true, force: true })
mkdirSync(stagingRoot, { recursive: true })
run('docker', ['build', '--pull', '--output', `type=local,dest=${stagingRoot}`, buildRoot])
for (const executable of [
'aurora-exec',
'php',
'php-fpm',
'nginx',
'mariadbd',
'mariadb-install-db',
'wp'
]) {
const path = join(stagingRoot, 'bin', executable)
if (!existsSync(path)) throw new Error(`Builder did not produce ${path}`)
chmodSync(path, 0o755)
}
run('node', ['scripts/smoke-native-runtime.cjs', stagingRoot])
run('node', ['scripts/package-native-runtime.cjs', stagingRoot, archive])