build: add GitHub Actions publishing pipeline for macOS (#42236)

* build: add publishing workflow for GHActions

* build: add test repo/bucket for uploads

* build: clean up conditionals, add macos-14-large, review comments

* build: remove host_cpu var from GCLIENT_EXTRA_ARGS
This commit is contained in:
Keeley Hammond 2024-05-31 10:58:39 -07:00 committed by GitHub
parent 4436ce53bc
commit 361b37592a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
12 changed files with 341 additions and 83 deletions

View file

@ -36,10 +36,6 @@ const ghActionsPublishWorkflows = [
'macos-publish'
];
const ghActionsPublishIndividualArches = {
'macos-publish': ['osx-x64', 'mas-x64', 'osx-arm64', 'mas-arm64']
};
let jobRequestedCount = 0;
async function makeRequest ({ auth, username, password, url, headers, body, method }) {
@ -82,11 +78,6 @@ async function githubActionsCall (targetBranch, workflowName, options) {
buildRequest.parameters['upload-to-storage'] = '1';
}
buildRequest.parameters[`run-${workflowName}`] = true;
if (options.arch) {
const validArches = ghActionsPublishIndividualArches[workflowName];
assert(validArches.includes(options.arch), `Unknown GitHub Actions architecture "${options.arch}". Valid values are ${JSON.stringify(validArches)}`);
buildRequest.parameters['macos-publish-arch-limit'] = options.arch;
}
jobRequestedCount++;
try {
@ -430,8 +421,7 @@ function runRelease (targetBranch, options) {
} else {
buildCircleCI(targetBranch, options);
buildAppVeyor(targetBranch, options);
// TODO(vertedinde): Enable GH Actions in defaults when ready
// buildGHActions(targetBranch, options);
buildGHActions(targetBranch, options);
}
console.log(`${jobRequestedCount} jobs were requested.`);
}

View file

@ -11,11 +11,17 @@ if (process.argv.length < 3) {
}
const version = process.argv[2];
const targetRepo = findRepo();
function findRepo () {
if (process.env.IS_GHA_RELEASE) return 'test-releases';
else return version.indexOf('nightly') > 0 ? 'nightlies' : 'electron';
}
async function findRelease () {
const releases = await octokit.repos.listReleases({
owner: 'electron',
repo: version.indexOf('nightly') > 0 ? 'nightlies' : 'electron'
repo: targetRepo
});
const targetRelease = releases.data.find(release => release.tag_name === version);

View file

@ -14,7 +14,12 @@ const readline = require('node:readline');
const releaseNotesGenerator = require('./notes/index.js');
const { getCurrentBranch, ELECTRON_DIR } = require('../lib/utils.js');
const bumpType = args._[0];
const targetRepo = bumpType === 'nightly' ? 'nightlies' : 'electron';
const targetRepo = getRepo();
function getRepo () {
if (process.env.IS_GHA_RELEASE) return 'test-releases';
return bumpType === 'nightly' ? 'nightlies' : 'electron';
}
const octokit = new Octokit({
auth: process.env.ELECTRON_GITHUB_TOKEN

View file

@ -45,6 +45,12 @@ let npmTag = '';
const currentElectronVersion = getElectronVersion();
const isNightlyElectronVersion = currentElectronVersion.includes('nightly');
const targetRepo = getRepo();
function getRepo () {
if (process.env.IS_GHA_RELEASE) return 'test-releases';
return isNightlyElectronVersion ? 'nightlies' : 'electron';
}
new Promise((resolve, reject) => {
temp.mkdir('electron-npm', (err, dirPath) => {
@ -78,7 +84,7 @@ new Promise((resolve, reject) => {
return octokit.repos.listReleases({
owner: 'electron',
repo: isNightlyElectronVersion ? 'nightlies' : 'electron'
repo: targetRepo
});
})
.then((releases) => {
@ -98,7 +104,7 @@ new Promise((resolve, reject) => {
}
const typingsContent = await getAssetContents(
isNightlyElectronVersion ? 'nightlies' : 'electron',
targetRepo,
tsdAsset.id
);
@ -113,7 +119,7 @@ new Promise((resolve, reject) => {
}
const checksumsContent = await getAssetContents(
isNightlyElectronVersion ? 'nightlies' : 'electron',
targetRepo,
checksumsAsset.id
);

View file

@ -32,7 +32,12 @@ const octokit = new Octokit({
auth: process.env.ELECTRON_GITHUB_TOKEN
});
const targetRepo = pkgVersion.indexOf('nightly') > 0 ? 'nightlies' : 'electron';
function getRepo () {
if (process.env.IS_GHA_RELEASE) return 'test-releases';
return pkgVersion.indexOf('nightly') > 0 ? 'nightlies' : 'electron';
}
const targetRepo = getRepo();
let failureCount = 0;
async function getDraftRelease (version, skipValidation) {

View file

@ -43,7 +43,12 @@ const getHeaders = (filePath: string, fileName: string) => {
};
};
const targetRepo = releaseVersion.indexOf('nightly') > 0 ? 'nightlies' : 'electron';
function getRepo () {
if (process.env.IS_GHA_RELEASE) return 'test-releases';
return releaseVersion.indexOf('nightly') > 0 ? 'nightlies' : 'electron';
}
const targetRepo = getRepo();
const uploadUrl = `https://uploads.github.com/repos/electron/${targetRepo}/releases/${releaseId}/assets{?name,label}`;
let retry = 0;