Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

build: add WOA release to list of releases #20094

Merged
merged 4 commits into from Sep 4, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
50 changes: 34 additions & 16 deletions script/release/ci-release-build.js
Expand Up @@ -7,7 +7,8 @@ const vstsURL = 'https://github.visualstudio.com/electron/_apis/build'

const appVeyorJobs = {
'electron-x64': 'electron-x64-release',
'electron-ia32': 'electron-ia32-release'
'electron-ia32': 'electron-ia32-release',
'electron-woa': 'electron-woa-release'
}

const circleCIJobs = [
Expand All @@ -25,6 +26,9 @@ const vstsArmJobs = [
'electron-woa-testing'
]

let jobRequestedCount = 0
let jobSuccessfulCount = 0

async function makeRequest (requestOptions, parseResponse) {
return new Promise((resolve, reject) => {
request(requestOptions, (err, res, body) => {
Expand Down Expand Up @@ -63,7 +67,7 @@ async function circleCIcall (buildUrl, targetBranch, job, options) {
if (!options.ghRelease) {
buildRequest.build_parameters.UPLOAD_TO_S3 = 1
}

jobRequestedCount++
const circleResponse = await makeRequest({
method: 'POST',
url: buildUrl,
Expand All @@ -75,16 +79,19 @@ async function circleCIcall (buildUrl, targetBranch, job, options) {
}, true).catch(err => {
console.log('Error calling CircleCI:', err)
})
jobSuccessfulCount++
console.log(`CircleCI release build request for ${job} successful. Check ${circleResponse.build_url} for status.`)
}

function buildAppVeyor (targetBranch, options) {
async function buildAppVeyor (targetBranch, options) {
const validJobs = Object.keys(appVeyorJobs)
if (options.job) {
assert(validJobs.includes(options.job), `Unknown AppVeyor CI job name: ${options.job}. Valid values are: ${validJobs}.`)
callAppVeyor(targetBranch, options.job, options)
await callAppVeyor(targetBranch, options.job, options)
} else {
validJobs.forEach((job) => callAppVeyor(targetBranch, job, options))
const appVeyorCalls = []
validJobs.forEach((job) => appVeyorCalls.push(callAppVeyor(targetBranch, job, options)))
await Promise.all(appVeyorCalls)
}
}

Expand Down Expand Up @@ -114,20 +121,24 @@ async function callAppVeyor (targetBranch, job, options) {
}),
method: 'POST'
}
jobRequestedCount++
const appVeyorResponse = await makeRequest(requestOpts, true).catch(err => {
console.log('Error calling AppVeyor:', err)
})
jobSuccessfulCount++
const buildUrl = `https://ci.appveyor.com/project/electron-bot/${appVeyorJobs[job]}/build/${appVeyorResponse.version}`
console.log(`AppVeyor release build request for ${job} successful. Check build status at ${buildUrl}`)
}

function buildCircleCI (targetBranch, options) {
async function buildCircleCI (targetBranch, options) {
const circleBuildUrl = `https://circleci.com/api/v1.1/project/github/electron/electron/tree/${targetBranch}?circle-token=${process.env.CIRCLE_TOKEN}`
if (options.job) {
assert(circleCIJobs.includes(options.job), `Unknown CircleCI job name: ${options.job}. Valid values are: ${circleCIJobs}.`)
circleCIcall(circleBuildUrl, targetBranch, options.job, options)
await circleCIcall(circleBuildUrl, targetBranch, options.job, options)
} else {
circleCIJobs.forEach((job) => circleCIcall(circleBuildUrl, targetBranch, job, options))
const circleCalls = []
circleCIJobs.forEach((job) => circleCalls.push(circleCIcall(circleBuildUrl, targetBranch, job, options)))
await Promise.all(circleCalls)
}
}

Expand Down Expand Up @@ -167,7 +178,9 @@ async function buildVSTS (targetBranch, options) {
console.log('Error calling VSTS to get build definitions:', err)
})
const buildsToRun = vstsResponse.value.filter(build => build.name === options.job)
buildsToRun.forEach((build) => callVSTSBuild(build, targetBranch, environmentVariables))
const vstsJobs = []
buildsToRun.forEach((build) => vstsJobs.push(callVSTSBuild(build, targetBranch, environmentVariables)))
await Promise.all(vstsJobs)
}

async function callVSTSBuild (build, targetBranch, environmentVariables) {
Expand All @@ -191,25 +204,27 @@ async function callVSTSBuild (build, targetBranch, environmentVariables) {
body: JSON.stringify(buildBody),
method: 'POST'
}
jobRequestedCount++
const vstsResponse = await makeRequest(requestOpts, true).catch(err => {
console.log(`Error calling VSTS for job ${build.name}`, err)
})
jobSuccessfulCount++
console.log(`VSTS release build request for ${build.name} successful. Check ${vstsResponse._links.web.href} for status.`)
}

function runRelease (targetBranch, options) {
async function runRelease (targetBranch, options) {
if (options.ci) {
switch (options.ci) {
case 'CircleCI': {
buildCircleCI(targetBranch, options)
await buildCircleCI(targetBranch, options)
break
}
case 'AppVeyor': {
buildAppVeyor(targetBranch, options)
await buildAppVeyor(targetBranch, options)
break
}
case 'VSTS': {
buildVSTS(targetBranch, options)
await buildVSTS(targetBranch, options)
break
}
default: {
Expand All @@ -218,10 +233,13 @@ function runRelease (targetBranch, options) {
}
}
} else {
buildCircleCI(targetBranch, options)
buildAppVeyor(targetBranch, options)
buildVSTS(targetBranch, options)
const jobQueue = []
jobQueue.push(buildCircleCI(targetBranch, options))
jobQueue.push(buildAppVeyor(targetBranch, options))
jobQueue.push(buildVSTS(targetBranch, options))
await Promise.all(jobQueue)
}
console.log(`${jobRequestedCount} jobs were requested. ${jobSuccessfulCount} succeeded.`)
}

module.exports = runRelease
Expand Down
24 changes: 23 additions & 1 deletion script/release/release.js
Expand Up @@ -96,6 +96,15 @@ function check (condition, statement, exitIfFail = false) {

function assetsForVersion (version, validatingRelease) {
const patterns = [
`chromedriver-${version}-darwin-x64.zip`,
`chromedriver-${version}-linux-arm64.zip`,
`chromedriver-${version}-linux-armv7l.zip`,
`chromedriver-${version}-linux-ia32.zip`,
`chromedriver-${version}-linux-x64.zip`,
`chromedriver-${version}-mas-x64.zip`,
`chromedriver-${version}-win32-ia32.zip`,
`chromedriver-${version}-win32-x64.zip`,
`chromedriver-${version}-win32-arm64.zip`,
`electron-${version}-darwin-x64-dsym.zip`,
`electron-${version}-darwin-x64-symbols.zip`,
`electron-${version}-darwin-x64.zip`,
Expand All @@ -116,6 +125,9 @@ function assetsForVersion (version, validatingRelease) {
`electron-${version}-win32-x64-pdb.zip`,
`electron-${version}-win32-x64-symbols.zip`,
`electron-${version}-win32-x64.zip`,
`electron-${version}-win32-arm64-pdb.zip`,
`electron-${version}-win32-arm64-symbols.zip`,
`electron-${version}-win32-arm64.zip`,
`electron-api.json`,
`electron.d.ts`,
`ffmpeg-${version}-darwin-x64.zip`,
Expand All @@ -125,7 +137,17 @@ function assetsForVersion (version, validatingRelease) {
`ffmpeg-${version}-linux-x64.zip`,
`ffmpeg-${version}-mas-x64.zip`,
`ffmpeg-${version}-win32-ia32.zip`,
`ffmpeg-${version}-win32-x64.zip`
`ffmpeg-${version}-win32-x64.zip`,
`ffmpeg-${version}-win32-arm64.zip`,
`mksnapshot-${version}-darwin-x64.zip`,
`mksnapshot-${version}-linux-arm64-x64.zip`,
`mksnapshot-${version}-linux-armv7l-x64.zip`,
`mksnapshot-${version}-linux-ia32.zip`,
`mksnapshot-${version}-linux-x64.zip`,
`mksnapshot-${version}-mas-x64.zip`,
`mksnapshot-${version}-win32-ia32.zip`,
`mksnapshot-${version}-win32-x64.zip`,
`mksnapshot-${version}-win32-arm64-x64.zip`
]
if (!validatingRelease) {
patterns.push('SHASUMS256.txt')
Expand Down