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: move macos release builds to CircleCI (3-1-x) #17277

Merged
merged 1 commit into from Mar 11, 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
4 changes: 4 additions & 0 deletions .circleci/config.yml
Expand Up @@ -263,6 +263,7 @@ jobs:
TARGET_ARCH: x64
RUN_TESTS: true
INSTALL_MACOS_NODE: true
resource_class: large
macos:
xcode: "8.3.3"
<<: *build-steps
Expand All @@ -272,6 +273,7 @@ jobs:
TARGET_ARCH: x64
RUN_RELEASE_BUILD: true
INSTALL_MACOS_NODE: true
resource_class: large
macos:
xcode: "8.3.3"
<<: *build-steps
Expand All @@ -282,6 +284,7 @@ jobs:
MAS_BUILD: 1
RUN_TESTS: true
INSTALL_MACOS_NODE: true
resource_class: large
macos:
xcode: "8.3.3"
<<: *build-steps
Expand All @@ -292,6 +295,7 @@ jobs:
MAS_BUILD: 1
RUN_RELEASE_BUILD: true
INSTALL_MACOS_NODE: true
resource_class: large
macos:
xcode: "8.3.3"
<<: *build-steps
Expand Down
82 changes: 4 additions & 78 deletions script/ci-release-build.js
Expand Up @@ -3,7 +3,6 @@ require('dotenv-safe').load()
const assert = require('assert')
const request = require('request')
const buildAppVeyorURL = 'https://windows-ci.electronjs.org/api/builds'
const vstsURL = 'https://github.visualstudio.com/electron/_apis/build'

const appVeyorJobs = {
'electron-x64': 'electron',
Expand All @@ -14,13 +13,9 @@ const circleCIJobs = [
'electron-linux-arm',
'electron-linux-arm64',
'electron-linux-ia32',
// 'electron-linux-mips64el',
'electron-linux-x64'
]

const vstsJobs = [
'electron-release-mas-x64',
'electron-release-osx-x64'
'electron-linux-x64',
'electron-osx-x64',
'electron-mas-x64'
]

async function makeRequest (requestOptions, parseResponse) {
Expand Down Expand Up @@ -139,70 +134,6 @@ function buildCircleCI (targetBranch, options) {
}
}

async function buildVSTS (targetBranch, options) {
if (options.job) {
assert(vstsJobs.includes(options.job), `Unknown VSTS CI job name: ${options.job}. Valid values are: ${vstsJobs}.`)
}
console.log(`Triggering VSTS to run build on branch: ${targetBranch} with release flag.`)
let environmentVariables = {}

if (!options.ghRelease) {
environmentVariables.UPLOAD_TO_S3 = 1
}

if (options.automaticRelease) {
environmentVariables.AUTO_RELEASE = 'true'
}

let requestOpts = {
url: `${vstsURL}/definitions?api-version=4.1`,
auth: {
user: '',
password: process.env.VSTS_TOKEN
},
headers: {
'Content-Type': 'application/json'
}
}
let vstsResponse = await makeRequest(requestOpts, true).catch(err => {
console.log('Error calling VSTS to get build definitions:', err)
})
let buildsToRun = []
if (options.job) {
buildsToRun = vstsResponse.value.filter(build => build.name === options.job)
} else {
buildsToRun = vstsResponse.value.filter(build => vstsJobs.includes(build.name))
}
buildsToRun.forEach((build) => callVSTSBuild(build, targetBranch, environmentVariables))
}

async function callVSTSBuild (build, targetBranch, environmentVariables) {
let buildBody = {
definition: build,
sourceBranch: targetBranch,
priority: 'high'
}
if (Object.keys(environmentVariables).length !== 0) {
buildBody.parameters = JSON.stringify(environmentVariables)
}
let requestOpts = {
url: `${vstsURL}/builds?api-version=4.1`,
auth: {
user: '',
password: process.env.VSTS_TOKEN
},
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(buildBody),
method: 'POST'
}
let vstsResponse = await makeRequest(requestOpts, true).catch(err => {
console.log(`Error calling VSTS for job ${build.name}`, err)
})
console.log(`VSTS release build request for ${build.name} successful. Check ${vstsResponse._links.web.href} for status.`)
}

function runRelease (targetBranch, options) {
if (options.ci) {
switch (options.ci) {
Expand All @@ -214,10 +145,6 @@ function runRelease (targetBranch, options) {
buildAppVeyor(targetBranch, options)
break
}
case 'VSTS': {
buildVSTS(targetBranch, options)
break
}
default: {
console.log(`Error! Unknown CI: ${options.ci}.`)
process.exit(1)
Expand All @@ -226,7 +153,6 @@ function runRelease (targetBranch, options) {
} else {
buildCircleCI(targetBranch, options)
buildAppVeyor(targetBranch, options)
buildVSTS(targetBranch, options)
}
}

Expand All @@ -239,7 +165,7 @@ if (require.main === module) {
const targetBranch = args._[0]
if (args._.length < 1) {
console.log(`Trigger CI to build release builds of electron.
Usage: ci-release-build.js [--job=CI_JOB_NAME] [--ci=CircleCI|AppVeyor|VSTS] [--ghRelease] [--automaticRelease] TARGET_BRANCH
Usage: ci-release-build.js [--job=CI_JOB_NAME] [--ci=CircleCI|AppVeyor] [--ghRelease] [--automaticRelease] TARGET_BRANCH
`)
process.exit(0)
}
Expand Down
51 changes: 0 additions & 51 deletions vsts.yml

This file was deleted.