release: formalize HoloLake 0.5.0 numbered root
This commit is contained in:
parent
5d01607459
commit
40b8c49324
10 changed files with 401 additions and 6 deletions
|
|
@ -106,12 +106,30 @@ export function validateCredentialEnvironment(env) {
|
|||
if (missing.length) fail(`HOLOLAKE_RELEASE_PIPELINE_CREDENTIALS_MISSING:${[...new Set(missing)].sort().join(',')}`)
|
||||
}
|
||||
|
||||
export function materializeUpdaterPrivateKey(env, readText = (file) => fs.readFileSync(file, 'utf8')) {
|
||||
if (typeof env.TAURI_SIGNING_PRIVATE_KEY === 'string' && env.TAURI_SIGNING_PRIVATE_KEY.trim()) {
|
||||
return { ...env }
|
||||
}
|
||||
const privateKeyPath = requireText(
|
||||
env.TAURI_SIGNING_PRIVATE_KEY_PATH,
|
||||
'HOLOLAKE_RELEASE_PIPELINE_UPDATER_PRIVATE_KEY_PATH_REQUIRED',
|
||||
)
|
||||
const privateKey = requireText(
|
||||
readText(privateKeyPath),
|
||||
'HOLOLAKE_RELEASE_PIPELINE_UPDATER_PRIVATE_KEY_EMPTY',
|
||||
)
|
||||
return {
|
||||
...env,
|
||||
TAURI_SIGNING_PRIVATE_KEY: privateKey,
|
||||
}
|
||||
}
|
||||
|
||||
function run(program, args, options = {}) {
|
||||
return execFileSync(program, args, {
|
||||
cwd: root,
|
||||
encoding: 'utf8',
|
||||
stdio: options.capture ? ['ignore', 'pipe', 'pipe'] : 'inherit',
|
||||
env: process.env,
|
||||
env: options.env || process.env,
|
||||
})
|
||||
}
|
||||
|
||||
|
|
@ -194,6 +212,7 @@ export async function main(argv = process.argv.slice(2)) {
|
|||
const trustFacts = validateReleaseTrust(trust)
|
||||
const input = validateReleaseInput(readJson(inputPath), trustFacts)
|
||||
validateCredentialEnvironment(process.env)
|
||||
const credentialEnvironment = materializeUpdaterPrivateKey(process.env)
|
||||
requireCleanImmutableSource(input)
|
||||
if (process.platform !== 'darwin' || process.arch !== 'arm64') fail('HOLOLAKE_RELEASE_PIPELINE_BUILD_HOST_MISMATCH')
|
||||
if (!process.env.APPLE_SIGNING_IDENTITY.includes(input.appleTeamIdentifier)) fail('HOLOLAKE_RELEASE_PIPELINE_SIGNING_TEAM_MISMATCH')
|
||||
|
|
@ -205,7 +224,9 @@ export async function main(argv = process.argv.slice(2)) {
|
|||
const buildConfig = path.join(fs.mkdtempSync(path.join(os.tmpdir(), 'hololake-release-config-')), 'tauri.release.json')
|
||||
fs.writeFileSync(buildConfig, `${JSON.stringify({ bundle: { createUpdaterArtifacts: true } })}\n`, { mode: 0o600 })
|
||||
try {
|
||||
run('npm', ['run', 'tauri', '--', 'build', '--ci', '--config', buildConfig])
|
||||
run('npm', ['run', 'tauri', '--', 'build', '--ci', '--config', buildConfig], {
|
||||
env: credentialEnvironment,
|
||||
})
|
||||
} finally {
|
||||
fs.rmSync(path.dirname(buildConfig), { recursive: true, force: true })
|
||||
}
|
||||
|
|
@ -217,6 +238,18 @@ export async function main(argv = process.argv.slice(2)) {
|
|||
const updater = findOne(bundleRoot, (file) => file.endsWith('.app.tar.gz'), 'HOLOLAKE_RELEASE_PIPELINE_UPDATER_NOT_UNIQUE')
|
||||
const updaterSignature = `${updater}.sig`
|
||||
if (!fs.statSync(updaterSignature, { throwIfNoEntry: false })?.isFile()) fail('HOLOLAKE_RELEASE_PIPELINE_UPDATER_SIGNATURE_MISSING')
|
||||
run('cargo', [
|
||||
'run',
|
||||
'--quiet',
|
||||
'--manifest-path',
|
||||
'src-tauri/Cargo.toml',
|
||||
'--example',
|
||||
'verify_updater_signature',
|
||||
'--',
|
||||
'src-tauri/release-trust.json',
|
||||
updater,
|
||||
updaterSignature,
|
||||
])
|
||||
if (decodeURIComponent(input.packageUrl.pathname.split('/').pop()) !== path.basename(updater)) {
|
||||
fail('HOLOLAKE_RELEASE_PIPELINE_PACKAGE_URL_FILENAME_MISMATCH')
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue