build: build mas and darwin simultaneously (#36354)

build: build mas on osx
This commit is contained in:
Samuel Attard 2022-11-16 10:57:09 -08:00 committed by GitHub
parent 9616dfb1f6
commit bd345358f6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -137,6 +137,7 @@ env-mas-apple-silicon: &env-mas-apple-silicon
MAS_BUILD: 'true'
TARGET_ARCH: arm64
USE_PREBUILT_V8_CONTEXT_SNAPSHOT: 1
npm_config_arch: arm64
env-send-slack-notifications: &env-send-slack-notifications
NOTIFY_SLACK: true
@ -545,43 +546,6 @@ step-gn-check: &step-gn-check
node electron/script/gen-hunspell-filenames.js --check
node electron/script/gen-libc++-filenames.js --check
step-electron-build: &step-electron-build
run:
name: Electron build
no_output_timeout: 60m
command: |
# On arm platforms we generate a cross-arch ffmpeg that ninja does not seem
# to realize is not correct / should be rebuilt. We delete it here so it is
# rebuilt
if [ "$TRIGGER_ARM_TEST" == "true" ]; then
rm -f src/out/Default/libffmpeg.so
fi
cd src
# Enable if things get really bad
# if [ "$TARGET_ARCH" == "arm64" ] &&[ "`uname`" == "Darwin" ]; then
# diskutil erasevolume HFS+ "xcode_disk" `hdiutil attach -nomount ram://12582912`
# mv /Applications/Xcode-12.beta.5.app /Volumes/xcode_disk/
# ln -s /Volumes/xcode_disk/Xcode-12.beta.5.app /Applications/Xcode-12.beta.5.app
# fi
# Lets generate a snapshot and mksnapshot and then delete all the x-compiled generated files to save space
if [ "$USE_PREBUILT_V8_CONTEXT_SNAPSHOT" == "1" ]; then
ninja -C out/Default electron:electron_mksnapshot_zip -j $NUMBER_OF_NINJA_PROCESSES
ninja -C out/Default tools/v8_context_snapshot -j $NUMBER_OF_NINJA_PROCESSES
gn desc out/Default v8:run_mksnapshot_default args > out/Default/mksnapshot_args
(cd out/Default; zip mksnapshot.zip mksnapshot_args clang_x64_v8_arm64/gen/v8/embedded.S)
rm -rf out/Default/clang_x64_v8_arm64/gen
rm -rf out/Default/clang_x64_v8_arm64/obj
rm -rf out/Default/clang_x64_v8_arm64/thinlto-cache
rm -rf out/Default/clang_x64/obj
# Regenerate because we just deleted some ninja files
gn gen out/Default --args="import(\"$GN_CONFIG\") import(\"$GN_GOMA_FILE\") $GN_EXTRA_ARGS $GN_BUILDFLAG_ARGS"
fi
NINJA_SUMMARIZE_BUILD=1 autoninja -C out/Default electron -j $NUMBER_OF_NINJA_PROCESSES
cp out/Default/.ninja_log out/electron_ninja_log
node electron/script/check-symlinks.js
step-maybe-electron-dist-strip: &step-maybe-electron-dist-strip
run:
name: Strip electron binaries
@ -642,28 +606,6 @@ step-electron-publish: &step-electron-publish
script/release/uploaders/upload.py --verbose
fi
step-persist-data-for-tests: &step-persist-data-for-tests
persist_to_workspace:
root: .
paths:
# Build artifacts
- src/out/Default/dist.zip
- src/out/Default/mksnapshot.zip
- src/out/Default/chromedriver.zip
- src/out/Default/gen/node_headers
- src/out/Default/overlapped-checker
- src/out/ffmpeg/ffmpeg.zip
- src/electron
- src/third_party/electron_node
- src/third_party/nan
- src/cross-arch-snapshots
- src/third_party/llvm-build
- src/build/linux
- src/buildtools/third_party/libc++
- src/buildtools/third_party/libc++abi
- src/out/Default/obj/buildtools/third_party
- src/v8/tools/builtins-pgo
step-electron-dist-unzip: &step-electron-dist-unzip
run:
name: Unzip dist.zip
@ -808,6 +750,16 @@ step-maybe-generate-breakpad-symbols: &step-maybe-generate-breakpad-symbols
fi
step-maybe-zip-symbols: &step-maybe-zip-symbols
run:
name: Zip symbols
command: |
cd src
export BUILD_PATH="$PWD/out/Default"
ninja -C out/Default electron:licenses
ninja -C out/Default electron:electron_version_file
electron/script/zip-symbols.py -b $BUILD_PATH
step-maybe-zip-symbols-and-clean: &step-maybe-zip-symbols-and-clean
run:
name: Zip symbols
command: |
@ -838,6 +790,12 @@ step-maybe-cross-arch-snapshot: &step-maybe-cross-arch-snapshot
python electron/script/verify-mksnapshot.py --source-root "$PWD" --build-dir out/Default --create-snapshot-only
mkdir cross-arch-snapshots
cp out/Default-mksnapshot-test/*.bin cross-arch-snapshots
# Clean up so that ninja does not get confused
if [ "`uname`" == "Linux" ]; then
rm -f out/Default/libffmpeg.so
elif [ "`uname`" == "Darwin" ]; then
rm -f out/Default/libffmpeg.dylib
fi
fi
step-maybe-generate-typescript-defs: &step-maybe-generate-typescript-defs
@ -1016,99 +974,6 @@ steps-electron-ts-compile-for-doc-change: &steps-electron-ts-compile-for-doc-cha
#Compile ts/js to verify doc change didn't break anything
- *step-ts-compile
steps-tests: &steps-tests
steps:
- attach_workspace:
at: .
- *step-depot-tools-add-to-path
- *step-electron-dist-unzip
- *step-mksnapshot-unzip
- *step-chromedriver-unzip
- *step-setup-linux-for-headless-testing
- *step-restore-brew-cache
- *step-fix-known-hosts-linux
- install-python2-mac
- *step-install-signing-cert-on-mac
- run:
name: Run Electron tests
environment:
MOCHA_REPORTER: mocha-multi-reporters
ELECTRON_TEST_RESULTS_DIR: junit
MOCHA_MULTI_REPORTERS: mocha-junit-reporter, tap
ELECTRON_DISABLE_SECURITY_WARNINGS: 1
command: |
cd src
if [ "$IS_ASAN" == "1" ]; then
ASAN_SYMBOLIZE="$PWD/tools/valgrind/asan/asan_symbolize.py --executable-path=$PWD/out/Default/electron"
export ASAN_OPTIONS="symbolize=0 handle_abort=1"
export G_SLICE=always-malloc
export NSS_DISABLE_ARENA_FREE_LIST=1
export NSS_DISABLE_UNLOAD=1
export LLVM_SYMBOLIZER_PATH=$PWD/third_party/llvm-build/Release+Asserts/bin/llvm-symbolizer
export MOCHA_TIMEOUT=180000
echo "Piping output to ASAN_SYMBOLIZE ($ASAN_SYMBOLIZE)"
(cd electron && node script/yarn test --runners=main --trace-uncaught --enable-logging --files $(circleci tests glob spec/*-spec.ts | circleci tests split --split-by=timings)) 2>&1 | $ASAN_SYMBOLIZE
else
if [ "$TARGET_ARCH" == "arm" ] || [ "$TARGET_ARCH" == "arm64" ]; then
export ELECTRON_SKIP_NATIVE_MODULE_TESTS=true
(cd electron && node script/yarn test --runners=main --trace-uncaught --enable-logging)
else
if [ "$TARGET_ARCH" == "ia32" ]; then
npm_config_arch=x64 node electron/node_modules/dugite/script/download-git.js
fi
(cd electron && node script/yarn test --runners=main --trace-uncaught --enable-logging --files $(circleci tests glob spec/*-spec.ts | circleci tests split --split-by=timings))
fi
fi
- run:
name: Check test results existence
command: |
cd src
# Check if test results exist and are not empty.
if [ ! -s "junit/test-results-main.xml" ]; then
exit 1
fi
- store_test_results:
path: src/junit
- *step-verify-mksnapshot
- *step-verify-chromedriver
- *step-maybe-notify-slack-failure
- *step-maybe-cleanup-arm64-mac
steps-test-nan: &steps-test-nan
steps:
- attach_workspace:
at: .
- *step-depot-tools-add-to-path
- *step-electron-dist-unzip
- *step-setup-linux-for-headless-testing
- *step-fix-known-hosts-linux
- run:
name: Run Nan Tests
command: |
cd src
node electron/script/nan-spec-runner.js
steps-test-node: &steps-test-node
steps:
- attach_workspace:
at: .
- *step-depot-tools-add-to-path
- *step-electron-dist-unzip
- *step-setup-linux-for-headless-testing
- *step-fix-known-hosts-linux
- run:
name: Run Node Tests
command: |
cd src
node electron/script/node-spec-runner.js --default --jUnitDir=junit
- store_test_results:
path: src/junit
# Command Aliases
commands:
install-python2-mac:
@ -1167,17 +1032,65 @@ commands:
mv /var/portal/src ./
fi
build_and_save_artifacts:
parameters:
artifact-key:
type: string
build-nonproprietary-ffmpeg:
type: boolean
default: true
steps:
- *step-gn-gen-default
- ninja_build_electron:
clean-prebuilt-snapshot: false
- *step-maybe-electron-dist-strip
- step-electron-dist-build:
additional-targets: shell_browser_ui_unittests third_party/electron_node:headers third_party/electron_node:overlapped-checker electron:hunspell_dictionaries_zip
- *step-show-goma-stats
# mksnapshot
- *step-mksnapshot-build
- *step-maybe-cross-arch-snapshot
# chromedriver
- *step-electron-chromedriver-build
- when:
condition: << parameters.build-nonproprietary-ffmpeg >>
steps:
# ffmpeg
- *step-ffmpeg-gn-gen
- *step-ffmpeg-build
- *step-maybe-generate-breakpad-symbols
- *step-maybe-zip-symbols
- move_and_store_all_artifacts:
artifact-key: << parameters.artifact-key >>
move_and_store_all_artifacts:
parameters:
artifact-key:
type: string
steps:
- run:
name: Move all generated artifacts to upload folder
command: |
rm -rf generated_artifacts
mkdir generated_artifacts
rm -rf generated_artifacts_<< parameters.artifact-key >>
mkdir generated_artifacts_<< parameters.artifact-key >>
mv_if_exist() {
if [ -f "$1" ] || [ -d "$1" ]; then
echo Storing $1
mv $1 generated_artifacts
mv $1 generated_artifacts_<< parameters.artifact-key >>
else
echo Skipping $1 - It is not present on disk
fi
}
cp_if_exist() {
if [ -f "$1" ] || [ -d "$1" ]; then
echo Storing $1
cp $1 generated_artifacts_<< parameters.artifact-key >>
else
echo Skipping $1 - It is not present on disk
fi
@ -1190,15 +1103,43 @@ commands:
mv_if_exist src/out/ffmpeg/ffmpeg.zip
mv_if_exist src/out/Default/hunspell_dictionaries.zip
mv_if_exist src/cross-arch-snapshots
mv_if_exist src/out/electron_ninja_log
mv_if_exist src/out/Default/.ninja_log
cp_if_exist src/out/electron_ninja_log
cp_if_exist src/out/Default/.ninja_log
when: always
- store_artifacts:
path: generated_artifacts
destination: ./
path: generated_artifacts_<< parameters.artifact-key >>
destination: ./<< parameters.artifact-key >>
- store_artifacts:
path: generated_artifacts/cross-arch-snapshots
destination: cross-arch-snapshots
path: generated_artifacts_<< parameters.artifact-key >>/cross-arch-snapshots
destination: << parameters.artifact-key >>/cross-arch-snapshots
restore_build_artifacts:
parameters:
artifact-key:
type: string
steps:
- attach_workspace:
at: .
- run:
name: Restore key specific artifacts
command: |
mv_if_exist() {
if [ -f "generated_artifacts_<< parameters.artifact-key >>/$1" ] || [ -d "generated_artifacts_<< parameters.artifact-key >>/$1" ]; then
echo Restoring $1 to $2
mkdir -p $2
mv generated_artifacts_<< parameters.artifact-key >>/$1 $2
else
echo Skipping $1 - It is not present on disk
fi
}
mv_if_exist dist.zip src/out/Default
mv_if_exist node_headers.tar.gz src/out/Default/gen
mv_if_exist symbols.zip src/out/Default
mv_if_exist mksnapshot.zip src/out/Default
mv_if_exist chromedriver.zip src/out/Default
mv_if_exist ffmpeg.zip src/out/ffmpeg
mv_if_exist hunspell_dictionaries.zip src/out/Default
mv_if_exist cross-arch-snapshots src
checkout-from-cache:
steps:
@ -1232,7 +1173,7 @@ commands:
command: |
cd src
if [ "$SKIP_DIST_ZIP" != "1" ]; then
ninja -C out/Default electron:electron_dist_zip << parameters.additional-targets >>
ninja -C out/Default electron:electron_dist_zip << parameters.additional-targets >> -j $NUMBER_OF_NINJA_PROCESSES
if [ "$CHECK_DIST_MANIFEST" == "1" ]; then
if [ "`uname`" == "Darwin" ]; then
target_os=mac
@ -1258,6 +1199,40 @@ commands:
fi
fi
ninja_build_electron:
parameters:
clean-prebuilt-snapshot:
type: boolean
default: true
steps:
- run:
name: Electron build
no_output_timeout: 60m
command: |
cd src
# Lets generate a snapshot and mksnapshot and then delete all the x-compiled generated files to save space
if [ "$USE_PREBUILT_V8_CONTEXT_SNAPSHOT" == "1" ]; then
ninja -C out/Default electron:electron_mksnapshot_zip -j $NUMBER_OF_NINJA_PROCESSES
ninja -C out/Default tools/v8_context_snapshot -j $NUMBER_OF_NINJA_PROCESSES
gn desc out/Default v8:run_mksnapshot_default args > out/Default/mksnapshot_args
(cd out/Default; zip mksnapshot.zip mksnapshot_args clang_x64_v8_arm64/gen/v8/embedded.S)
if [ "<< parameters.clean-prebuilt-snapshot >>" == "true" ]; then
rm -rf out/Default/clang_x64_v8_arm64/gen
rm -rf out/Default/clang_x64_v8_arm64/obj
rm -rf out/Default/clang_x64_v8_arm64/thinlto-cache
rm -rf out/Default/clang_x64/obj
# Regenerate because we just deleted some ninja files
gn gen out/Default --args="import(\"$GN_CONFIG\") import(\"$GN_GOMA_FILE\") $GN_EXTRA_ARGS $GN_BUILDFLAG_ARGS"
fi
# For x-compiles this will be built to the wrong arch after the context snapshot build
# so we wipe it before re-linking it below
rm -rf out/Default/libffmpeg.dylib
fi
NINJA_SUMMARIZE_BUILD=1 autoninja -C out/Default electron -j $NUMBER_OF_NINJA_PROCESSES
cp out/Default/.ninja_log out/electron_ninja_log
node electron/script/check-symlinks.js
electron-build:
parameters:
attach:
@ -1290,6 +1265,14 @@ commands:
build-nonproprietary-ffmpeg:
type: boolean
default: true
artifact-key:
type: string
after-build-and-save:
type: steps
default: []
after-persist:
type: steps
default: []
steps:
- when:
condition: << parameters.attach >>
@ -1405,28 +1388,13 @@ commands:
- *step-fix-sync
- *step-delete-git-directories
# Electron app
- *step-gn-gen-default
- *step-electron-build
- *step-maybe-electron-dist-strip
- step-electron-dist-build:
additional-targets: shell_browser_ui_unittests third_party/electron_node:headers third_party/electron_node:overlapped-checker electron:hunspell_dictionaries_zip
- *step-show-goma-stats
# mksnapshot
- *step-mksnapshot-build
- *step-maybe-cross-arch-snapshot
# chromedriver
- *step-electron-chromedriver-build
- when:
condition: << parameters.build-nonproprietary-ffmpeg >>
condition: << parameters.build >>
steps:
# ffmpeg
- *step-ffmpeg-gn-gen
- *step-ffmpeg-build
- build_and_save_artifacts:
artifact-key: << parameters.artifact-key >>
build-nonproprietary-ffmpeg: << parameters.build-nonproprietary-ffmpeg >>
- steps: << parameters.after-build-and-save >>
# Save all data needed for a further tests run.
- when:
@ -1436,21 +1404,132 @@ commands:
- run: |
rm -rf src/third_party/electron_node/deps/openssl
rm -rf src/third_party/electron_node/deps/v8
- *step-persist-data-for-tests
- persist_to_workspace:
root: .
paths:
# Build artifacts
- generated_artifacts_<< parameters.artifact-key >>
- src/out/Default/gen/node_headers
- src/out/Default/overlapped-checker
- src/electron
- src/third_party/electron_node
- src/third_party/nan
- src/cross-arch-snapshots
- src/third_party/llvm-build
- src/build/linux
- src/buildtools/third_party/libc++
- src/buildtools/third_party/libc++abi
- src/out/Default/obj/buildtools/third_party
- src/v8/tools/builtins-pgo
- steps: << parameters.after-persist >>
- when:
condition: << parameters.build >>
steps:
- *step-maybe-generate-breakpad-symbols
- *step-maybe-zip-symbols
- *step-maybe-notify-slack-failure
- when:
condition: << parameters.build >>
electron-tests:
parameters:
artifact-key:
type: string
steps:
- move_and_store_all_artifacts
- restore_build_artifacts:
artifact-key: << parameters.artifact-key >>
- *step-depot-tools-add-to-path
- *step-electron-dist-unzip
- *step-mksnapshot-unzip
- *step-chromedriver-unzip
- *step-setup-linux-for-headless-testing
- *step-restore-brew-cache
- *step-fix-known-hosts-linux
- install-python2-mac
- *step-install-signing-cert-on-mac
- run:
name: Run Electron tests
environment:
MOCHA_REPORTER: mocha-multi-reporters
ELECTRON_TEST_RESULTS_DIR: junit
MOCHA_MULTI_REPORTERS: mocha-junit-reporter, tap
ELECTRON_DISABLE_SECURITY_WARNINGS: 1
command: |
cd src
if [ "$IS_ASAN" == "1" ]; then
ASAN_SYMBOLIZE="$PWD/tools/valgrind/asan/asan_symbolize.py --executable-path=$PWD/out/Default/electron"
export ASAN_OPTIONS="symbolize=0 handle_abort=1"
export G_SLICE=always-malloc
export NSS_DISABLE_ARENA_FREE_LIST=1
export NSS_DISABLE_UNLOAD=1
export LLVM_SYMBOLIZER_PATH=$PWD/third_party/llvm-build/Release+Asserts/bin/llvm-symbolizer
export MOCHA_TIMEOUT=180000
echo "Piping output to ASAN_SYMBOLIZE ($ASAN_SYMBOLIZE)"
(cd electron && node script/yarn test --runners=main --trace-uncaught --enable-logging --files $(circleci tests glob spec/*-spec.ts | circleci tests split --split-by=timings)) 2>&1 | $ASAN_SYMBOLIZE
else
if [ "$TARGET_ARCH" == "arm" ] || [ "$TARGET_ARCH" == "arm64" ]; then
export ELECTRON_SKIP_NATIVE_MODULE_TESTS=true
(cd electron && node script/yarn test --runners=main --trace-uncaught --enable-logging)
else
if [ "$TARGET_ARCH" == "ia32" ]; then
npm_config_arch=x64 node electron/node_modules/dugite/script/download-git.js
fi
(cd electron && node script/yarn test --runners=main --trace-uncaught --enable-logging --files $(circleci tests glob spec/*-spec.ts | circleci tests split --split-by=timings))
fi
fi
- run:
name: Check test results existence
command: |
cd src
# Check if test results exist and are not empty.
if [ ! -s "junit/test-results-main.xml" ]; then
exit 1
fi
- store_test_results:
path: src/junit
- *step-verify-mksnapshot
- *step-verify-chromedriver
- *step-maybe-notify-slack-failure
- *step-maybe-cleanup-arm64-mac
nan-tests:
parameters:
artifact-key:
type: string
steps:
- restore_build_artifacts:
artifact-key: << parameters.artifact-key >>
- *step-depot-tools-add-to-path
- *step-electron-dist-unzip
- *step-setup-linux-for-headless-testing
- *step-fix-known-hosts-linux
- run:
name: Run Nan Tests
command: |
cd src
node electron/script/nan-spec-runner.js
node-tests:
parameters:
artifact-key:
type: string
steps:
- restore_build_artifacts:
artifact-key: << parameters.artifact-key >>
- *step-depot-tools-add-to-path
- *step-electron-dist-unzip
- *step-setup-linux-for-headless-testing
- *step-fix-known-hosts-linux
- run:
name: Run Node Tests
command: |
cd src
node electron/script/node-spec-runner.js --default --jUnitDir=junit
- store_test_results:
path: src/junit
electron-publish:
parameters:
attach:
@ -1490,12 +1569,12 @@ commands:
- *step-gn-gen-default
# Electron app
- *step-electron-build
- ninja_build_electron
- *step-show-goma-stats
- *step-maybe-generate-breakpad-symbols
- *step-maybe-electron-dist-strip
- step-electron-dist-build
- *step-maybe-zip-symbols
- *step-maybe-zip-symbols-and-clean
# mksnapshot
- *step-mksnapshot-build
@ -1521,7 +1600,8 @@ commands:
# Publish
- *step-electron-publish
- move_and_store_all_artifacts
- move_and_store_all_artifacts:
artifact-key: 'publish'
# List of all jobs.
jobs:
@ -1551,6 +1631,7 @@ jobs:
checkout: true
save-git-cache: true
checkout-to-create-src-cache: true
artifact-key: 'nil'
mac-checkout:
executor:
@ -1568,6 +1649,7 @@ jobs:
checkout: true
persist-checkout: true
restore-src-cache: false
artifact-key: 'nil'
mac-make-src-cache:
executor:
@ -1585,6 +1667,7 @@ jobs:
checkout: true
save-git-cache: true
checkout-to-create-src-cache: true
artifact-key: 'nil'
# Layer 2: Builds.
linux-x64-testing:
@ -1601,6 +1684,7 @@ jobs:
persist: true
checkout: false
checkout-and-assume-cache: true
artifact-key: 'linux-x64'
linux-x64-testing-asan:
executor:
@ -1618,6 +1702,7 @@ jobs:
persist: true
checkout: true
build-nonproprietary-ffmpeg: false
artifact-key: 'linux-x64-asan'
linux-x64-testing-no-run-as-node:
executor:
@ -1633,6 +1718,7 @@ jobs:
- electron-build:
persist: false
checkout: true
artifact-key: 'linux-x64-no-run-as-node'
linux-x64-testing-gn-check:
executor:
@ -1683,6 +1769,7 @@ jobs:
persist: true
checkout: false
checkout-and-assume-cache: true
artifact-key: 'linux-arm'
linux-arm-publish:
executor:
@ -1725,6 +1812,7 @@ jobs:
persist: true
checkout: false
checkout-and-assume-cache: true
artifact-key: 'linux-arm64'
linux-arm64-testing-gn-check:
executor:
@ -1776,6 +1864,22 @@ jobs:
checkout: false
checkout-and-assume-cache: true
attach: true
artifact-key: 'darwin-x64'
after-build-and-save:
- run:
name: Configuring MAS build
command: |
echo 'export GN_EXTRA_ARGS="is_mas_build = true $GN_EXTRA_ARGS"' >> $BASH_ENV
echo 'export MAS_BUILD="true"' >> $BASH_ENV
rm -rf "src/out/Default/Electron Framework.framework"
rm -rf src/out/Default/Electron*.app
- build_and_save_artifacts:
artifact-key: 'mas-x64'
after-persist:
- persist_to_workspace:
root: .
paths:
- generated_artifacts_mas-x64
osx-testing-x64-gn-check:
executor:
@ -1848,35 +1952,22 @@ jobs:
checkout: false
checkout-and-assume-cache: true
attach: true
mas-testing-x64:
executor:
name: macos
size: macos.x86.medium.gen2
environment:
<<: *env-mac-large
<<: *env-mas
<<: *env-testing-build
<<: *env-ninja-status
<<: *env-macos-build
GCLIENT_EXTRA_ARGS: '--custom-var=checkout_mac=True --custom-var=host_os=mac'
steps:
- electron-build:
persist: true
checkout: false
checkout-and-assume-cache: true
attach: true
mas-testing-x64-gn-check:
executor:
name: macos
size: macos.x86.medium.gen2
environment:
<<: *env-machine-mac
<<: *env-mas
<<: *env-testing-build
GCLIENT_EXTRA_ARGS: '--custom-var=checkout_mac=True --custom-var=host_os=mac'
<<: *steps-electron-gn-check
artifact-key: 'darwin-arm64'
after-build-and-save:
- run:
name: Configuring MAS build
command: |
echo 'export GN_EXTRA_ARGS="is_mas_build = true $GN_EXTRA_ARGS"' >> $BASH_ENV
echo 'export MAS_BUILD="true"' >> $BASH_ENV
rm -rf "src/out/Default/Electron Framework.framework"
rm -rf src/out/Default/Electron*.app
- build_and_save_artifacts:
artifact-key: 'mas-arm64'
after-persist:
- persist_to_workspace:
root: .
paths:
- generated_artifacts_mas-arm64
mas-publish-x64:
executor:
@ -1921,25 +2012,6 @@ jobs:
attach: true
checkout: false
mas-testing-arm64:
executor:
name: macos
size: macos.x86.medium.gen2
environment:
<<: *env-mac-large
<<: *env-testing-build
<<: *env-ninja-status
<<: *env-macos-build
<<: *env-mas-apple-silicon
GCLIENT_EXTRA_ARGS: '--custom-var=checkout_mac=True --custom-var=host_os=mac'
GENERATE_CROSS_ARCH_SNAPSHOT: true
steps:
- electron-build:
persist: true
checkout: false
checkout-and-assume-cache: true
attach: true
# Layer 3: Tests.
linux-x64-testing-tests:
executor:
@ -1950,7 +2022,9 @@ jobs:
<<: *env-headless-testing
<<: *env-stack-dumping
parallelism: 3
<<: *steps-tests
steps:
- electron-tests:
artifact-key: linux-x64
linux-x64-testing-asan-tests:
executor:
@ -1963,7 +2037,9 @@ jobs:
IS_ASAN: '1'
DISABLE_CRASH_REPORTER_TESTS: '1'
parallelism: 3
<<: *steps-tests
steps:
- electron-tests:
artifact-key: linux-x64-asan
linux-x64-testing-nan:
executor:
@ -1973,7 +2049,9 @@ jobs:
<<: *env-linux-medium
<<: *env-headless-testing
<<: *env-stack-dumping
<<: *steps-test-nan
steps:
- nan-tests:
artifact-key: linux-x64
linux-x64-testing-node:
executor:
@ -1983,7 +2061,9 @@ jobs:
<<: *env-linux-medium
<<: *env-headless-testing
<<: *env-stack-dumping
<<: *steps-test-node
steps:
- node-tests:
artifact-key: linux-x64
linux-arm-testing-tests:
executor: linux-arm
@ -1992,7 +2072,9 @@ jobs:
<<: *env-global
<<: *env-headless-testing
<<: *env-stack-dumping
<<: *steps-tests
steps:
- electron-tests:
artifact-key: linux-arm
linux-arm64-testing-tests:
executor: linux-arm64
@ -2001,9 +2083,11 @@ jobs:
<<: *env-global
<<: *env-headless-testing
<<: *env-stack-dumping
<<: *steps-tests
steps:
- electron-tests:
artifact-key: linux-arm64
osx-testing-x64-tests:
darwin-testing-x64-tests:
executor:
name: macos
size: macos.x86.medium.gen2
@ -2011,16 +2095,20 @@ jobs:
<<: *env-mac-large
<<: *env-stack-dumping
parallelism: 2
<<: *steps-tests
steps:
- electron-tests:
artifact-key: darwin-x64
osx-testing-arm64-tests:
darwin-testing-arm64-tests:
executor: apple-silicon
environment:
<<: *env-mac-large
<<: *env-stack-dumping
<<: *env-apple-silicon
<<: *env-runner
<<: *steps-tests
steps:
- electron-tests:
artifact-key: darwin-arm64
mas-testing-x64-tests:
executor:
@ -2030,7 +2118,9 @@ jobs:
<<: *env-mac-large
<<: *env-stack-dumping
parallelism: 2
<<: *steps-tests
steps:
- electron-tests:
artifact-key: mas-x64
mas-testing-arm64-tests:
executor: apple-silicon
@ -2039,7 +2129,9 @@ jobs:
<<: *env-stack-dumping
<<: *env-apple-silicon
<<: *env-runner
<<: *steps-tests
steps:
- electron-tests:
artifact-key: mas-arm64
# List all workflows
workflows:
@ -2153,38 +2245,29 @@ workflows:
- osx-testing-x64-gn-check:
requires:
- mac-make-src-cache
- osx-testing-x64-tests:
- darwin-testing-x64-tests:
requires:
- osx-testing-x64
- osx-testing-arm64:
requires:
- mac-make-src-cache
- osx-testing-arm64-tests:
- darwin-testing-arm64-tests:
filters:
branches:
# Do not run this on forked pull requests
ignore: /pull\/[0-9]+/
requires:
- osx-testing-arm64
- mas-testing-x64:
requires:
- mac-make-src-cache
- mas-testing-x64-gn-check:
requires:
- mac-make-src-cache
- mas-testing-x64-tests:
requires:
- mas-testing-x64
- mas-testing-arm64:
requires:
- mac-make-src-cache
- osx-testing-x64
- mas-testing-arm64-tests:
filters:
branches:
# Do not run this on forked pull requests
ignore: /pull\/[0-9]+/
requires:
- mas-testing-arm64
- osx-testing-arm64
lint:
jobs:
- lint