build: start building Windows on Arm builds (#19780)
* build: add zip manifest for Windows on Arm * ci: add Windows On Arm testing (cherry picked from commit 4064e1f4874ff7a37c52c2ad974f92418c7e71c4) * Fix path to invoke CI on WOA hardware * Explicitly call 7z.exe to unzip files * Make sure GCLIENT_EXTRA_ARGS set for WOA builds get prepended on release build * set proper arch for npm * Try using Compress-Archive/Expand-Archive * Revert "Try using Compress-Archive/Expand-Archive" * disable woa hardware test for now
This commit is contained in:
parent
5e525b3e0f
commit
4bc7b3b1a4
4 changed files with 174 additions and 8 deletions
11
appveyor.yml
11
appveyor.yml
|
@ -60,7 +60,7 @@ build_script:
|
||||||
- ps: $env:SCCACHE_PATH="$pwd\src\electron\external_binaries\sccache.exe"
|
- ps: $env:SCCACHE_PATH="$pwd\src\electron\external_binaries\sccache.exe"
|
||||||
- ps: >-
|
- ps: >-
|
||||||
if ($env:GN_CONFIG -eq 'release') {
|
if ($env:GN_CONFIG -eq 'release') {
|
||||||
$env:GCLIENT_EXTRA_ARGS="--custom-var=checkout_boto=True --custom-var=checkout_requests=True"
|
$env:GCLIENT_EXTRA_ARGS="$env:GCLIENT_EXTRA_ARGS --custom-var=checkout_boto=True --custom-var=checkout_requests=True"
|
||||||
} else {
|
} else {
|
||||||
$env:NINJA_STATUS="[%r processes, %f/%t @ %o/s : %es] "
|
$env:NINJA_STATUS="[%r processes, %f/%t @ %o/s : %es] "
|
||||||
}
|
}
|
||||||
|
@ -89,6 +89,10 @@ build_script:
|
||||||
- appveyor PushArtifact out/Default/dist.zip
|
- appveyor PushArtifact out/Default/dist.zip
|
||||||
- appveyor PushArtifact out/Default/chromedriver.zip
|
- appveyor PushArtifact out/Default/chromedriver.zip
|
||||||
- appveyor PushArtifact out/ffmpeg/ffmpeg.zip
|
- appveyor PushArtifact out/ffmpeg/ffmpeg.zip
|
||||||
|
- 7z a node_headers.zip out\Default\gen\node_headers
|
||||||
|
- appveyor PushArtifact node_headers.zip
|
||||||
|
- appveyor PushArtifact out/Default/mksnapshot.zip
|
||||||
|
- appveyor PushArtifact out/Default/electron.lib
|
||||||
- ps: >-
|
- ps: >-
|
||||||
if ($env:GN_CONFIG -eq 'release') {
|
if ($env:GN_CONFIG -eq 'release') {
|
||||||
# Needed for msdia140.dll on 64-bit windows
|
# Needed for msdia140.dll on 64-bit windows
|
||||||
|
@ -105,7 +109,7 @@ test_script:
|
||||||
# Workaround for https://github.com/appveyor/ci/issues/2420
|
# Workaround for https://github.com/appveyor/ci/issues/2420
|
||||||
- set "PATH=%PATH%;C:\Program Files\Git\mingw64\libexec\git-core"
|
- set "PATH=%PATH%;C:\Program Files\Git\mingw64\libexec\git-core"
|
||||||
- ps: >-
|
- ps: >-
|
||||||
if ((-Not (Test-Path Env:\ELECTRON_RELEASE)) -And ($env:GN_CONFIG -in "testing", "release")) {
|
if ((-Not (Test-Path Env:\TEST_WOA)) -And (-Not (Test-Path Env:\ELECTRON_RELEASE)) -And ($env:GN_CONFIG -in "testing", "release")) {
|
||||||
$env:RUN_TESTS="true"
|
$env:RUN_TESTS="true"
|
||||||
}
|
}
|
||||||
- ps: >-
|
- ps: >-
|
||||||
|
@ -133,4 +137,7 @@ deploy_script:
|
||||||
Write-Output "Uploading Electron release distribution to github releases"
|
Write-Output "Uploading Electron release distribution to github releases"
|
||||||
& python script\release\uploaders\upload.py
|
& python script\release\uploaders\upload.py
|
||||||
}
|
}
|
||||||
|
} elseif (Test-Path Env:\TEST_WOA) {
|
||||||
|
# node script/release/ci-release-build.js --job=electron-woa-testing --ci=VSTS --armTest --appveyorJobId=$env:APPVEYOR_JOB_ID $env:APPVEYOR_REPO_BRANCH
|
||||||
|
echo "Eventually run tests on WOA hardware at this step"
|
||||||
}
|
}
|
||||||
|
|
84
azure-pipelines-woa.yml
Normal file
84
azure-pipelines-woa.yml
Normal file
|
@ -0,0 +1,84 @@
|
||||||
|
steps:
|
||||||
|
- task: CopyFiles@2
|
||||||
|
displayName: 'Copy Files to: src\electron'
|
||||||
|
inputs:
|
||||||
|
TargetFolder: src\electron
|
||||||
|
|
||||||
|
- script: |
|
||||||
|
cd src\electron
|
||||||
|
npm install --verbose
|
||||||
|
displayName: 'NPM install'
|
||||||
|
|
||||||
|
- powershell: |
|
||||||
|
$localArtifactPath = "$pwd\dist.zip"
|
||||||
|
$serverArtifactPath = "$env:APPVEYOR_URL/buildjobs/$env:APPVEYOR_JOB_ID/artifacts/dist.zip"
|
||||||
|
Invoke-RestMethod -Method Get -Uri $serverArtifactPath -OutFile $localArtifactPath -Headers @{ "Authorization" = "Bearer $env:APPVEYOR_TOKEN" }
|
||||||
|
& "${env:ProgramFiles(x86)}\7-Zip\7z.exe" x -osrc\out\Default -y $localArtifactPath
|
||||||
|
displayName: 'Download and extract dist.zip for test'
|
||||||
|
env:
|
||||||
|
APPVEYOR_TOKEN: $(APPVEYOR_TOKEN)
|
||||||
|
|
||||||
|
- powershell: |
|
||||||
|
$localArtifactPath = "$pwd\ffmpeg.zip"
|
||||||
|
$serverArtifactPath = "$env:APPVEYOR_URL/buildjobs/$env:APPVEYOR_JOB_ID/artifacts/ffmpeg.zip"
|
||||||
|
Invoke-RestMethod -Method Get -Uri $serverArtifactPath -OutFile $localArtifactPath -Headers @{ "Authorization" = "Bearer $env:APPVEYOR_TOKEN" }
|
||||||
|
& "${env:ProgramFiles(x86)}\7-Zip\7z.exe" x -osrc\out\ffmpeg $localArtifactPath
|
||||||
|
displayName: 'Download and extract ffmpeg.zip for test'
|
||||||
|
env:
|
||||||
|
APPVEYOR_TOKEN: $(APPVEYOR_TOKEN)
|
||||||
|
|
||||||
|
- powershell: |
|
||||||
|
$localArtifactPath = "$pwd\src\out\Default\mksnapshot.zip"
|
||||||
|
$serverArtifactPath = "$env:APPVEYOR_URL/buildjobs/$env:APPVEYOR_JOB_ID/artifacts/mksnapshot.zip"
|
||||||
|
Invoke-RestMethod -Method Get -Uri $serverArtifactPath -OutFile $localArtifactPath -Headers @{ "Authorization" = "Bearer $env:APPVEYOR_TOKEN" }
|
||||||
|
cd src\out\Default
|
||||||
|
& "${env:ProgramFiles(x86)}\7-Zip\7z.exe" x -y mksnapshot.zip
|
||||||
|
displayName: 'Download and unzip mksnapshot.zip for test'
|
||||||
|
env:
|
||||||
|
APPVEYOR_TOKEN: $(APPVEYOR_TOKEN)
|
||||||
|
|
||||||
|
- powershell: |
|
||||||
|
$localArtifactPath = "$pwd\src\node_headers.zip"
|
||||||
|
$serverArtifactPath = "$env:APPVEYOR_URL/buildjobs/$env:APPVEYOR_JOB_ID/artifacts/node_headers.zip"
|
||||||
|
Invoke-RestMethod -Method Get -Uri $serverArtifactPath -OutFile $localArtifactPath -Headers @{ "Authorization" = "Bearer $env:APPVEYOR_TOKEN" }
|
||||||
|
cd src
|
||||||
|
& "${env:ProgramFiles(x86)}\7-Zip\7z.exe" x -y node_headers.zip
|
||||||
|
displayName: 'Download node headers for test'
|
||||||
|
env:
|
||||||
|
APPVEYOR_TOKEN: $(APPVEYOR_TOKEN)
|
||||||
|
|
||||||
|
- powershell: |
|
||||||
|
$localArtifactPath = "$pwd\src\out\Default\electron.lib"
|
||||||
|
$serverArtifactPath = "$env:APPVEYOR_URL/buildjobs/$env:APPVEYOR_JOB_ID/artifacts/electron.lib"
|
||||||
|
Invoke-RestMethod -Method Get -Uri $serverArtifactPath -OutFile $localArtifactPath -Headers @{ "Authorization" = "Bearer $env:APPVEYOR_TOKEN" }
|
||||||
|
displayName: 'Download electron.lib for test'
|
||||||
|
env:
|
||||||
|
APPVEYOR_TOKEN: $(APPVEYOR_TOKEN)
|
||||||
|
|
||||||
|
- powershell: |
|
||||||
|
New-Item src\out\Default\gen\node_headers\Release -Type directory
|
||||||
|
Copy-Item -path src\out\Default\electron.lib -destination src\out\Default\gen\node_headers\Release\node.lib
|
||||||
|
displayName: 'Setup node headers'
|
||||||
|
|
||||||
|
- script: |
|
||||||
|
cd src
|
||||||
|
set npm_config_nodedir=%cd%\out\Default\gen\node_headers
|
||||||
|
set npm_config_arch=arm64
|
||||||
|
cd electron
|
||||||
|
node script/yarn test -- --ci --enable-logging --verbose
|
||||||
|
displayName: 'Run Electron tests'
|
||||||
|
env:
|
||||||
|
ELECTRON_OUT_DIR: Default
|
||||||
|
IGNORE_YARN_INSTALL_ERROR: 1
|
||||||
|
|
||||||
|
- script: |
|
||||||
|
cd src
|
||||||
|
echo "Verifying non proprietary ffmpeg"
|
||||||
|
python electron\script\verify-ffmpeg.py --build-dir out\Default --source-root %cd% --ffmpeg-path out\ffmpeg
|
||||||
|
displayName: 'Verify ffmpeg'
|
||||||
|
|
||||||
|
- script: |
|
||||||
|
cd src
|
||||||
|
echo "Verifying mksnapshot"
|
||||||
|
python electron\script\verify-mksnapshot.py --build-dir out\Default --source-root %cd%
|
||||||
|
displayName: 'Verify mksnapshot'
|
|
@ -21,7 +21,8 @@ const circleCIJobs = [
|
||||||
|
|
||||||
const vstsArmJobs = [
|
const vstsArmJobs = [
|
||||||
'electron-arm-testing',
|
'electron-arm-testing',
|
||||||
'electron-arm64-testing'
|
'electron-arm64-testing',
|
||||||
|
'electron-woa-testing'
|
||||||
]
|
]
|
||||||
|
|
||||||
async function makeRequest (requestOptions, parseResponse) {
|
async function makeRequest (requestOptions, parseResponse) {
|
||||||
|
@ -38,12 +39,12 @@ async function makeRequest (requestOptions, parseResponse) {
|
||||||
console.error('Error occurred while requesting:', requestOptions.url)
|
console.error('Error occurred while requesting:', requestOptions.url)
|
||||||
if (parseResponse) {
|
if (parseResponse) {
|
||||||
try {
|
try {
|
||||||
console.log('Error: ', `(status ${res.statusCode})`, err || JSON.parse(res.body), requestOptions)
|
console.log('Error: ', `(status ${res.statusCode})`, err || JSON.parse(res.body))
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.log('Error: ', `(status ${res.statusCode})`, err || res.body, requestOptions)
|
console.log('Error: ', `(status ${res.statusCode})`, res.body)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
console.log('Error: ', `(status ${res.statusCode})`, err || res.body, requestOptions)
|
console.log('Error: ', `(status ${res.statusCode})`, err || res.body)
|
||||||
}
|
}
|
||||||
reject(err)
|
reject(err)
|
||||||
}
|
}
|
||||||
|
@ -141,7 +142,11 @@ async function buildVSTS (targetBranch, options) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (options.armTest) {
|
if (options.armTest) {
|
||||||
environmentVariables.CIRCLE_BUILD_NUM = options.circleBuildNum
|
if (options.circleBuildNum) {
|
||||||
|
environmentVariables.CIRCLE_BUILD_NUM = options.circleBuildNum
|
||||||
|
} else if (options.appveyorJobId) {
|
||||||
|
environmentVariables.APPVEYOR_JOB_ID = options.appveyorJobId
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
if (!options.ghRelease) {
|
if (!options.ghRelease) {
|
||||||
environmentVariables.UPLOAD_TO_S3 = 1
|
environmentVariables.UPLOAD_TO_S3 = 1
|
||||||
|
@ -229,7 +234,7 @@ if (require.main === module) {
|
||||||
if (args._.length < 1) {
|
if (args._.length < 1) {
|
||||||
console.log(`Trigger CI to build release builds of electron.
|
console.log(`Trigger CI to build release builds of electron.
|
||||||
Usage: ci-release-build.js [--job=CI_JOB_NAME] [--ci=CircleCI|AppVeyor|VSTS]
|
Usage: ci-release-build.js [--job=CI_JOB_NAME] [--ci=CircleCI|AppVeyor|VSTS]
|
||||||
[--ghRelease] [--armTest] [--circleBuildNum=xxx] TARGET_BRANCH
|
[--ghRelease] [--armTest] [--circleBuildNum=xxx] [--appveyorJobId=xxx] TARGET_BRANCH
|
||||||
`)
|
`)
|
||||||
process.exit(0)
|
process.exit(0)
|
||||||
}
|
}
|
||||||
|
|
70
script/zip_manifests/dist_zip.win.arm64.manifest
Executable file
70
script/zip_manifests/dist_zip.win.arm64.manifest
Executable file
|
@ -0,0 +1,70 @@
|
||||||
|
LICENSE
|
||||||
|
LICENSES.chromium.html
|
||||||
|
chrome_100_percent.pak
|
||||||
|
chrome_200_percent.pak
|
||||||
|
electron.exe
|
||||||
|
ffmpeg.dll
|
||||||
|
icudtl.dat
|
||||||
|
libEGL.dll
|
||||||
|
libGLESv2.dll
|
||||||
|
locales/am.pak
|
||||||
|
locales/ar.pak
|
||||||
|
locales/bg.pak
|
||||||
|
locales/bn.pak
|
||||||
|
locales/ca.pak
|
||||||
|
locales/cs.pak
|
||||||
|
locales/da.pak
|
||||||
|
locales/de.pak
|
||||||
|
locales/el.pak
|
||||||
|
locales/en-GB.pak
|
||||||
|
locales/en-US.pak
|
||||||
|
locales/es-419.pak
|
||||||
|
locales/es.pak
|
||||||
|
locales/et.pak
|
||||||
|
locales/fa.pak
|
||||||
|
locales/fi.pak
|
||||||
|
locales/fil.pak
|
||||||
|
locales/fr.pak
|
||||||
|
locales/gu.pak
|
||||||
|
locales/he.pak
|
||||||
|
locales/hi.pak
|
||||||
|
locales/hr.pak
|
||||||
|
locales/hu.pak
|
||||||
|
locales/id.pak
|
||||||
|
locales/it.pak
|
||||||
|
locales/ja.pak
|
||||||
|
locales/kn.pak
|
||||||
|
locales/ko.pak
|
||||||
|
locales/lt.pak
|
||||||
|
locales/lv.pak
|
||||||
|
locales/ml.pak
|
||||||
|
locales/mr.pak
|
||||||
|
locales/ms.pak
|
||||||
|
locales/nb.pak
|
||||||
|
locales/nl.pak
|
||||||
|
locales/pl.pak
|
||||||
|
locales/pt-BR.pak
|
||||||
|
locales/pt-PT.pak
|
||||||
|
locales/ro.pak
|
||||||
|
locales/ru.pak
|
||||||
|
locales/sk.pak
|
||||||
|
locales/sl.pak
|
||||||
|
locales/sr.pak
|
||||||
|
locales/sv.pak
|
||||||
|
locales/sw.pak
|
||||||
|
locales/ta.pak
|
||||||
|
locales/te.pak
|
||||||
|
locales/th.pak
|
||||||
|
locales/tr.pak
|
||||||
|
locales/uk.pak
|
||||||
|
locales/vi.pak
|
||||||
|
locales/zh-CN.pak
|
||||||
|
locales/zh-TW.pak
|
||||||
|
natives_blob.bin
|
||||||
|
resources.pak
|
||||||
|
resources/default_app.asar
|
||||||
|
snapshot_blob.bin
|
||||||
|
swiftshader/libEGL.dll
|
||||||
|
swiftshader/libGLESv2.dll
|
||||||
|
v8_context_snapshot.bin
|
||||||
|
version
|
Loading…
Reference in a new issue