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' MAS_BUILD: 'true'
TARGET_ARCH: arm64 TARGET_ARCH: arm64
USE_PREBUILT_V8_CONTEXT_SNAPSHOT: 1 USE_PREBUILT_V8_CONTEXT_SNAPSHOT: 1
npm_config_arch: arm64
env-send-slack-notifications: &env-send-slack-notifications env-send-slack-notifications: &env-send-slack-notifications
NOTIFY_SLACK: true 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-hunspell-filenames.js --check
node electron/script/gen-libc++-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 step-maybe-electron-dist-strip: &step-maybe-electron-dist-strip
run: run:
name: Strip electron binaries name: Strip electron binaries
@ -642,28 +606,6 @@ step-electron-publish: &step-electron-publish
script/release/uploaders/upload.py --verbose script/release/uploaders/upload.py --verbose
fi 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 step-electron-dist-unzip: &step-electron-dist-unzip
run: run:
name: Unzip dist.zip name: Unzip dist.zip
@ -808,6 +750,16 @@ step-maybe-generate-breakpad-symbols: &step-maybe-generate-breakpad-symbols
fi fi
step-maybe-zip-symbols: &step-maybe-zip-symbols 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: run:
name: Zip symbols name: Zip symbols
command: | 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 python electron/script/verify-mksnapshot.py --source-root "$PWD" --build-dir out/Default --create-snapshot-only
mkdir cross-arch-snapshots mkdir cross-arch-snapshots
cp out/Default-mksnapshot-test/*.bin 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 fi
step-maybe-generate-typescript-defs: &step-maybe-generate-typescript-defs 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 #Compile ts/js to verify doc change didn't break anything
- *step-ts-compile - *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 # Command Aliases
commands: commands:
install-python2-mac: install-python2-mac:
@ -1167,17 +1032,65 @@ commands:
mv /var/portal/src ./ mv /var/portal/src ./
fi 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: move_and_store_all_artifacts:
parameters:
artifact-key:
type: string
steps: steps:
- run: - run:
name: Move all generated artifacts to upload folder name: Move all generated artifacts to upload folder
command: | command: |
rm -rf generated_artifacts rm -rf generated_artifacts_<< parameters.artifact-key >>
mkdir generated_artifacts mkdir generated_artifacts_<< parameters.artifact-key >>
mv_if_exist() { mv_if_exist() {
if [ -f "$1" ] || [ -d "$1" ]; then if [ -f "$1" ] || [ -d "$1" ]; then
echo Storing $1 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 else
echo Skipping $1 - It is not present on disk echo Skipping $1 - It is not present on disk
fi fi
@ -1190,15 +1103,43 @@ commands:
mv_if_exist src/out/ffmpeg/ffmpeg.zip mv_if_exist src/out/ffmpeg/ffmpeg.zip
mv_if_exist src/out/Default/hunspell_dictionaries.zip mv_if_exist src/out/Default/hunspell_dictionaries.zip
mv_if_exist src/cross-arch-snapshots mv_if_exist src/cross-arch-snapshots
mv_if_exist src/out/electron_ninja_log cp_if_exist src/out/electron_ninja_log
mv_if_exist src/out/Default/.ninja_log cp_if_exist src/out/Default/.ninja_log
when: always when: always
- store_artifacts: - store_artifacts:
path: generated_artifacts path: generated_artifacts_<< parameters.artifact-key >>
destination: ./ destination: ./<< parameters.artifact-key >>
- store_artifacts: - store_artifacts:
path: generated_artifacts/cross-arch-snapshots path: generated_artifacts_<< parameters.artifact-key >>/cross-arch-snapshots
destination: 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: checkout-from-cache:
steps: steps:
@ -1232,7 +1173,7 @@ commands:
command: | command: |
cd src cd src
if [ "$SKIP_DIST_ZIP" != "1" ]; then 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 [ "$CHECK_DIST_MANIFEST" == "1" ]; then
if [ "`uname`" == "Darwin" ]; then if [ "`uname`" == "Darwin" ]; then
target_os=mac target_os=mac
@ -1258,6 +1199,40 @@ commands:
fi fi
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: electron-build:
parameters: parameters:
attach: attach:
@ -1290,6 +1265,14 @@ commands:
build-nonproprietary-ffmpeg: build-nonproprietary-ffmpeg:
type: boolean type: boolean
default: true default: true
artifact-key:
type: string
after-build-and-save:
type: steps
default: []
after-persist:
type: steps
default: []
steps: steps:
- when: - when:
condition: << parameters.attach >> condition: << parameters.attach >>
@ -1405,28 +1388,13 @@ commands:
- *step-fix-sync - *step-fix-sync
- *step-delete-git-directories - *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: - when:
condition: << parameters.build-nonproprietary-ffmpeg >> condition: << parameters.build >>
steps: steps:
# ffmpeg - build_and_save_artifacts:
- *step-ffmpeg-gn-gen artifact-key: << parameters.artifact-key >>
- *step-ffmpeg-build build-nonproprietary-ffmpeg: << parameters.build-nonproprietary-ffmpeg >>
- steps: << parameters.after-build-and-save >>
# Save all data needed for a further tests run. # Save all data needed for a further tests run.
- when: - when:
@ -1436,21 +1404,132 @@ commands:
- run: | - run: |
rm -rf src/third_party/electron_node/deps/openssl rm -rf src/third_party/electron_node/deps/openssl
rm -rf src/third_party/electron_node/deps/v8 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: - when:
condition: << parameters.build >> condition: << parameters.build >>
steps: steps:
- *step-maybe-generate-breakpad-symbols - *step-maybe-notify-slack-failure
- *step-maybe-zip-symbols
- when: electron-tests:
condition: << parameters.build >> parameters:
artifact-key:
type: string
steps: 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-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: electron-publish:
parameters: parameters:
attach: attach:
@ -1490,12 +1569,12 @@ commands:
- *step-gn-gen-default - *step-gn-gen-default
# Electron app # Electron app
- *step-electron-build - ninja_build_electron
- *step-show-goma-stats - *step-show-goma-stats
- *step-maybe-generate-breakpad-symbols - *step-maybe-generate-breakpad-symbols
- *step-maybe-electron-dist-strip - *step-maybe-electron-dist-strip
- step-electron-dist-build - step-electron-dist-build
- *step-maybe-zip-symbols - *step-maybe-zip-symbols-and-clean
# mksnapshot # mksnapshot
- *step-mksnapshot-build - *step-mksnapshot-build
@ -1521,7 +1600,8 @@ commands:
# Publish # Publish
- *step-electron-publish - *step-electron-publish
- move_and_store_all_artifacts - move_and_store_all_artifacts:
artifact-key: 'publish'
# List of all jobs. # List of all jobs.
jobs: jobs:
@ -1551,6 +1631,7 @@ jobs:
checkout: true checkout: true
save-git-cache: true save-git-cache: true
checkout-to-create-src-cache: true checkout-to-create-src-cache: true
artifact-key: 'nil'
mac-checkout: mac-checkout:
executor: executor:
@ -1568,6 +1649,7 @@ jobs:
checkout: true checkout: true
persist-checkout: true persist-checkout: true
restore-src-cache: false restore-src-cache: false
artifact-key: 'nil'
mac-make-src-cache: mac-make-src-cache:
executor: executor:
@ -1585,6 +1667,7 @@ jobs:
checkout: true checkout: true
save-git-cache: true save-git-cache: true
checkout-to-create-src-cache: true checkout-to-create-src-cache: true
artifact-key: 'nil'
# Layer 2: Builds. # Layer 2: Builds.
linux-x64-testing: linux-x64-testing:
@ -1601,6 +1684,7 @@ jobs:
persist: true persist: true
checkout: false checkout: false
checkout-and-assume-cache: true checkout-and-assume-cache: true
artifact-key: 'linux-x64'
linux-x64-testing-asan: linux-x64-testing-asan:
executor: executor:
@ -1618,6 +1702,7 @@ jobs:
persist: true persist: true
checkout: true checkout: true
build-nonproprietary-ffmpeg: false build-nonproprietary-ffmpeg: false
artifact-key: 'linux-x64-asan'
linux-x64-testing-no-run-as-node: linux-x64-testing-no-run-as-node:
executor: executor:
@ -1633,6 +1718,7 @@ jobs:
- electron-build: - electron-build:
persist: false persist: false
checkout: true checkout: true
artifact-key: 'linux-x64-no-run-as-node'
linux-x64-testing-gn-check: linux-x64-testing-gn-check:
executor: executor:
@ -1683,6 +1769,7 @@ jobs:
persist: true persist: true
checkout: false checkout: false
checkout-and-assume-cache: true checkout-and-assume-cache: true
artifact-key: 'linux-arm'
linux-arm-publish: linux-arm-publish:
executor: executor:
@ -1725,6 +1812,7 @@ jobs:
persist: true persist: true
checkout: false checkout: false
checkout-and-assume-cache: true checkout-and-assume-cache: true
artifact-key: 'linux-arm64'
linux-arm64-testing-gn-check: linux-arm64-testing-gn-check:
executor: executor:
@ -1776,6 +1864,22 @@ jobs:
checkout: false checkout: false
checkout-and-assume-cache: true checkout-and-assume-cache: true
attach: 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: osx-testing-x64-gn-check:
executor: executor:
@ -1848,35 +1952,22 @@ jobs:
checkout: false checkout: false
checkout-and-assume-cache: true checkout-and-assume-cache: true
attach: true attach: true
artifact-key: 'darwin-arm64'
mas-testing-x64: after-build-and-save:
executor: - run:
name: macos name: Configuring MAS build
size: macos.x86.medium.gen2 command: |
environment: echo 'export GN_EXTRA_ARGS="is_mas_build = true $GN_EXTRA_ARGS"' >> $BASH_ENV
<<: *env-mac-large echo 'export MAS_BUILD="true"' >> $BASH_ENV
<<: *env-mas rm -rf "src/out/Default/Electron Framework.framework"
<<: *env-testing-build rm -rf src/out/Default/Electron*.app
<<: *env-ninja-status - build_and_save_artifacts:
<<: *env-macos-build artifact-key: 'mas-arm64'
GCLIENT_EXTRA_ARGS: '--custom-var=checkout_mac=True --custom-var=host_os=mac' after-persist:
steps: - persist_to_workspace:
- electron-build: root: .
persist: true paths:
checkout: false - generated_artifacts_mas-arm64
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
mas-publish-x64: mas-publish-x64:
executor: executor:
@ -1921,25 +2012,6 @@ jobs:
attach: true attach: true
checkout: false 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. # Layer 3: Tests.
linux-x64-testing-tests: linux-x64-testing-tests:
executor: executor:
@ -1950,7 +2022,9 @@ jobs:
<<: *env-headless-testing <<: *env-headless-testing
<<: *env-stack-dumping <<: *env-stack-dumping
parallelism: 3 parallelism: 3
<<: *steps-tests steps:
- electron-tests:
artifact-key: linux-x64
linux-x64-testing-asan-tests: linux-x64-testing-asan-tests:
executor: executor:
@ -1963,7 +2037,9 @@ jobs:
IS_ASAN: '1' IS_ASAN: '1'
DISABLE_CRASH_REPORTER_TESTS: '1' DISABLE_CRASH_REPORTER_TESTS: '1'
parallelism: 3 parallelism: 3
<<: *steps-tests steps:
- electron-tests:
artifact-key: linux-x64-asan
linux-x64-testing-nan: linux-x64-testing-nan:
executor: executor:
@ -1973,7 +2049,9 @@ jobs:
<<: *env-linux-medium <<: *env-linux-medium
<<: *env-headless-testing <<: *env-headless-testing
<<: *env-stack-dumping <<: *env-stack-dumping
<<: *steps-test-nan steps:
- nan-tests:
artifact-key: linux-x64
linux-x64-testing-node: linux-x64-testing-node:
executor: executor:
@ -1983,7 +2061,9 @@ jobs:
<<: *env-linux-medium <<: *env-linux-medium
<<: *env-headless-testing <<: *env-headless-testing
<<: *env-stack-dumping <<: *env-stack-dumping
<<: *steps-test-node steps:
- node-tests:
artifact-key: linux-x64
linux-arm-testing-tests: linux-arm-testing-tests:
executor: linux-arm executor: linux-arm
@ -1992,7 +2072,9 @@ jobs:
<<: *env-global <<: *env-global
<<: *env-headless-testing <<: *env-headless-testing
<<: *env-stack-dumping <<: *env-stack-dumping
<<: *steps-tests steps:
- electron-tests:
artifact-key: linux-arm
linux-arm64-testing-tests: linux-arm64-testing-tests:
executor: linux-arm64 executor: linux-arm64
@ -2001,9 +2083,11 @@ jobs:
<<: *env-global <<: *env-global
<<: *env-headless-testing <<: *env-headless-testing
<<: *env-stack-dumping <<: *env-stack-dumping
<<: *steps-tests steps:
- electron-tests:
artifact-key: linux-arm64
osx-testing-x64-tests: darwin-testing-x64-tests:
executor: executor:
name: macos name: macos
size: macos.x86.medium.gen2 size: macos.x86.medium.gen2
@ -2011,16 +2095,20 @@ jobs:
<<: *env-mac-large <<: *env-mac-large
<<: *env-stack-dumping <<: *env-stack-dumping
parallelism: 2 parallelism: 2
<<: *steps-tests steps:
- electron-tests:
artifact-key: darwin-x64
osx-testing-arm64-tests: darwin-testing-arm64-tests:
executor: apple-silicon executor: apple-silicon
environment: environment:
<<: *env-mac-large <<: *env-mac-large
<<: *env-stack-dumping <<: *env-stack-dumping
<<: *env-apple-silicon <<: *env-apple-silicon
<<: *env-runner <<: *env-runner
<<: *steps-tests steps:
- electron-tests:
artifact-key: darwin-arm64
mas-testing-x64-tests: mas-testing-x64-tests:
executor: executor:
@ -2030,7 +2118,9 @@ jobs:
<<: *env-mac-large <<: *env-mac-large
<<: *env-stack-dumping <<: *env-stack-dumping
parallelism: 2 parallelism: 2
<<: *steps-tests steps:
- electron-tests:
artifact-key: mas-x64
mas-testing-arm64-tests: mas-testing-arm64-tests:
executor: apple-silicon executor: apple-silicon
@ -2039,7 +2129,9 @@ jobs:
<<: *env-stack-dumping <<: *env-stack-dumping
<<: *env-apple-silicon <<: *env-apple-silicon
<<: *env-runner <<: *env-runner
<<: *steps-tests steps:
- electron-tests:
artifact-key: mas-arm64
# List all workflows # List all workflows
workflows: workflows:
@ -2153,38 +2245,29 @@ workflows:
- osx-testing-x64-gn-check: - osx-testing-x64-gn-check:
requires: requires:
- mac-make-src-cache - mac-make-src-cache
- osx-testing-x64-tests: - darwin-testing-x64-tests:
requires: requires:
- osx-testing-x64 - osx-testing-x64
- osx-testing-arm64: - osx-testing-arm64:
requires: requires:
- mac-make-src-cache - mac-make-src-cache
- osx-testing-arm64-tests: - darwin-testing-arm64-tests:
filters: filters:
branches: branches:
# Do not run this on forked pull requests # Do not run this on forked pull requests
ignore: /pull\/[0-9]+/ ignore: /pull\/[0-9]+/
requires: requires:
- osx-testing-arm64 - 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: - mas-testing-x64-tests:
requires: requires:
- mas-testing-x64 - osx-testing-x64
- mas-testing-arm64:
requires:
- mac-make-src-cache
- mas-testing-arm64-tests: - mas-testing-arm64-tests:
filters: filters:
branches: branches:
# Do not run this on forked pull requests # Do not run this on forked pull requests
ignore: /pull\/[0-9]+/ ignore: /pull\/[0-9]+/
requires: requires:
- mas-testing-arm64 - osx-testing-arm64
lint: lint:
jobs: jobs:
- lint - lint