Files
vscode/build/azure-pipelines/darwin/codesign.ts

82 lines
3.3 KiB
TypeScript

/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { printBanner, spawnCodesignProcess, streamProcessOutputAndCheckResult } from '../common/codesign.ts';
import { e } from '../common/publish.ts';
async function main() {
const arch = e('VSCODE_ARCH');
const esrpCliDLLPath = e('EsrpCliDllPath');
const pipelineWorkspace = e('PIPELINE_WORKSPACE');
const buildSourcesDirectory = e('BUILD_SOURCESDIRECTORY');
const clientFolder = `${pipelineWorkspace}/vscode_client_darwin_${arch}_archive`;
const dmgFolder = `${pipelineWorkspace}/vscode_client_darwin_${arch}_dmg`;
const clientGlob = `VSCode-darwin-${arch}.zip`;
const dmgGlob = `VSCode-darwin-${arch}.dmg`;
const serverFolder = `${buildSourcesDirectory}/.build/darwin/server`;
const serverGlob = `vscode-server-darwin-${arch}.zip`;
const webGlob = `vscode-server-darwin-${arch}-web.zip`;
let codeSignServerTask, codeSignWebTask, notarizeServerTask, notarizeWebTask;
// Start codesign processes in parallel
const codeSignClientTask = spawnCodesignProcess(esrpCliDLLPath, 'sign-darwin', clientFolder, clientGlob);
const codeSignDmgTask = spawnCodesignProcess(esrpCliDLLPath, 'sign-darwin', dmgFolder, dmgGlob);
if (arch !== 'universal') {
codeSignServerTask = spawnCodesignProcess(esrpCliDLLPath, 'sign-darwin', serverFolder, serverGlob);
codeSignWebTask = spawnCodesignProcess(esrpCliDLLPath, 'sign-darwin', serverFolder, webGlob);
}
// Await codesign results
printBanner('Codesign client');
await streamProcessOutputAndCheckResult('Codesign client', codeSignClientTask);
printBanner('Codesign DMG');
await streamProcessOutputAndCheckResult('Codesign DMG', codeSignDmgTask);
if (codeSignServerTask) {
printBanner('Codesign server');
await streamProcessOutputAndCheckResult('Codesign server', codeSignServerTask);
}
if (codeSignWebTask) {
printBanner('Codesign web');
await streamProcessOutputAndCheckResult('Codesign web', codeSignWebTask);
}
// Start notarize processes in parallel (after codesigning is complete)
const notarizeClientTask = spawnCodesignProcess(esrpCliDLLPath, 'notarize-darwin', clientFolder, clientGlob);
const notarizeDmgTask = spawnCodesignProcess(esrpCliDLLPath, 'notarize-darwin', dmgFolder, dmgGlob);
if (arch !== 'universal') {
notarizeServerTask = spawnCodesignProcess(esrpCliDLLPath, 'notarize-darwin', serverFolder, serverGlob);
notarizeWebTask = spawnCodesignProcess(esrpCliDLLPath, 'notarize-darwin', serverFolder, webGlob);
}
// Await notarize results
printBanner('Notarize client');
await streamProcessOutputAndCheckResult('Notarize client', notarizeClientTask);
printBanner('Notarize DMG');
await streamProcessOutputAndCheckResult('Notarize DMG', notarizeDmgTask);
if (notarizeServerTask) {
printBanner('Notarize server');
await streamProcessOutputAndCheckResult('Notarize server', notarizeServerTask);
}
if (notarizeWebTask) {
printBanner('Notarize web');
await streamProcessOutputAndCheckResult('Notarize web', notarizeWebTask);
}
}
main().then(() => {
process.exit(0);
}, err => {
console.error(`ERROR: ${err}`);
process.exit(1);
});