build: allow kicking build with workflow_dispatch
(#42420)
* build: allow kicking build with workflow_dispatch * build: ensure macOS build works * fix: no upload in build * build: add target_cpu to MAS config --------- Co-authored-by: Keeley Hammond <khammond@slack-corp.com>
This commit is contained in:
parent
839ba30009
commit
ff4494c18f
4 changed files with 792 additions and 766 deletions
|
@ -9,6 +9,7 @@
|
||||||
"args": [
|
"args": [
|
||||||
"import(\"//electron/build/args/testing.gn\")",
|
"import(\"//electron/build/args/testing.gn\")",
|
||||||
"use_remoteexec = true",
|
"use_remoteexec = true",
|
||||||
|
"target_cpu = \"x64\"",
|
||||||
"is_mas_build = true"
|
"is_mas_build = true"
|
||||||
],
|
],
|
||||||
"out": "Default"
|
"out": "Default"
|
||||||
|
|
771
.github/workflows/macos-build.yml
vendored
771
.github/workflows/macos-build.yml
vendored
|
@ -1,765 +1,18 @@
|
||||||
name: Build MacOS
|
name: Build MacOS
|
||||||
|
|
||||||
# TODO: change to 'pull_request' and 'push'
|
|
||||||
# when we are ready to enable this for PRs.
|
|
||||||
on:
|
on:
|
||||||
workflow_call:
|
workflow_dispatch:
|
||||||
inputs:
|
# push
|
||||||
IS_RELEASE:
|
# pull_request:
|
||||||
required: true
|
|
||||||
type: boolean
|
|
||||||
default: false
|
|
||||||
GN_CONFIG:
|
|
||||||
required: false
|
|
||||||
type: string
|
|
||||||
default: //electron/build/args/testing.gn
|
|
||||||
GN_BUILD_TYPE:
|
|
||||||
required: false
|
|
||||||
type: string
|
|
||||||
default: release
|
|
||||||
GENERATE_SYMBOLS:
|
|
||||||
required: false
|
|
||||||
type: boolean
|
|
||||||
default: false
|
|
||||||
UPLOAD_TO_STORAGE:
|
|
||||||
required: false
|
|
||||||
type: string
|
|
||||||
default: '0'
|
|
||||||
|
|
||||||
concurrency:
|
|
||||||
group: ${{ github.workflow }}-${{ github.ref }}
|
|
||||||
cancel-in-progress: true
|
|
||||||
|
|
||||||
env:
|
|
||||||
AZURE_STORAGE_ACCOUNT: ${{ secrets.AZURE_STORAGE_ACCOUNT }}
|
|
||||||
AZURE_STORAGE_KEY: ${{ secrets.AZURE_STORAGE_KEY }}
|
|
||||||
AZURE_STORAGE_CONTAINER_NAME: ${{ secrets.AZURE_STORAGE_CONTAINER_NAME }}
|
|
||||||
ELECTRON_ARTIFACTS_BLOB_STORAGE: ${{ secrets.ELECTRON_ARTIFACTS_BLOB_STORAGE }}
|
|
||||||
ELECTRON_RBE_JWT: ${{ secrets.ELECTRON_RBE_JWT }}
|
|
||||||
ELECTRON_GITHUB_TOKEN: ${{ secrets.ELECTRON_GITHUB_TOKEN }}
|
|
||||||
GN_CONFIG: ${{ inputs.GN_CONFIG }}
|
|
||||||
# Disable pre-compiled headers to reduce out size - only useful for rebuilds
|
|
||||||
GN_BUILDFLAG_ARGS: 'enable_precompiled_headers = false'
|
|
||||||
GCLIENT_EXTRA_ARGS: '--custom-var=checkout_mac=True --custom-var=host_os=mac'
|
|
||||||
CHECK_DIST_MANIFEST: '1'
|
|
||||||
IS_GHA_RELEASE: true
|
|
||||||
ELECTRON_OUT_DIR: Default
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
checkout:
|
|
||||||
runs-on: LargeLinuxRunner
|
|
||||||
steps:
|
|
||||||
- name: Checkout Electron
|
|
||||||
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29
|
|
||||||
with:
|
|
||||||
path: src/electron
|
|
||||||
fetch-depth: 0
|
|
||||||
- name: Set GIT_CACHE_PATH to make gclient to use the cache
|
|
||||||
run: |
|
|
||||||
echo "GIT_CACHE_PATH=$(pwd)/git-cache" >> $GITHUB_ENV
|
|
||||||
- name: Setup Node.js/npm
|
|
||||||
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8
|
|
||||||
with:
|
|
||||||
node-version: 20.11.x
|
|
||||||
cache: yarn
|
|
||||||
cache-dependency-path: src/electron/yarn.lock
|
|
||||||
- name: Install Dependencies
|
|
||||||
run: |
|
|
||||||
cd src/electron
|
|
||||||
node script/yarn install
|
|
||||||
- name: Get Depot Tools
|
|
||||||
timeout-minutes: 5
|
|
||||||
run: |
|
|
||||||
git clone --depth=1 https://chromium.googlesource.com/chromium/tools/depot_tools.git
|
|
||||||
if [ "`uname`" == "Darwin" ]; then
|
|
||||||
# remove ninjalog_uploader_wrapper.py from autoninja since we don't use it and it causes problems
|
|
||||||
sed -i '' '/ninjalog_uploader_wrapper.py/d' ./depot_tools/autoninja
|
|
||||||
else
|
|
||||||
sed -i '/ninjalog_uploader_wrapper.py/d' ./depot_tools/autoninja
|
|
||||||
# Remove swift-format dep from cipd on macOS until we send a patch upstream.
|
|
||||||
cd depot_tools
|
|
||||||
git apply --3way ../src/electron/.github/workflows/config/gclient.diff
|
|
||||||
fi
|
|
||||||
# Ensure depot_tools does not update.
|
|
||||||
test -d depot_tools && cd depot_tools
|
|
||||||
touch .disable_auto_update
|
|
||||||
- name: Add Depot Tools to PATH
|
|
||||||
run: echo "$(pwd)/depot_tools" >> $GITHUB_PATH
|
|
||||||
- name: Generate DEPS Hash
|
|
||||||
run: |
|
|
||||||
node src/electron/script/generate-deps-hash.js && cat src/electron/.depshash-target
|
|
||||||
echo "DEPSHASH=v1-src-cache-$(shasum src/electron/.depshash | cut -f1 -d' ')" >> $GITHUB_ENV
|
|
||||||
- name: Check If Cache Exists
|
|
||||||
id: check-cache
|
|
||||||
run: |
|
|
||||||
exists_json=$(az storage blob exists \
|
|
||||||
--account-name $AZURE_STORAGE_ACCOUNT \
|
|
||||||
--account-key $AZURE_STORAGE_KEY \
|
|
||||||
--container-name $AZURE_STORAGE_CONTAINER_NAME \
|
|
||||||
--name $DEPSHASH)
|
|
||||||
|
|
||||||
cache_exists=$(echo $exists_json | jq -r '.exists')
|
|
||||||
echo "cache_exists=$cache_exists" >> $GITHUB_OUTPUT
|
|
||||||
|
|
||||||
if (test "$cache_exists" = "true"); then
|
|
||||||
echo "Cache Exists for $DEPSHASH"
|
|
||||||
else
|
|
||||||
echo "Cache Does Not Exist for $DEPSHASH"
|
|
||||||
fi
|
|
||||||
- name: Gclient Sync
|
|
||||||
# If there is no existing src cache, we need to do a full gclient sync.
|
|
||||||
# TODO(codebytere): Add stale patch handling for non-release builds.
|
|
||||||
if: steps.check-cache.outputs.cache_exists == 'false'
|
|
||||||
run: |
|
|
||||||
gclient config \
|
|
||||||
--name "src/electron" \
|
|
||||||
--unmanaged \
|
|
||||||
${GCLIENT_EXTRA_ARGS} \
|
|
||||||
"$GITHUB_SERVER_URL/$GITHUB_REPOSITORY"
|
|
||||||
|
|
||||||
ELECTRON_USE_THREE_WAY_MERGE_FOR_PATCHES=1 gclient sync --with_branch_heads --with_tags -vvvvv
|
|
||||||
if [ ${{ inputs.IS_RELEASE }} != "true" ]; then
|
|
||||||
# Re-export all the patches to check if there were changes.
|
|
||||||
python3 src/electron/script/export_all_patches.py src/electron/patches/config.json
|
|
||||||
cd src/electron
|
|
||||||
git update-index --refresh || true
|
|
||||||
if ! git diff-index --quiet HEAD --; then
|
|
||||||
# There are changes to the patches. Make a git commit with the updated patches
|
|
||||||
git add patches
|
|
||||||
GIT_COMMITTER_NAME="PatchUp" GIT_COMMITTER_EMAIL="73610968+patchup[bot]@users.noreply.github.com" git commit -m "chore: update patches" --author="PatchUp <73610968+patchup[bot]@users.noreply.github.com>"
|
|
||||||
# Export it
|
|
||||||
mkdir -p ../../patches
|
|
||||||
git format-patch -1 --stdout --keep-subject --no-stat --full-index > ../../patches/update-patches.patch
|
|
||||||
if (node ./script/push-patch.js 2> /dev/null > /dev/null); then
|
|
||||||
echo
|
|
||||||
echo "======================================================================"
|
|
||||||
echo "Changes to the patches when applying, we have auto-pushed the diff to the current branch"
|
|
||||||
echo "A new CI job will kick off shortly"
|
|
||||||
echo "======================================================================"
|
|
||||||
exit 1
|
|
||||||
else
|
|
||||||
echo
|
|
||||||
echo "======================================================================"
|
|
||||||
echo "There were changes to the patches when applying."
|
|
||||||
echo "Check the CI artifacts for a patch you can apply to fix it."
|
|
||||||
echo "======================================================================"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# delete all .git directories under src/ except for
|
|
||||||
# third_party/angle/ and third_party/dawn/ because of build time generation of files
|
|
||||||
# gen/angle/commit.h depends on third_party/angle/.git/HEAD
|
|
||||||
# https://chromium-review.googlesource.com/c/angle/angle/+/2074924
|
|
||||||
# and dawn/common/Version_autogen.h depends on third_party/dawn/.git/HEAD
|
|
||||||
# https://dawn-review.googlesource.com/c/dawn/+/83901
|
|
||||||
# TODO: maybe better to always leave out */.git/HEAD file for all targets ?
|
|
||||||
- name: Delete .git directories under src to free space
|
|
||||||
if: steps.check-cache.outputs.cache_exists == 'false'
|
|
||||||
run: |
|
|
||||||
cd src
|
|
||||||
( find . -type d -name ".git" -not -path "./third_party/angle/*" -not -path "./third_party/dawn/*" -not -path "./electron/*" ) | xargs rm -rf
|
|
||||||
- name: Minimize Cache Size for Upload
|
|
||||||
if: steps.check-cache.outputs.cache_exists == 'false'
|
|
||||||
run: |
|
|
||||||
rm -rf src/android_webview
|
|
||||||
rm -rf src/ios/chrome
|
|
||||||
rm -rf src/third_party/blink/web_tests
|
|
||||||
rm -rf src/third_party/blink/perf_tests
|
|
||||||
rm -rf src/chrome/test/data/xr/webvr_info
|
|
||||||
rm -rf src/third_party/angle/third_party/VK-GL-CTS/src
|
|
||||||
rm -rf src/third_party/swift-toolchain
|
|
||||||
rm -rf src/third_party/swiftshader/tests/regres/testlists
|
|
||||||
rm -rf src/electron
|
|
||||||
- name: Compress Src Directory
|
|
||||||
if: steps.check-cache.outputs.cache_exists == 'false'
|
|
||||||
run: |
|
|
||||||
echo "Uncompressed src size: $(du -sh src | cut -f1 -d' ')"
|
|
||||||
tar -cvf $DEPSHASH.tar src
|
|
||||||
echo "Compressed src to $(du -sh $DEPSHASH.tar | cut -f1 -d' ')"
|
|
||||||
- name: Upload Compressed Src Cache to Azure
|
|
||||||
if: steps.check-cache.outputs.cache_exists == 'false'
|
|
||||||
run: |
|
|
||||||
az storage blob upload \
|
|
||||||
--account-name $AZURE_STORAGE_ACCOUNT \
|
|
||||||
--account-key $AZURE_STORAGE_KEY \
|
|
||||||
--container-name $AZURE_STORAGE_CONTAINER_NAME \
|
|
||||||
--file $DEPSHASH.tar \
|
|
||||||
--name $DEPSHASH \
|
|
||||||
--debug
|
|
||||||
build:
|
build:
|
||||||
strategy:
|
# TODO(vertedinde): Change this to main before merge
|
||||||
fail-fast: false
|
uses: electron/electron/.github/workflows/macos-pipeline.yml@main
|
||||||
matrix:
|
with:
|
||||||
build-arch: [ arm64, x64 ]
|
is-release: false
|
||||||
# macos-large is x64, macos-xlarge is arm64
|
gn-config: //electron/build/args/testing.gn
|
||||||
# More runner information: https://github.com/actions/runner-images/blob/main/README.md#available-images
|
gn-build-type: testing
|
||||||
runs-on: macos-14-xlarge
|
generate-symbols: false
|
||||||
needs: checkout
|
upload-to-storage: '0'
|
||||||
steps:
|
secrets: inherit
|
||||||
- name: Load Build Tools
|
|
||||||
run: |
|
|
||||||
export BUILD_TOOLS_SHA=2bb63e2e7877491b52f972532b52adc979a6ec2f
|
|
||||||
npm i -g @electron/build-tools
|
|
||||||
e init --root=$(pwd) --out=Default ${{ inputs.GN_BUILD_TYPE }} --import ${{ inputs.GN_BUILD_TYPE }} --target-cpu ${{ matrix.build-arch}}
|
|
||||||
e use ${{ inputs.GN_BUILD_TYPE }}
|
|
||||||
- name: Checkout Electron
|
|
||||||
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29
|
|
||||||
with:
|
|
||||||
path: src/electron
|
|
||||||
fetch-depth: 0
|
|
||||||
- name: Setup Node.js/npm
|
|
||||||
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8
|
|
||||||
with:
|
|
||||||
node-version: 20.11.x
|
|
||||||
cache: yarn
|
|
||||||
cache-dependency-path: src/electron/yarn.lock
|
|
||||||
- name: Install Dependencies
|
|
||||||
run: |
|
|
||||||
cd src/electron
|
|
||||||
node script/yarn install
|
|
||||||
- name: Load Target Arch & CPU
|
|
||||||
run: |
|
|
||||||
echo "TARGET_ARCH=${{ matrix.build-arch }}" >> $GITHUB_ENV
|
|
||||||
echo "target_cpu=${{ matrix.build-arch }}" >> $GITHUB_ENV
|
|
||||||
echo "host_cpu=${{ matrix.build-arch }}" >> $GITHUB_ENV
|
|
||||||
- name: Get Depot Tools
|
|
||||||
timeout-minutes: 5
|
|
||||||
run: |
|
|
||||||
git clone --depth=1 https://chromium.googlesource.com/chromium/tools/depot_tools.git
|
|
||||||
if [ "`uname`" == "Darwin" ]; then
|
|
||||||
# remove ninjalog_uploader_wrapper.py from autoninja since we don't use it and it causes problems
|
|
||||||
sed -i '' '/ninjalog_uploader_wrapper.py/d' ./depot_tools/autoninja
|
|
||||||
else
|
|
||||||
sed -i '/ninjalog_uploader_wrapper.py/d' ./depot_tools/autoninja
|
|
||||||
# Remove swift-format dep from cipd on macOS until we send a patch upstream.
|
|
||||||
cd depot_tools
|
|
||||||
git apply --3way ../src/electron/.github/workflows/config/gclient.diff
|
|
||||||
fi
|
|
||||||
# Ensure depot_tools does not update.
|
|
||||||
test -d depot_tools && cd depot_tools
|
|
||||||
touch .disable_auto_update
|
|
||||||
- name: Add Depot Tools to PATH
|
|
||||||
run: echo "$(pwd)/depot_tools" >> $GITHUB_PATH
|
|
||||||
- name: Generate DEPS Hash
|
|
||||||
run: |
|
|
||||||
node src/electron/script/generate-deps-hash.js && cat src/electron/.depshash-target
|
|
||||||
echo "DEPSHASH=v1-src-cache-$(shasum src/electron/.depshash | cut -f1 -d' ')" >> $GITHUB_ENV
|
|
||||||
- name: Download Src Cache
|
|
||||||
# The cache will always exist here as a result of the checkout job
|
|
||||||
# Either it was uploaded to Azure in the checkout job for this commit
|
|
||||||
# or it was uploaded in the checkout job for a previous commit.
|
|
||||||
uses: nick-fields/retry@7152eba30c6575329ac0576536151aca5a72780e # v3.0.0
|
|
||||||
with:
|
|
||||||
timeout_minutes: 20
|
|
||||||
max_attempts: 3
|
|
||||||
retry_on: error
|
|
||||||
command: |
|
|
||||||
az storage blob download \
|
|
||||||
--account-name $AZURE_STORAGE_ACCOUNT \
|
|
||||||
--account-key $AZURE_STORAGE_KEY \
|
|
||||||
--container-name $AZURE_STORAGE_CONTAINER_NAME \
|
|
||||||
--name $DEPSHASH \
|
|
||||||
--file $DEPSHASH.tar \
|
|
||||||
- name: Unzip and Ensure Src Cache
|
|
||||||
run: |
|
|
||||||
echo "Downloaded cache is $(du -sh $DEPSHASH.tar | cut -f1)"
|
|
||||||
mkdir temp-cache
|
|
||||||
tar -xvf $DEPSHASH.tar -C temp-cache
|
|
||||||
echo "Unzipped cache is $(du -sh temp-cache/src | cut -f1)"
|
|
||||||
|
|
||||||
if [ -d "temp-cache/src" ]; then
|
|
||||||
echo "Relocating Cache"
|
|
||||||
rm -rf src
|
|
||||||
mv temp-cache/src src
|
|
||||||
|
|
||||||
echo "Deleting zip file"
|
|
||||||
rm -rf $DEPSHASH.tar
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ ! -d "src/third_party/blink" ]; then
|
|
||||||
echo "Cache was not correctly restored - exiting"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "Wiping Electron Directory"
|
|
||||||
rm -rf src/electron
|
|
||||||
- name: Checkout Electron
|
|
||||||
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29
|
|
||||||
with:
|
|
||||||
path: src/electron
|
|
||||||
fetch-depth: 0
|
|
||||||
- name: Run Electron Only Hooks
|
|
||||||
run: |
|
|
||||||
echo "Running Electron Only Hooks"
|
|
||||||
gclient runhooks --spec="solutions=[{'name':'src/electron','url':None,'deps_file':'DEPS','custom_vars':{'process_deps':False},'managed':False}]"
|
|
||||||
- name: Regenerate DEPS Hash
|
|
||||||
run: |
|
|
||||||
(cd src/electron && git checkout .) && node src/electron/script/generate-deps-hash.js && cat src/electron/.depshash-target
|
|
||||||
echo "DEPSHASH=$(shasum src/electron/.depshash | cut -f1 -d' ')" >> $GITHUB_ENV
|
|
||||||
- name: Add CHROMIUM_BUILDTOOLS_PATH to env
|
|
||||||
run: echo "CHROMIUM_BUILDTOOLS_PATH=$(pwd)/src/buildtools" >> $GITHUB_ENV
|
|
||||||
- name: Fix Sync
|
|
||||||
# This step is required to correct for differences between "gclient sync"
|
|
||||||
# on Linux and the expected state on macOS. This requires:
|
|
||||||
# 1. Fixing Clang Install (wrong binary)
|
|
||||||
# 2. Fixing esbuild (wrong binary)
|
|
||||||
# 3. Fixing rustc (wrong binary)
|
|
||||||
# 4. Fixing gn (wrong binary)
|
|
||||||
# 5. Fix reclient (wrong binary)
|
|
||||||
# 6. Fixing dsymutil (wrong binary)
|
|
||||||
# 7. Ensuring we are using the correct ninja and adding it to PATH
|
|
||||||
# 8. Fixing angle (wrong remote)
|
|
||||||
run : |
|
|
||||||
SEDOPTION="-i ''"
|
|
||||||
rm -rf src/third_party/llvm-build
|
|
||||||
python3 src/tools/clang/scripts/update.py
|
|
||||||
|
|
||||||
echo 'infra/3pp/tools/esbuild/${platform}' `gclient getdep --deps-file=src/third_party/devtools-frontend/src/DEPS -r 'third_party/esbuild:infra/3pp/tools/esbuild/${platform}'` > esbuild_ensure_file
|
|
||||||
# Remove extra output from calling gclient getdep which always calls update_depot_tools
|
|
||||||
sed -i '' "s/Updating depot_tools... //g" esbuild_ensure_file
|
|
||||||
cipd ensure --root src/third_party/devtools-frontend/src/third_party/esbuild -ensure-file esbuild_ensure_file
|
|
||||||
|
|
||||||
rm -rf src/third_party/rust-toolchain
|
|
||||||
python3 src/tools/rust/update_rust.py
|
|
||||||
|
|
||||||
# Prevent calling gclient getdep which always calls update_depot_tools
|
|
||||||
echo 'gn/gn/mac-${arch}' `gclient getdep --deps-file=src/DEPS -r 'src/buildtools/mac:gn/gn/mac-${arch}'` > gn_ensure_file
|
|
||||||
sed -i '' "s/Updating depot_tools... //g" gn_ensure_file
|
|
||||||
cipd ensure --root src/buildtools/mac -ensure-file gn_ensure_file
|
|
||||||
|
|
||||||
# Prevent calling gclient getdep which always calls update_depot_tools
|
|
||||||
echo 'infra/rbe/client/${platform}' `gclient getdep --deps-file=src/DEPS -r 'src/buildtools/reclient:infra/rbe/client/${platform}'` > gn_ensure_file
|
|
||||||
sed -i '' "s/Updating depot_tools... //g" gn_ensure_file
|
|
||||||
cipd ensure --root src/buildtools/reclient -ensure-file gn_ensure_file
|
|
||||||
python3 src/buildtools/reclient_cfgs/configure_reclient_cfgs.py --rbe_instance "projects/rbe-chrome-untrusted/instances/default_instance" --reproxy_cfg_template reproxy.cfg.template --rewrapper_cfg_project "" --skip_remoteexec_cfg_fetch
|
|
||||||
|
|
||||||
if [ "$TARGET_ARCH" == "arm64" ]; then
|
|
||||||
DSYM_SHA_FILE=src/tools/clang/dsymutil/bin/dsymutil.arm64.sha1
|
|
||||||
else
|
|
||||||
DSYM_SHA_FILE=src/tools/clang/dsymutil/bin/dsymutil.x64.sha1
|
|
||||||
fi
|
|
||||||
python3 src/third_party/depot_tools/download_from_google_storage.py --no_resume --no_auth --bucket chromium-browser-clang -s $DSYM_SHA_FILE -o src/tools/clang/dsymutil/bin/dsymutil
|
|
||||||
|
|
||||||
echo 'infra/3pp/tools/ninja/${platform}' `gclient getdep --deps-file=src/DEPS -r 'src/third_party/ninja:infra/3pp/tools/ninja/${platform}'` > ninja_ensure_file
|
|
||||||
sed $SEDOPTION "s/Updating depot_tools... //g" ninja_ensure_file
|
|
||||||
cipd ensure --root src/third_party/ninja -ensure-file ninja_ensure_file
|
|
||||||
|
|
||||||
echo "$(pwd)/src/third_party/ninja" >> $GITHUB_PATH
|
|
||||||
|
|
||||||
cd src/third_party/angle
|
|
||||||
rm -f .git/objects/info/alternates
|
|
||||||
git remote set-url origin https://chromium.googlesource.com/angle/angle.git
|
|
||||||
cp .git/config .git/config.backup
|
|
||||||
git remote remove origin
|
|
||||||
mv .git/config.backup .git/config
|
|
||||||
git fetch
|
|
||||||
- name: Install build-tools & Setup RBE
|
|
||||||
run: |
|
|
||||||
echo "NUMBER_OF_NINJA_PROCESSES=200" >> $GITHUB_ENV
|
|
||||||
cd ~/.electron_build_tools
|
|
||||||
npx yarn --ignore-engines
|
|
||||||
# Pull down credential helper and print status
|
|
||||||
node -e "require('./src/utils/reclient.js').downloadAndPrepare({})"
|
|
||||||
HELPER=$(node -p "require('./src/utils/reclient.js').helperPath({})")
|
|
||||||
$HELPER login
|
|
||||||
echo 'RBE_service='`node -e "console.log(require('./src/utils/reclient.js').serviceAddress)"` >> $GITHUB_ENV
|
|
||||||
echo 'RBE_experimental_credentials_helper='`node -e "console.log(require('./src/utils/reclient.js').helperPath({}))"` >> $GITHUB_ENV
|
|
||||||
echo 'RBE_experimental_credentials_helper_args=print' >> $GITHUB_ENV
|
|
||||||
- name: Free Space on MacOS
|
|
||||||
run: |
|
|
||||||
sudo mkdir -p $TMPDIR/del-target
|
|
||||||
|
|
||||||
tmpify() {
|
|
||||||
if [ -d "$1" ]; then
|
|
||||||
sudo mv "$1" $TMPDIR/del-target/$(echo $1|shasum -a 256|head -n1|cut -d " " -f1)
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
strip_universal_deep() {
|
|
||||||
opwd=$(pwd)
|
|
||||||
cd $1
|
|
||||||
f=$(find . -perm +111 -type f)
|
|
||||||
for fp in $f
|
|
||||||
do
|
|
||||||
if [[ $(file "$fp") == *"universal binary"* ]]; then
|
|
||||||
if [ "`arch`" == "arm64" ]; then
|
|
||||||
if [[ $(file "$fp") == *"x86_64"* ]]; then
|
|
||||||
sudo lipo -remove x86_64 "$fp" -o "$fp" || true
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
if [[ $(file "$fp") == *"arm64e)"* ]]; then
|
|
||||||
sudo lipo -remove arm64e "$fp" -o "$fp" || true
|
|
||||||
fi
|
|
||||||
if [[ $(file "$fp") == *"arm64)"* ]]; then
|
|
||||||
sudo lipo -remove arm64 "$fp" -o "$fp" || true
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
cd $opwd
|
|
||||||
}
|
|
||||||
|
|
||||||
tmpify /Library/Developer/CoreSimulator
|
|
||||||
tmpify ~/Library/Developer/CoreSimulator
|
|
||||||
tmpify $(xcode-select -p)/Platforms/AppleTVOS.platform
|
|
||||||
tmpify $(xcode-select -p)/Platforms/iPhoneOS.platform
|
|
||||||
tmpify $(xcode-select -p)/Platforms/WatchOS.platform
|
|
||||||
tmpify $(xcode-select -p)/Platforms/WatchSimulator.platform
|
|
||||||
tmpify $(xcode-select -p)/Platforms/AppleTVSimulator.platform
|
|
||||||
tmpify $(xcode-select -p)/Platforms/iPhoneSimulator.platform
|
|
||||||
tmpify $(xcode-select -p)/Toolchains/XcodeDefault.xctoolchain/usr/metal/ios
|
|
||||||
tmpify $(xcode-select -p)/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift
|
|
||||||
tmpify $(xcode-select -p)/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift-5.0
|
|
||||||
tmpify ~/.rubies
|
|
||||||
tmpify ~/Library/Caches/Homebrew
|
|
||||||
tmpify /usr/local/Homebrew
|
|
||||||
|
|
||||||
# the contents of build/linux/strip_binary.gni aren't used, but
|
|
||||||
# https://chromium-review.googlesource.com/c/chromium/src/+/4278307
|
|
||||||
# needs the file to exist.
|
|
||||||
# mv ~/project/src/build/linux/strip_binary.gni "${TMPDIR}"/
|
|
||||||
# tmpify ~/project/src/build/linux/
|
|
||||||
# mkdir -p ~/project/src/build/linux
|
|
||||||
# mv "${TMPDIR}/strip_binary.gni" ~/project/src/build/linux/
|
|
||||||
|
|
||||||
sudo rm -rf $TMPDIR/del-target
|
|
||||||
|
|
||||||
# sudo rm -rf "/System/Library/Desktop Pictures"
|
|
||||||
# sudo rm -rf /System/Library/Templates/Data
|
|
||||||
# sudo rm -rf /System/Library/Speech/Voices
|
|
||||||
# sudo rm -rf "/System/Library/Screen Savers"
|
|
||||||
# sudo rm -rf /System/Volumes/Data/Library/Developer/CommandLineTools/SDKs
|
|
||||||
# sudo rm -rf "/System/Volumes/Data/Library/Application Support/Apple/Photos/Print Products"
|
|
||||||
# sudo rm -rf /System/Volumes/Data/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/
|
|
||||||
# sudo rm -rf /System/Volumes/Data/Library/Java
|
|
||||||
# sudo rm -rf /System/Volumes/Data/Library/Ruby
|
|
||||||
# sudo rm -rf /System/Volumes/Data/Library/Printers
|
|
||||||
# sudo rm -rf /System/iOSSupport
|
|
||||||
# sudo rm -rf /System/Applications/*.app
|
|
||||||
# sudo rm -rf /System/Applications/Utilities/*.app
|
|
||||||
# sudo rm -rf /System/Library/LinguisticData
|
|
||||||
# sudo rm -rf /System/Volumes/Data/private/var/db/dyld/*
|
|
||||||
# sudo rm -rf /System/Library/Fonts/*
|
|
||||||
# sudo rm -rf /System/Library/PreferencePanes
|
|
||||||
# sudo rm -rf /System/Library/AssetsV2/*
|
|
||||||
sudo rm -rf /Applications/Safari.app
|
|
||||||
sudo rm -rf ~/project/src/third_party/catapult/tracing/test_data
|
|
||||||
sudo rm -rf ~/project/src/third_party/angle/third_party/VK-GL-CTS
|
|
||||||
|
|
||||||
# lipo off some huge binaries arm64 versions to save space
|
|
||||||
strip_universal_deep $(xcode-select -p)/../SharedFrameworks
|
|
||||||
# strip_arm_deep /System/Volumes/Data/Library/Developer/CommandLineTools/usr
|
|
||||||
- name: Build Electron (darwin)
|
|
||||||
run: |
|
|
||||||
cd src/electron
|
|
||||||
# TODO(codebytere): remove this once we figure out why .git/packed-refs is initially missing
|
|
||||||
git pack-refs
|
|
||||||
cd ..
|
|
||||||
ulimit -n 10000
|
|
||||||
sudo launchctl limit maxfiles 65536 200000
|
|
||||||
|
|
||||||
NINJA_SUMMARIZE_BUILD=1 e build -j $NUMBER_OF_NINJA_PROCESSES
|
|
||||||
cp out/Default/.ninja_log out/electron_ninja_log
|
|
||||||
node electron/script/check-symlinks.js
|
|
||||||
- name: Build Electron dist.zip (darwin)
|
|
||||||
run: |
|
|
||||||
cd src
|
|
||||||
e build electron:electron_dist_zip -j $NUMBER_OF_NINJA_PROCESSES
|
|
||||||
if [ "$CHECK_DIST_MANIFEST" == "1" ]; then
|
|
||||||
target_os=mac
|
|
||||||
electron/script/zip_manifests/check-zip-manifest.py out/Default/dist.zip electron/script/zip_manifests/dist_zip.$target_os.${{ env.TARGET_ARCH }}.manifest
|
|
||||||
fi
|
|
||||||
- name: Build Mksnapshot (darwin)
|
|
||||||
run: |
|
|
||||||
cd src
|
|
||||||
e build electron:electron_mksnapshot -j $NUMBER_OF_NINJA_PROCESSES
|
|
||||||
gn desc out/Default v8:run_mksnapshot_default args > out/Default/mksnapshot_args
|
|
||||||
# Remove unused args from mksnapshot_args
|
|
||||||
SEDOPTION="-i ''"
|
|
||||||
sed $SEDOPTION '/.*builtins-pgo/d' out/Default/mksnapshot_args
|
|
||||||
sed $SEDOPTION '/--turbo-profiling-input/d' out/Default/mksnapshot_args
|
|
||||||
sed $SEDOPTION '/The gn arg use_goma=true .*/d' out/Default/mksnapshot_args
|
|
||||||
e build electron:electron_mksnapshot_zip -j $NUMBER_OF_NINJA_PROCESSES
|
|
||||||
(cd out/Default; zip mksnapshot.zip mksnapshot_args gen/v8/embedded.S)
|
|
||||||
- name: Build Chromedriver (darwin)
|
|
||||||
run: |
|
|
||||||
cd src
|
|
||||||
e build electron:electron_chromedriver -j $NUMBER_OF_NINJA_PROCESSES
|
|
||||||
e build electron:electron_chromedriver_zip
|
|
||||||
# NOTE (vertedinde): We strip binaries/symbols on the Linux job, not the Mac job
|
|
||||||
- name: Generate & Zip Symbols (darwin)
|
|
||||||
run: |
|
|
||||||
# Generate breakpad symbols on release builds
|
|
||||||
if [ ${{ inputs.GENERATE_SYMBOLS }} == "true" ]; then
|
|
||||||
e build electron:electron_symbols
|
|
||||||
fi
|
|
||||||
cd src
|
|
||||||
export BUILD_PATH="$(pwd)/out/Default"
|
|
||||||
e build electron:licenses
|
|
||||||
e build electron:electron_version_file
|
|
||||||
if [ ${{ inputs.IS_RELEASE }} == "true" ]; then
|
|
||||||
DELETE_DSYMS_AFTER_ZIP=1 electron/script/zip-symbols.py -b $BUILD_PATH
|
|
||||||
else
|
|
||||||
electron/script/zip-symbols.py -b $BUILD_PATH
|
|
||||||
fi
|
|
||||||
- name: Generate FFMpeg
|
|
||||||
if: ${{ inputs.IS_RELEASE == true }}
|
|
||||||
run: |
|
|
||||||
cd src
|
|
||||||
gn gen out/ffmpeg --args="import(\"//electron/build/args/ffmpeg.gn\") use_remoteexec=true $GN_EXTRA_ARGS"
|
|
||||||
autoninja -C out/ffmpeg electron:electron_ffmpeg_zip -j $NUMBER_OF_NINJA_PROCESSES
|
|
||||||
- name: Generate Hunspell Dictionaries
|
|
||||||
if: ${{ inputs.IS_RELEASE == true }}
|
|
||||||
run: |
|
|
||||||
cd src
|
|
||||||
autoninja -C out/Default electron:hunspell_dictionaries_zip -j $NUMBER_OF_NINJA_PROCESSES
|
|
||||||
- name: Generate TypeScript Definitions
|
|
||||||
if: ${{ inputs.IS_RELEASE == true }}
|
|
||||||
run: |
|
|
||||||
cd src/electron
|
|
||||||
node script/yarn create-typescript-definitions
|
|
||||||
# TODO(vertedinde): These uploads currently point to a different Azure bucket & GitHub Repo
|
|
||||||
- name: Publish Electron Dist
|
|
||||||
run: |
|
|
||||||
rm -rf src/out/Default/obj
|
|
||||||
cd src/electron
|
|
||||||
if [ ${{ inputs.UPLOAD_TO_STORAGE }} == "1" ]; then
|
|
||||||
echo 'Uploading Electron release distribution to Azure'
|
|
||||||
script/release/uploaders/upload.py --verbose --upload_to_storage
|
|
||||||
else
|
|
||||||
echo 'Uploading Electron release distribution to GitHub releases'
|
|
||||||
script/release/uploaders/upload.py --verbose
|
|
||||||
fi
|
|
||||||
# The current generated_artifacts_<< artifact.key >> name was taken from CircleCI
|
|
||||||
# to ensure we don't break anything, but we may be able to improve that.
|
|
||||||
- name: Move all Generated Artifacts to Upload Folder
|
|
||||||
run: ./src/electron/script/actions/move-artifacts.sh
|
|
||||||
- name: Upload Generated Artifacts
|
|
||||||
uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808
|
|
||||||
with:
|
|
||||||
name: generated_artifacts_darwin_${{ env.TARGET_ARCH }}
|
|
||||||
path: ./generated_artifacts_darwin_${{ env.TARGET_ARCH }}
|
|
||||||
- name: Persist Build Artifacts
|
|
||||||
uses: actions/cache/save@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9
|
|
||||||
with:
|
|
||||||
path: |
|
|
||||||
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/mac
|
|
||||||
src/buildtools/third_party/libc++
|
|
||||||
src/buildtools/third_party/libc++abi
|
|
||||||
src/third_party/libc++
|
|
||||||
src/third_party/libc++abi
|
|
||||||
src/out/Default/obj/buildtools/third_party
|
|
||||||
src/v8/tools/builtins-pgo
|
|
||||||
key: ${{ runner.os }}-build-artifacts-darwin-${{ env.TARGET_ARCH }}-${{ github.sha }}
|
|
||||||
- name: Create MAS Config
|
|
||||||
run: |
|
|
||||||
mv src/electron/.github/workflows/config/${{ inputs.GN_BUILD_TYPE }}/${{ matrix.build-arch }}/evm.mas.json $HOME/.electron_build_tools/configs/evm.mas.json
|
|
||||||
echo "MAS_BUILD=true" >> $GITHUB_ENV
|
|
||||||
e use mas
|
|
||||||
- name: Build Electron (mas)
|
|
||||||
run: |
|
|
||||||
rm -rf "src/out/Default/Electron Framework.framework"
|
|
||||||
rm -rf src/out/Default/Electron*.app
|
|
||||||
|
|
||||||
cd src/electron
|
|
||||||
# TODO(codebytere): remove this once we figure out why .git/packed-refs is initially missing
|
|
||||||
git pack-refs
|
|
||||||
cd ..
|
|
||||||
|
|
||||||
ulimit -n 10000
|
|
||||||
sudo launchctl limit maxfiles 65536 200000
|
|
||||||
NINJA_SUMMARIZE_BUILD=1 e build -j $NUMBER_OF_NINJA_PROCESSES
|
|
||||||
cp out/Default/.ninja_log out/electron_ninja_log
|
|
||||||
node electron/script/check-symlinks.js
|
|
||||||
- name: Build Electron dist.zip (mas)
|
|
||||||
run: |
|
|
||||||
cd src
|
|
||||||
e build electron:electron_dist_zip -j $NUMBER_OF_NINJA_PROCESSES
|
|
||||||
if [ "$CHECK_DIST_MANIFEST" == "1" ]; then
|
|
||||||
target_os=mac_mas
|
|
||||||
electron/script/zip_manifests/check-zip-manifest.py out/Default/dist.zip electron/script/zip_manifests/dist_zip.$target_os.${{ env.TARGET_ARCH }}.manifest
|
|
||||||
fi
|
|
||||||
- name: Build Mksnapshot (mas)
|
|
||||||
run: |
|
|
||||||
cd src
|
|
||||||
e build electron:electron_mksnapshot -j $NUMBER_OF_NINJA_PROCESSES
|
|
||||||
gn desc out/Default v8:run_mksnapshot_default args > out/Default/mksnapshot_args
|
|
||||||
# Remove unused args from mksnapshot_args
|
|
||||||
SEDOPTION="-i ''"
|
|
||||||
sed $SEDOPTION '/.*builtins-pgo/d' out/Default/mksnapshot_args
|
|
||||||
sed $SEDOPTION '/--turbo-profiling-input/d' out/Default/mksnapshot_args
|
|
||||||
sed $SEDOPTION '/The gn arg use_goma=true .*/d' out/Default/mksnapshot_args
|
|
||||||
e build electron:electron_mksnapshot_zip -j $NUMBER_OF_NINJA_PROCESSES
|
|
||||||
(cd out/Default; zip mksnapshot.zip mksnapshot_args gen/v8/embedded.S)
|
|
||||||
- name: Build Chromedriver (mas)
|
|
||||||
run: |
|
|
||||||
cd src
|
|
||||||
e build electron:electron_chromedriver -j $NUMBER_OF_NINJA_PROCESSES
|
|
||||||
e build electron:electron_chromedriver_zip
|
|
||||||
- name: Build Node Headers
|
|
||||||
run: |
|
|
||||||
cd src
|
|
||||||
e build electron:node_headers
|
|
||||||
- name: Generate & Zip Symbols (mas)
|
|
||||||
run: |
|
|
||||||
if [ ${{ inputs.GENERATE_SYMBOLS }} == "true" ]; then
|
|
||||||
e build electron:electron_symbols
|
|
||||||
fi
|
|
||||||
cd src
|
|
||||||
export BUILD_PATH="$(pwd)/out/Default"
|
|
||||||
e build electron:licenses
|
|
||||||
e build electron:electron_version_file
|
|
||||||
if [ ${{ inputs.IS_RELEASE }} == "true" ]; then
|
|
||||||
DELETE_DSYMS_AFTER_ZIP=1 electron/script/zip-symbols.py -b $BUILD_PATH
|
|
||||||
else
|
|
||||||
electron/script/zip-symbols.py -b $BUILD_PATH
|
|
||||||
fi
|
|
||||||
# TODO(vertedinde): These uploads currently point to a different Azure bucket & GitHub Repo
|
|
||||||
- name: Publish Electron Dist
|
|
||||||
run: |
|
|
||||||
rm -rf src/out/Default/obj
|
|
||||||
cd src/electron
|
|
||||||
if [ ${{ inputs.UPLOAD_TO_STORAGE }} == "1" ]; then
|
|
||||||
echo 'Uploading Electron release distribution to Azure'
|
|
||||||
script/release/uploaders/upload.py --verbose --upload_to_storage
|
|
||||||
else
|
|
||||||
echo 'Uploading Electron release distribution to GitHub releases'
|
|
||||||
script/release/uploaders/upload.py --verbose
|
|
||||||
fi
|
|
||||||
- name: Move all Generated Artifacts to Upload Folder (mas)
|
|
||||||
run: ./src/electron/script/actions/move-artifacts.sh
|
|
||||||
- name: Upload Generated Artifacts
|
|
||||||
uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808
|
|
||||||
with:
|
|
||||||
name: generated_artifacts_mas_${{ env.TARGET_ARCH }}
|
|
||||||
path: ./generated_artifacts_mas_${{ env.TARGET_ARCH }}
|
|
||||||
- name: Persist Build Artifacts
|
|
||||||
uses: actions/cache/save@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9
|
|
||||||
with:
|
|
||||||
path: |
|
|
||||||
src/out/Default/gen/node_headers
|
|
||||||
src/out/Default/overlapped-checker
|
|
||||||
src/out/Default/ffmpeg
|
|
||||||
src/out/Default/hunspell_dictionaries
|
|
||||||
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/mac
|
|
||||||
src/buildtools/third_party/libc++
|
|
||||||
src/buildtools/third_party/libc++abi
|
|
||||||
src/third_party/libc++
|
|
||||||
src/third_party/libc++abi
|
|
||||||
src/out/Default/obj/buildtools/third_party
|
|
||||||
src/v8/tools/builtins-pgo
|
|
||||||
key: ${{ runner.os }}-build-artifacts-mas-${{ env.TARGET_ARCH }}-${{ github.sha }}
|
|
||||||
test:
|
|
||||||
if: ${{ inputs.IS_RELEASE == false }}
|
|
||||||
runs-on: macos-14-xlarge
|
|
||||||
needs: build
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
build-type: [ darwin, mas ]
|
|
||||||
env:
|
|
||||||
BUILD_TYPE: ${{ matrix.build-type }}
|
|
||||||
steps:
|
|
||||||
- name: Load Build Tools
|
|
||||||
run: |
|
|
||||||
export BUILD_TOOLS_SHA=2bb63e2e7877491b52f972532b52adc979a6ec2f
|
|
||||||
npm i -g @electron/build-tools
|
|
||||||
e init --root=$(pwd) --out=Default ${{ inputs.GN_BUILD_TYPE }}
|
|
||||||
- name: Checkout Electron
|
|
||||||
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29
|
|
||||||
with:
|
|
||||||
path: src/electron
|
|
||||||
fetch-depth: 0
|
|
||||||
- name: Setup Node.js/npm
|
|
||||||
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8
|
|
||||||
with:
|
|
||||||
node-version: 20.11.x
|
|
||||||
cache: yarn
|
|
||||||
cache-dependency-path: src/electron/yarn.lock
|
|
||||||
- name: Install Dependencies
|
|
||||||
run: |
|
|
||||||
cd src/electron
|
|
||||||
node script/yarn install
|
|
||||||
- name: Get Depot Tools
|
|
||||||
timeout-minutes: 5
|
|
||||||
run: |
|
|
||||||
git clone --depth=1 https://chromium.googlesource.com/chromium/tools/depot_tools.git
|
|
||||||
if [ "`uname`" == "Darwin" ]; then
|
|
||||||
# remove ninjalog_uploader_wrapper.py from autoninja since we don't use it and it causes problems
|
|
||||||
sed -i '' '/ninjalog_uploader_wrapper.py/d' ./depot_tools/autoninja
|
|
||||||
else
|
|
||||||
sed -i '/ninjalog_uploader_wrapper.py/d' ./depot_tools/autoninja
|
|
||||||
# Remove swift-format dep from cipd on macOS until we send a patch upstream.
|
|
||||||
cd depot_tools
|
|
||||||
git apply --3way ../src/electron/.github/workflows/config/gclient.diff
|
|
||||||
fi
|
|
||||||
# Ensure depot_tools does not update.
|
|
||||||
test -d depot_tools && cd depot_tools
|
|
||||||
touch .disable_auto_update
|
|
||||||
- name: Add Depot Tools to PATH
|
|
||||||
run: echo "$(pwd)/depot_tools" >> $GITHUB_PATH
|
|
||||||
- name: Download Generated Artifacts
|
|
||||||
uses: actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e
|
|
||||||
with:
|
|
||||||
name: generated_artifacts_${{ matrix.build-type }}
|
|
||||||
path: ./generated_artifacts_${{ matrix.build-type }}
|
|
||||||
- name: Restore Persisted Build Artifacts
|
|
||||||
uses: actions/cache/restore@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9
|
|
||||||
with:
|
|
||||||
path: |
|
|
||||||
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/mac
|
|
||||||
src/buildtools/third_party/libc++
|
|
||||||
src/buildtools/third_party/libc++abi
|
|
||||||
src/third_party/libc++
|
|
||||||
src/third_party/libc++abi
|
|
||||||
src/out/Default/obj/buildtools/third_party
|
|
||||||
src/v8/tools/builtins-pgo
|
|
||||||
key: ${{ runner.os }}-build-artifacts-${{ matrix.build-type }}-${{ github.sha }}
|
|
||||||
- name: Restore Generated Artifacts
|
|
||||||
run: ./src/electron/script/actions/restore-artifacts.sh
|
|
||||||
- name: Unzip Dist, Mksnapshot & Chromedriver
|
|
||||||
run: |
|
|
||||||
cd src/out/Default
|
|
||||||
unzip -:o dist.zip
|
|
||||||
unzip -:o chromedriver.zip
|
|
||||||
unzip -:o mksnapshot.zip
|
|
||||||
- name: Import & Trust Self-Signed Codesigning Cert on MacOS
|
|
||||||
run: |
|
|
||||||
sudo security authorizationdb write com.apple.trust-settings.admin allow
|
|
||||||
cd src/electron
|
|
||||||
./script/codesign/generate-identity.sh
|
|
||||||
- name: Run Electron Tests
|
|
||||||
env:
|
|
||||||
MOCHA_REPORTER: mocha-multi-reporters
|
|
||||||
ELECTRON_TEST_RESULTS_DIR: junit
|
|
||||||
MOCHA_MULTI_REPORTERS: mocha-junit-reporter, tap
|
|
||||||
ELECTRON_DISABLE_SECURITY_WARNINGS: 1
|
|
||||||
ELECTRON_SKIP_NATIVE_MODULE_TESTS: true
|
|
||||||
run: |
|
|
||||||
cd src/electron
|
|
||||||
node script/yarn test --runners=main --trace-uncaught --enable-logging
|
|
||||||
|
|
772
.github/workflows/macos-pipeline.yml
vendored
Normal file
772
.github/workflows/macos-pipeline.yml
vendored
Normal file
|
@ -0,0 +1,772 @@
|
||||||
|
name: Build MacOS
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_call:
|
||||||
|
inputs:
|
||||||
|
is-release:
|
||||||
|
description: 'Whether this build job is a release job'
|
||||||
|
required: true
|
||||||
|
type: boolean
|
||||||
|
default: false
|
||||||
|
gn-config:
|
||||||
|
description: 'The gn arg configuration to use'
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
default: //electron/build/args/testing.gn
|
||||||
|
gn-build-type:
|
||||||
|
description: 'The gn build type - testing or release'
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
default: testing
|
||||||
|
generate-symbols:
|
||||||
|
description: 'Whether or not to generate symbols'
|
||||||
|
required: true
|
||||||
|
type: boolean
|
||||||
|
default: false
|
||||||
|
upload-to-storage:
|
||||||
|
description: 'Whether or not to upload build artifacts to external storage'
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
default: '0'
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.workflow }}-${{ github.ref }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
env:
|
||||||
|
AZURE_STORAGE_ACCOUNT: ${{ secrets.AZURE_STORAGE_ACCOUNT }}
|
||||||
|
AZURE_STORAGE_KEY: ${{ secrets.AZURE_STORAGE_KEY }}
|
||||||
|
AZURE_STORAGE_CONTAINER_NAME: ${{ secrets.AZURE_STORAGE_CONTAINER_NAME }}
|
||||||
|
ELECTRON_ARTIFACTS_BLOB_STORAGE: ${{ secrets.ELECTRON_ARTIFACTS_BLOB_STORAGE }}
|
||||||
|
ELECTRON_RBE_JWT: ${{ secrets.ELECTRON_RBE_JWT }}
|
||||||
|
ELECTRON_GITHUB_TOKEN: ${{ secrets.ELECTRON_GITHUB_TOKEN }}
|
||||||
|
GN_CONFIG: ${{ inputs.gn-config }}
|
||||||
|
# Disable pre-compiled headers to reduce out size - only useful for rebuilds
|
||||||
|
GN_BUILDFLAG_ARGS: 'enable_precompiled_headers = false'
|
||||||
|
GCLIENT_EXTRA_ARGS: '--custom-var=checkout_mac=True --custom-var=host_os=mac'
|
||||||
|
CHECK_DIST_MANIFEST: '1'
|
||||||
|
IS_GHA_RELEASE: true
|
||||||
|
ELECTRON_OUT_DIR: Default
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
checkout:
|
||||||
|
runs-on: LargeLinuxRunner
|
||||||
|
steps:
|
||||||
|
- name: Checkout Electron
|
||||||
|
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29
|
||||||
|
with:
|
||||||
|
path: src/electron
|
||||||
|
fetch-depth: 0
|
||||||
|
- name: Set GIT_CACHE_PATH to make gclient to use the cache
|
||||||
|
run: |
|
||||||
|
echo "GIT_CACHE_PATH=$(pwd)/git-cache" >> $GITHUB_ENV
|
||||||
|
- name: Setup Node.js/npm
|
||||||
|
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8
|
||||||
|
with:
|
||||||
|
node-version: 20.11.x
|
||||||
|
cache: yarn
|
||||||
|
cache-dependency-path: src/electron/yarn.lock
|
||||||
|
- name: Install Dependencies
|
||||||
|
run: |
|
||||||
|
cd src/electron
|
||||||
|
node script/yarn install
|
||||||
|
- name: Get Depot Tools
|
||||||
|
timeout-minutes: 5
|
||||||
|
run: |
|
||||||
|
git clone --depth=1 https://chromium.googlesource.com/chromium/tools/depot_tools.git
|
||||||
|
if [ "`uname`" == "Darwin" ]; then
|
||||||
|
# remove ninjalog_uploader_wrapper.py from autoninja since we don't use it and it causes problems
|
||||||
|
sed -i '' '/ninjalog_uploader_wrapper.py/d' ./depot_tools/autoninja
|
||||||
|
else
|
||||||
|
sed -i '/ninjalog_uploader_wrapper.py/d' ./depot_tools/autoninja
|
||||||
|
# Remove swift-format dep from cipd on macOS until we send a patch upstream.
|
||||||
|
cd depot_tools
|
||||||
|
git apply --3way ../src/electron/.github/workflows/config/gclient.diff
|
||||||
|
fi
|
||||||
|
# Ensure depot_tools does not update.
|
||||||
|
test -d depot_tools && cd depot_tools
|
||||||
|
touch .disable_auto_update
|
||||||
|
- name: Add Depot Tools to PATH
|
||||||
|
run: echo "$(pwd)/depot_tools" >> $GITHUB_PATH
|
||||||
|
- name: Generate DEPS Hash
|
||||||
|
run: |
|
||||||
|
node src/electron/script/generate-deps-hash.js && cat src/electron/.depshash-target
|
||||||
|
echo "DEPSHASH=v1-src-cache-$(shasum src/electron/.depshash | cut -f1 -d' ')" >> $GITHUB_ENV
|
||||||
|
- name: Check If Cache Exists
|
||||||
|
id: check-cache
|
||||||
|
run: |
|
||||||
|
exists_json=$(az storage blob exists \
|
||||||
|
--account-name $AZURE_STORAGE_ACCOUNT \
|
||||||
|
--account-key $AZURE_STORAGE_KEY \
|
||||||
|
--container-name $AZURE_STORAGE_CONTAINER_NAME \
|
||||||
|
--name $DEPSHASH)
|
||||||
|
|
||||||
|
cache_exists=$(echo $exists_json | jq -r '.exists')
|
||||||
|
echo "cache_exists=$cache_exists" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
|
if (test "$cache_exists" = "true"); then
|
||||||
|
echo "Cache Exists for $DEPSHASH"
|
||||||
|
else
|
||||||
|
echo "Cache Does Not Exist for $DEPSHASH"
|
||||||
|
fi
|
||||||
|
- name: Gclient Sync
|
||||||
|
# If there is no existing src cache, we need to do a full gclient sync.
|
||||||
|
# TODO(codebytere): Add stale patch handling for non-release builds.
|
||||||
|
if: steps.check-cache.outputs.cache_exists == 'false'
|
||||||
|
run: |
|
||||||
|
gclient config \
|
||||||
|
--name "src/electron" \
|
||||||
|
--unmanaged \
|
||||||
|
${GCLIENT_EXTRA_ARGS} \
|
||||||
|
"$GITHUB_SERVER_URL/$GITHUB_REPOSITORY"
|
||||||
|
|
||||||
|
ELECTRON_USE_THREE_WAY_MERGE_FOR_PATCHES=1 gclient sync --with_branch_heads --with_tags -vvvvv
|
||||||
|
if [ ${{ inputs.is-release != true }}]; then
|
||||||
|
# Re-export all the patches to check if there were changes.
|
||||||
|
python3 src/electron/script/export_all_patches.py src/electron/patches/config.json
|
||||||
|
cd src/electron
|
||||||
|
git update-index --refresh || true
|
||||||
|
if ! git diff-index --quiet HEAD --; then
|
||||||
|
# There are changes to the patches. Make a git commit with the updated patches
|
||||||
|
git add patches
|
||||||
|
GIT_COMMITTER_NAME="PatchUp" GIT_COMMITTER_EMAIL="73610968+patchup[bot]@users.noreply.github.com" git commit -m "chore: update patches" --author="PatchUp <73610968+patchup[bot]@users.noreply.github.com>"
|
||||||
|
# Export it
|
||||||
|
mkdir -p ../../patches
|
||||||
|
git format-patch -1 --stdout --keep-subject --no-stat --full-index > ../../patches/update-patches.patch
|
||||||
|
if (node ./script/push-patch.js 2> /dev/null > /dev/null); then
|
||||||
|
echo
|
||||||
|
echo "======================================================================"
|
||||||
|
echo "Changes to the patches when applying, we have auto-pushed the diff to the current branch"
|
||||||
|
echo "A new CI job will kick off shortly"
|
||||||
|
echo "======================================================================"
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
echo
|
||||||
|
echo "======================================================================"
|
||||||
|
echo "There were changes to the patches when applying."
|
||||||
|
echo "Check the CI artifacts for a patch you can apply to fix it."
|
||||||
|
echo "======================================================================"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# delete all .git directories under src/ except for
|
||||||
|
# third_party/angle/ and third_party/dawn/ because of build time generation of files
|
||||||
|
# gen/angle/commit.h depends on third_party/angle/.git/HEAD
|
||||||
|
# https://chromium-review.googlesource.com/c/angle/angle/+/2074924
|
||||||
|
# and dawn/common/Version_autogen.h depends on third_party/dawn/.git/HEAD
|
||||||
|
# https://dawn-review.googlesource.com/c/dawn/+/83901
|
||||||
|
# TODO: maybe better to always leave out */.git/HEAD file for all targets ?
|
||||||
|
- name: Delete .git directories under src to free space
|
||||||
|
if: steps.check-cache.outputs.cache_exists == 'false'
|
||||||
|
run: |
|
||||||
|
cd src
|
||||||
|
( find . -type d -name ".git" -not -path "./third_party/angle/*" -not -path "./third_party/dawn/*" -not -path "./electron/*" ) | xargs rm -rf
|
||||||
|
- name: Minimize Cache Size for Upload
|
||||||
|
if: steps.check-cache.outputs.cache_exists == 'false'
|
||||||
|
run: |
|
||||||
|
rm -rf src/android_webview
|
||||||
|
rm -rf src/ios/chrome
|
||||||
|
rm -rf src/third_party/blink/web_tests
|
||||||
|
rm -rf src/third_party/blink/perf_tests
|
||||||
|
rm -rf src/chrome/test/data/xr/webvr_info
|
||||||
|
rm -rf src/third_party/angle/third_party/VK-GL-CTS/src
|
||||||
|
rm -rf src/third_party/swift-toolchain
|
||||||
|
rm -rf src/third_party/swiftshader/tests/regres/testlists
|
||||||
|
rm -rf src/electron
|
||||||
|
- name: Compress Src Directory
|
||||||
|
if: steps.check-cache.outputs.cache_exists == 'false'
|
||||||
|
run: |
|
||||||
|
echo "Uncompressed src size: $(du -sh src | cut -f1 -d' ')"
|
||||||
|
tar -cvf $DEPSHASH.tar src
|
||||||
|
echo "Compressed src to $(du -sh $DEPSHASH.tar | cut -f1 -d' ')"
|
||||||
|
- name: Upload Compressed Src Cache to Azure
|
||||||
|
if: steps.check-cache.outputs.cache_exists == 'false'
|
||||||
|
run: |
|
||||||
|
az storage blob upload \
|
||||||
|
--account-name $AZURE_STORAGE_ACCOUNT \
|
||||||
|
--account-key $AZURE_STORAGE_KEY \
|
||||||
|
--container-name $AZURE_STORAGE_CONTAINER_NAME \
|
||||||
|
--file $DEPSHASH.tar \
|
||||||
|
--name $DEPSHASH \
|
||||||
|
--debug
|
||||||
|
build:
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
build-arch: [ arm64, x64 ]
|
||||||
|
# macos-large is x64, macos-xlarge is arm64
|
||||||
|
# More runner information: https://github.com/actions/runner-images/blob/main/README.md#available-images
|
||||||
|
runs-on: macos-14-xlarge
|
||||||
|
needs: checkout
|
||||||
|
steps:
|
||||||
|
- name: Load Build Tools
|
||||||
|
run: |
|
||||||
|
export BUILD_TOOLS_SHA=2bb63e2e7877491b52f972532b52adc979a6ec2f
|
||||||
|
npm i -g @electron/build-tools
|
||||||
|
e auto-update disable
|
||||||
|
e init --root=$(pwd) --out=Default ${{ inputs.gn-build-type }} --import ${{ inputs.gn-build-type }} --target-cpu ${{ matrix.build-arch }}
|
||||||
|
e use ${{ inputs.gn-build-type }}
|
||||||
|
- name: Checkout Electron
|
||||||
|
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29
|
||||||
|
with:
|
||||||
|
path: src/electron
|
||||||
|
fetch-depth: 0
|
||||||
|
- name: Setup Node.js/npm
|
||||||
|
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8
|
||||||
|
with:
|
||||||
|
node-version: 20.11.x
|
||||||
|
cache: yarn
|
||||||
|
cache-dependency-path: src/electron/yarn.lock
|
||||||
|
- name: Install Dependencies
|
||||||
|
run: |
|
||||||
|
cd src/electron
|
||||||
|
node script/yarn install
|
||||||
|
- name: Load Target Arch & CPU
|
||||||
|
run: |
|
||||||
|
echo "TARGET_ARCH=${{ matrix.build-arch }}" >> $GITHUB_ENV
|
||||||
|
echo "target_cpu=${{ matrix.build-arch }}" >> $GITHUB_ENV
|
||||||
|
echo "host_cpu=${{ matrix.build-arch }}" >> $GITHUB_ENV
|
||||||
|
- name: Get Depot Tools
|
||||||
|
timeout-minutes: 5
|
||||||
|
run: |
|
||||||
|
git clone --depth=1 https://chromium.googlesource.com/chromium/tools/depot_tools.git
|
||||||
|
if [ "`uname`" == "Darwin" ]; then
|
||||||
|
# remove ninjalog_uploader_wrapper.py from autoninja since we don't use it and it causes problems
|
||||||
|
sed -i '' '/ninjalog_uploader_wrapper.py/d' ./depot_tools/autoninja
|
||||||
|
else
|
||||||
|
sed -i '/ninjalog_uploader_wrapper.py/d' ./depot_tools/autoninja
|
||||||
|
# Remove swift-format dep from cipd on macOS until we send a patch upstream.
|
||||||
|
cd depot_tools
|
||||||
|
git apply --3way ../src/electron/.github/workflows/config/gclient.diff
|
||||||
|
fi
|
||||||
|
# Ensure depot_tools does not update.
|
||||||
|
test -d depot_tools && cd depot_tools
|
||||||
|
touch .disable_auto_update
|
||||||
|
- name: Add Depot Tools to PATH
|
||||||
|
run: echo "$(pwd)/depot_tools" >> $GITHUB_PATH
|
||||||
|
- name: Generate DEPS Hash
|
||||||
|
run: |
|
||||||
|
node src/electron/script/generate-deps-hash.js && cat src/electron/.depshash-target
|
||||||
|
echo "DEPSHASH=v1-src-cache-$(shasum src/electron/.depshash | cut -f1 -d' ')" >> $GITHUB_ENV
|
||||||
|
- name: Download Src Cache
|
||||||
|
# The cache will always exist here as a result of the checkout job
|
||||||
|
# Either it was uploaded to Azure in the checkout job for this commit
|
||||||
|
# or it was uploaded in the checkout job for a previous commit.
|
||||||
|
uses: nick-fields/retry@7152eba30c6575329ac0576536151aca5a72780e # v3.0.0
|
||||||
|
with:
|
||||||
|
timeout_minutes: 20
|
||||||
|
max_attempts: 3
|
||||||
|
retry_on: error
|
||||||
|
command: |
|
||||||
|
az storage blob download \
|
||||||
|
--account-name $AZURE_STORAGE_ACCOUNT \
|
||||||
|
--account-key $AZURE_STORAGE_KEY \
|
||||||
|
--container-name $AZURE_STORAGE_CONTAINER_NAME \
|
||||||
|
--name $DEPSHASH \
|
||||||
|
--file $DEPSHASH.tar \
|
||||||
|
- name: Unzip and Ensure Src Cache
|
||||||
|
run: |
|
||||||
|
echo "Downloaded cache is $(du -sh $DEPSHASH.tar | cut -f1)"
|
||||||
|
mkdir temp-cache
|
||||||
|
tar -xvf $DEPSHASH.tar -C temp-cache
|
||||||
|
echo "Unzipped cache is $(du -sh temp-cache/src | cut -f1)"
|
||||||
|
|
||||||
|
if [ -d "temp-cache/src" ]; then
|
||||||
|
echo "Relocating Cache"
|
||||||
|
rm -rf src
|
||||||
|
mv temp-cache/src src
|
||||||
|
|
||||||
|
echo "Deleting zip file"
|
||||||
|
rm -rf $DEPSHASH.tar
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -d "src/third_party/blink" ]; then
|
||||||
|
echo "Cache was not correctly restored - exiting"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Wiping Electron Directory"
|
||||||
|
rm -rf src/electron
|
||||||
|
- name: Checkout Electron
|
||||||
|
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29
|
||||||
|
with:
|
||||||
|
path: src/electron
|
||||||
|
fetch-depth: 0
|
||||||
|
- name: Run Electron Only Hooks
|
||||||
|
run: |
|
||||||
|
echo "Running Electron Only Hooks"
|
||||||
|
gclient runhooks --spec="solutions=[{'name':'src/electron','url':None,'deps_file':'DEPS','custom_vars':{'process_deps':False},'managed':False}]"
|
||||||
|
- name: Regenerate DEPS Hash
|
||||||
|
run: |
|
||||||
|
(cd src/electron && git checkout .) && node src/electron/script/generate-deps-hash.js && cat src/electron/.depshash-target
|
||||||
|
echo "DEPSHASH=$(shasum src/electron/.depshash | cut -f1 -d' ')" >> $GITHUB_ENV
|
||||||
|
- name: Add CHROMIUM_BUILDTOOLS_PATH to env
|
||||||
|
run: echo "CHROMIUM_BUILDTOOLS_PATH=$(pwd)/src/buildtools" >> $GITHUB_ENV
|
||||||
|
- name: Fix Sync
|
||||||
|
# This step is required to correct for differences between "gclient sync"
|
||||||
|
# on Linux and the expected state on macOS. This requires:
|
||||||
|
# 1. Fixing Clang Install (wrong binary)
|
||||||
|
# 2. Fixing esbuild (wrong binary)
|
||||||
|
# 3. Fixing rustc (wrong binary)
|
||||||
|
# 4. Fixing gn (wrong binary)
|
||||||
|
# 5. Fix reclient (wrong binary)
|
||||||
|
# 6. Fixing dsymutil (wrong binary)
|
||||||
|
# 7. Ensuring we are using the correct ninja and adding it to PATH
|
||||||
|
# 8. Fixing angle (wrong remote)
|
||||||
|
run : |
|
||||||
|
SEDOPTION="-i ''"
|
||||||
|
rm -rf src/third_party/llvm-build
|
||||||
|
python3 src/tools/clang/scripts/update.py
|
||||||
|
|
||||||
|
echo 'infra/3pp/tools/esbuild/${platform}' `gclient getdep --deps-file=src/third_party/devtools-frontend/src/DEPS -r 'third_party/esbuild:infra/3pp/tools/esbuild/${platform}'` > esbuild_ensure_file
|
||||||
|
# Remove extra output from calling gclient getdep which always calls update_depot_tools
|
||||||
|
sed -i '' "s/Updating depot_tools... //g" esbuild_ensure_file
|
||||||
|
cipd ensure --root src/third_party/devtools-frontend/src/third_party/esbuild -ensure-file esbuild_ensure_file
|
||||||
|
|
||||||
|
rm -rf src/third_party/rust-toolchain
|
||||||
|
python3 src/tools/rust/update_rust.py
|
||||||
|
|
||||||
|
# Prevent calling gclient getdep which always calls update_depot_tools
|
||||||
|
echo 'gn/gn/mac-${arch}' `gclient getdep --deps-file=src/DEPS -r 'src/buildtools/mac:gn/gn/mac-${arch}'` > gn_ensure_file
|
||||||
|
sed -i '' "s/Updating depot_tools... //g" gn_ensure_file
|
||||||
|
cipd ensure --root src/buildtools/mac -ensure-file gn_ensure_file
|
||||||
|
|
||||||
|
# Prevent calling gclient getdep which always calls update_depot_tools
|
||||||
|
echo 'infra/rbe/client/${platform}' `gclient getdep --deps-file=src/DEPS -r 'src/buildtools/reclient:infra/rbe/client/${platform}'` > gn_ensure_file
|
||||||
|
sed -i '' "s/Updating depot_tools... //g" gn_ensure_file
|
||||||
|
cipd ensure --root src/buildtools/reclient -ensure-file gn_ensure_file
|
||||||
|
python3 src/buildtools/reclient_cfgs/configure_reclient_cfgs.py --rbe_instance "projects/rbe-chrome-untrusted/instances/default_instance" --reproxy_cfg_template reproxy.cfg.template --rewrapper_cfg_project "" --skip_remoteexec_cfg_fetch
|
||||||
|
|
||||||
|
if [ "$TARGET_ARCH" == "arm64" ]; then
|
||||||
|
DSYM_SHA_FILE=src/tools/clang/dsymutil/bin/dsymutil.arm64.sha1
|
||||||
|
else
|
||||||
|
DSYM_SHA_FILE=src/tools/clang/dsymutil/bin/dsymutil.x64.sha1
|
||||||
|
fi
|
||||||
|
python3 src/third_party/depot_tools/download_from_google_storage.py --no_resume --no_auth --bucket chromium-browser-clang -s $DSYM_SHA_FILE -o src/tools/clang/dsymutil/bin/dsymutil
|
||||||
|
|
||||||
|
echo 'infra/3pp/tools/ninja/${platform}' `gclient getdep --deps-file=src/DEPS -r 'src/third_party/ninja:infra/3pp/tools/ninja/${platform}'` > ninja_ensure_file
|
||||||
|
sed $SEDOPTION "s/Updating depot_tools... //g" ninja_ensure_file
|
||||||
|
cipd ensure --root src/third_party/ninja -ensure-file ninja_ensure_file
|
||||||
|
|
||||||
|
echo "$(pwd)/src/third_party/ninja" >> $GITHUB_PATH
|
||||||
|
|
||||||
|
cd src/third_party/angle
|
||||||
|
rm -f .git/objects/info/alternates
|
||||||
|
git remote set-url origin https://chromium.googlesource.com/angle/angle.git
|
||||||
|
cp .git/config .git/config.backup
|
||||||
|
git remote remove origin
|
||||||
|
mv .git/config.backup .git/config
|
||||||
|
git fetch
|
||||||
|
- name: Install build-tools & Setup RBE
|
||||||
|
run: |
|
||||||
|
echo "NUMBER_OF_NINJA_PROCESSES=200" >> $GITHUB_ENV
|
||||||
|
cd ~/.electron_build_tools
|
||||||
|
npx yarn --ignore-engines
|
||||||
|
# Pull down credential helper and print status
|
||||||
|
node -e "require('./src/utils/reclient.js').downloadAndPrepare({})"
|
||||||
|
HELPER=$(node -p "require('./src/utils/reclient.js').helperPath({})")
|
||||||
|
$HELPER login
|
||||||
|
echo 'RBE_service='`node -e "console.log(require('./src/utils/reclient.js').serviceAddress)"` >> $GITHUB_ENV
|
||||||
|
echo 'RBE_experimental_credentials_helper='`node -e "console.log(require('./src/utils/reclient.js').helperPath({}))"` >> $GITHUB_ENV
|
||||||
|
echo 'RBE_experimental_credentials_helper_args=print' >> $GITHUB_ENV
|
||||||
|
- name: Free Space on MacOS
|
||||||
|
run: |
|
||||||
|
sudo mkdir -p $TMPDIR/del-target
|
||||||
|
|
||||||
|
tmpify() {
|
||||||
|
if [ -d "$1" ]; then
|
||||||
|
sudo mv "$1" $TMPDIR/del-target/$(echo $1|shasum -a 256|head -n1|cut -d " " -f1)
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
strip_universal_deep() {
|
||||||
|
opwd=$(pwd)
|
||||||
|
cd $1
|
||||||
|
f=$(find . -perm +111 -type f)
|
||||||
|
for fp in $f
|
||||||
|
do
|
||||||
|
if [[ $(file "$fp") == *"universal binary"* ]]; then
|
||||||
|
if [ "`arch`" == "arm64" ]; then
|
||||||
|
if [[ $(file "$fp") == *"x86_64"* ]]; then
|
||||||
|
sudo lipo -remove x86_64 "$fp" -o "$fp" || true
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
if [[ $(file "$fp") == *"arm64e)"* ]]; then
|
||||||
|
sudo lipo -remove arm64e "$fp" -o "$fp" || true
|
||||||
|
fi
|
||||||
|
if [[ $(file "$fp") == *"arm64)"* ]]; then
|
||||||
|
sudo lipo -remove arm64 "$fp" -o "$fp" || true
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
cd $opwd
|
||||||
|
}
|
||||||
|
|
||||||
|
tmpify /Library/Developer/CoreSimulator
|
||||||
|
tmpify ~/Library/Developer/CoreSimulator
|
||||||
|
tmpify $(xcode-select -p)/Platforms/AppleTVOS.platform
|
||||||
|
tmpify $(xcode-select -p)/Platforms/iPhoneOS.platform
|
||||||
|
tmpify $(xcode-select -p)/Platforms/WatchOS.platform
|
||||||
|
tmpify $(xcode-select -p)/Platforms/WatchSimulator.platform
|
||||||
|
tmpify $(xcode-select -p)/Platforms/AppleTVSimulator.platform
|
||||||
|
tmpify $(xcode-select -p)/Platforms/iPhoneSimulator.platform
|
||||||
|
tmpify $(xcode-select -p)/Toolchains/XcodeDefault.xctoolchain/usr/metal/ios
|
||||||
|
tmpify $(xcode-select -p)/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift
|
||||||
|
tmpify $(xcode-select -p)/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift-5.0
|
||||||
|
tmpify ~/.rubies
|
||||||
|
tmpify ~/Library/Caches/Homebrew
|
||||||
|
tmpify /usr/local/Homebrew
|
||||||
|
|
||||||
|
# the contents of build/linux/strip_binary.gni aren't used, but
|
||||||
|
# https://chromium-review.googlesource.com/c/chromium/src/+/4278307
|
||||||
|
# needs the file to exist.
|
||||||
|
# mv ~/project/src/build/linux/strip_binary.gni "${TMPDIR}"/
|
||||||
|
# tmpify ~/project/src/build/linux/
|
||||||
|
# mkdir -p ~/project/src/build/linux
|
||||||
|
# mv "${TMPDIR}/strip_binary.gni" ~/project/src/build/linux/
|
||||||
|
|
||||||
|
sudo rm -rf $TMPDIR/del-target
|
||||||
|
|
||||||
|
# sudo rm -rf "/System/Library/Desktop Pictures"
|
||||||
|
# sudo rm -rf /System/Library/Templates/Data
|
||||||
|
# sudo rm -rf /System/Library/Speech/Voices
|
||||||
|
# sudo rm -rf "/System/Library/Screen Savers"
|
||||||
|
# sudo rm -rf /System/Volumes/Data/Library/Developer/CommandLineTools/SDKs
|
||||||
|
# sudo rm -rf "/System/Volumes/Data/Library/Application Support/Apple/Photos/Print Products"
|
||||||
|
# sudo rm -rf /System/Volumes/Data/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/
|
||||||
|
# sudo rm -rf /System/Volumes/Data/Library/Java
|
||||||
|
# sudo rm -rf /System/Volumes/Data/Library/Ruby
|
||||||
|
# sudo rm -rf /System/Volumes/Data/Library/Printers
|
||||||
|
# sudo rm -rf /System/iOSSupport
|
||||||
|
# sudo rm -rf /System/Applications/*.app
|
||||||
|
# sudo rm -rf /System/Applications/Utilities/*.app
|
||||||
|
# sudo rm -rf /System/Library/LinguisticData
|
||||||
|
# sudo rm -rf /System/Volumes/Data/private/var/db/dyld/*
|
||||||
|
# sudo rm -rf /System/Library/Fonts/*
|
||||||
|
# sudo rm -rf /System/Library/PreferencePanes
|
||||||
|
# sudo rm -rf /System/Library/AssetsV2/*
|
||||||
|
sudo rm -rf /Applications/Safari.app
|
||||||
|
sudo rm -rf ~/project/src/third_party/catapult/tracing/test_data
|
||||||
|
sudo rm -rf ~/project/src/third_party/angle/third_party/VK-GL-CTS
|
||||||
|
|
||||||
|
# lipo off some huge binaries arm64 versions to save space
|
||||||
|
strip_universal_deep $(xcode-select -p)/../SharedFrameworks
|
||||||
|
# strip_arm_deep /System/Volumes/Data/Library/Developer/CommandLineTools/usr
|
||||||
|
- name: Build Electron (darwin)
|
||||||
|
run: |
|
||||||
|
cd src/electron
|
||||||
|
# TODO(codebytere): remove this once we figure out why .git/packed-refs is initially missing
|
||||||
|
git pack-refs
|
||||||
|
cd ..
|
||||||
|
ulimit -n 10000
|
||||||
|
sudo launchctl limit maxfiles 65536 200000
|
||||||
|
|
||||||
|
NINJA_SUMMARIZE_BUILD=1 e build -j $NUMBER_OF_NINJA_PROCESSES
|
||||||
|
cp out/Default/.ninja_log out/electron_ninja_log
|
||||||
|
node electron/script/check-symlinks.js
|
||||||
|
- name: Build Electron dist.zip (darwin)
|
||||||
|
run: |
|
||||||
|
cd src
|
||||||
|
e build electron:electron_dist_zip -j $NUMBER_OF_NINJA_PROCESSES
|
||||||
|
if [ "$CHECK_DIST_MANIFEST" == "1" ]; then
|
||||||
|
target_os=mac
|
||||||
|
electron/script/zip_manifests/check-zip-manifest.py out/Default/dist.zip electron/script/zip_manifests/dist_zip.$target_os.${{ env.TARGET_ARCH }}.manifest
|
||||||
|
fi
|
||||||
|
- name: Build Mksnapshot (darwin)
|
||||||
|
run: |
|
||||||
|
cd src
|
||||||
|
e build electron:electron_mksnapshot -j $NUMBER_OF_NINJA_PROCESSES
|
||||||
|
gn desc out/Default v8:run_mksnapshot_default args > out/Default/mksnapshot_args
|
||||||
|
# Remove unused args from mksnapshot_args
|
||||||
|
SEDOPTION="-i ''"
|
||||||
|
sed $SEDOPTION '/.*builtins-pgo/d' out/Default/mksnapshot_args
|
||||||
|
sed $SEDOPTION '/--turbo-profiling-input/d' out/Default/mksnapshot_args
|
||||||
|
sed $SEDOPTION '/The gn arg use_goma=true .*/d' out/Default/mksnapshot_args
|
||||||
|
e build electron:electron_mksnapshot_zip -j $NUMBER_OF_NINJA_PROCESSES
|
||||||
|
(cd out/Default; zip mksnapshot.zip mksnapshot_args gen/v8/embedded.S)
|
||||||
|
- name: Build Chromedriver (darwin)
|
||||||
|
run: |
|
||||||
|
cd src
|
||||||
|
e build electron:electron_chromedriver -j $NUMBER_OF_NINJA_PROCESSES
|
||||||
|
e build electron:electron_chromedriver_zip
|
||||||
|
# NOTE (vertedinde): We strip binaries/symbols on the Linux job, not the Mac job
|
||||||
|
- name: Generate & Zip Symbols (darwin)
|
||||||
|
run: |
|
||||||
|
# Generate breakpad symbols on release builds
|
||||||
|
if [ ${{ inputs.generate-symbols }} ]; then
|
||||||
|
e build electron:electron_symbols
|
||||||
|
fi
|
||||||
|
cd src
|
||||||
|
export BUILD_PATH="$(pwd)/out/Default"
|
||||||
|
e build electron:licenses
|
||||||
|
e build electron:electron_version_file
|
||||||
|
if [ ${{ inputs.is-release }} ]; then
|
||||||
|
DELETE_DSYMS_AFTER_ZIP=1 electron/script/zip-symbols.py -b $BUILD_PATH
|
||||||
|
else
|
||||||
|
electron/script/zip-symbols.py -b $BUILD_PATH
|
||||||
|
fi
|
||||||
|
- name: Generate FFMpeg
|
||||||
|
if: ${{ inputs.is-release }}
|
||||||
|
run: |
|
||||||
|
cd src
|
||||||
|
gn gen out/ffmpeg --args="import(\"//electron/build/args/ffmpeg.gn\") use_remoteexec=true $GN_EXTRA_ARGS"
|
||||||
|
autoninja -C out/ffmpeg electron:electron_ffmpeg_zip -j $NUMBER_OF_NINJA_PROCESSES
|
||||||
|
- name: Generate Hunspell Dictionaries
|
||||||
|
if: ${{ inputs.is-release }}
|
||||||
|
run: |
|
||||||
|
cd src
|
||||||
|
autoninja -C out/Default electron:hunspell_dictionaries_zip -j $NUMBER_OF_NINJA_PROCESSES
|
||||||
|
- name: Generate TypeScript Definitions
|
||||||
|
if: ${{ inputs.is-release }}
|
||||||
|
run: |
|
||||||
|
cd src/electron
|
||||||
|
node script/yarn create-typescript-definitions
|
||||||
|
# TODO(vertedinde): These uploads currently point to a different Azure bucket & GitHub Repo
|
||||||
|
- name: Publish Electron Dist
|
||||||
|
if: ${{ inputs.is-release }}
|
||||||
|
run: |
|
||||||
|
rm -rf src/out/Default/obj
|
||||||
|
cd src/electron
|
||||||
|
if [ ${{ inputs.upload-to-storage == '1' }} ]; then
|
||||||
|
echo 'Uploading Electron release distribution to Azure'
|
||||||
|
script/release/uploaders/upload.py --verbose --upload_to_storage
|
||||||
|
else
|
||||||
|
echo 'Uploading Electron release distribution to GitHub releases'
|
||||||
|
script/release/uploaders/upload.py --verbose
|
||||||
|
fi
|
||||||
|
# The current generated_artifacts_<< artifact.key >> name was taken from CircleCI
|
||||||
|
# to ensure we don't break anything, but we may be able to improve that.
|
||||||
|
- name: Move all Generated Artifacts to Upload Folder
|
||||||
|
run: ./src/electron/script/actions/move-artifacts.sh
|
||||||
|
- name: Upload Generated Artifacts
|
||||||
|
uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808
|
||||||
|
with:
|
||||||
|
name: generated_artifacts_darwin_${{ env.TARGET_ARCH }}
|
||||||
|
path: ./generated_artifacts_darwin_${{ env.TARGET_ARCH }}
|
||||||
|
- name: Persist Build Artifacts
|
||||||
|
uses: actions/cache/save@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9
|
||||||
|
with:
|
||||||
|
path: |
|
||||||
|
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/mac
|
||||||
|
src/buildtools/third_party/libc++
|
||||||
|
src/buildtools/third_party/libc++abi
|
||||||
|
src/third_party/libc++
|
||||||
|
src/third_party/libc++abi
|
||||||
|
src/out/Default/obj/buildtools/third_party
|
||||||
|
src/v8/tools/builtins-pgo
|
||||||
|
key: ${{ runner.os }}-build-artifacts-darwin-${{ env.TARGET_ARCH }}-${{ github.sha }}
|
||||||
|
- name: Create MAS Config
|
||||||
|
run: |
|
||||||
|
mv src/electron/.github/workflows/config/${{ inputs.gn-build-type }}/${{ matrix.build-arch }}/evm.mas.json $HOME/.electron_build_tools/configs/evm.mas.json
|
||||||
|
echo "MAS_BUILD=true" >> $GITHUB_ENV
|
||||||
|
e use mas
|
||||||
|
- name: Build Electron (mas)
|
||||||
|
run: |
|
||||||
|
rm -rf "src/out/Default/Electron Framework.framework"
|
||||||
|
rm -rf src/out/Default/Electron*.app
|
||||||
|
|
||||||
|
cd src/electron
|
||||||
|
# TODO(codebytere): remove this once we figure out why .git/packed-refs is initially missing
|
||||||
|
git pack-refs
|
||||||
|
cd ..
|
||||||
|
|
||||||
|
ulimit -n 10000
|
||||||
|
sudo launchctl limit maxfiles 65536 200000
|
||||||
|
NINJA_SUMMARIZE_BUILD=1 e build -j $NUMBER_OF_NINJA_PROCESSES
|
||||||
|
cp out/Default/.ninja_log out/electron_ninja_log
|
||||||
|
node electron/script/check-symlinks.js
|
||||||
|
- name: Build Electron dist.zip (mas)
|
||||||
|
run: |
|
||||||
|
cd src
|
||||||
|
e build electron:electron_dist_zip -j $NUMBER_OF_NINJA_PROCESSES
|
||||||
|
if [ "$CHECK_DIST_MANIFEST" == "1" ]; then
|
||||||
|
target_os=mac_mas
|
||||||
|
electron/script/zip_manifests/check-zip-manifest.py out/Default/dist.zip electron/script/zip_manifests/dist_zip.$target_os.${{ env.TARGET_ARCH }}.manifest
|
||||||
|
fi
|
||||||
|
- name: Build Mksnapshot (mas)
|
||||||
|
run: |
|
||||||
|
cd src
|
||||||
|
e build electron:electron_mksnapshot -j $NUMBER_OF_NINJA_PROCESSES
|
||||||
|
gn desc out/Default v8:run_mksnapshot_default args > out/Default/mksnapshot_args
|
||||||
|
# Remove unused args from mksnapshot_args
|
||||||
|
SEDOPTION="-i ''"
|
||||||
|
sed $SEDOPTION '/.*builtins-pgo/d' out/Default/mksnapshot_args
|
||||||
|
sed $SEDOPTION '/--turbo-profiling-input/d' out/Default/mksnapshot_args
|
||||||
|
sed $SEDOPTION '/The gn arg use_goma=true .*/d' out/Default/mksnapshot_args
|
||||||
|
e build electron:electron_mksnapshot_zip -j $NUMBER_OF_NINJA_PROCESSES
|
||||||
|
(cd out/Default; zip mksnapshot.zip mksnapshot_args gen/v8/embedded.S)
|
||||||
|
- name: Build Chromedriver (mas)
|
||||||
|
run: |
|
||||||
|
cd src
|
||||||
|
e build electron:electron_chromedriver -j $NUMBER_OF_NINJA_PROCESSES
|
||||||
|
e build electron:electron_chromedriver_zip
|
||||||
|
- name: Build Node Headers
|
||||||
|
run: |
|
||||||
|
cd src
|
||||||
|
e build electron:node_headers
|
||||||
|
- name: Generate & Zip Symbols (mas)
|
||||||
|
run: |
|
||||||
|
if [ ${{ inputs.generate-symbols }} ]; then
|
||||||
|
e build electron:electron_symbols
|
||||||
|
fi
|
||||||
|
cd src
|
||||||
|
export BUILD_PATH="$(pwd)/out/Default"
|
||||||
|
e build electron:licenses
|
||||||
|
e build electron:electron_version_file
|
||||||
|
if [ ${{ inputs.is-release }}]; then
|
||||||
|
DELETE_DSYMS_AFTER_ZIP=1 electron/script/zip-symbols.py -b $BUILD_PATH
|
||||||
|
else
|
||||||
|
electron/script/zip-symbols.py -b $BUILD_PATH
|
||||||
|
fi
|
||||||
|
# TODO(vertedinde): These uploads currently point to a different Azure bucket & GitHub Repo
|
||||||
|
- name: Publish Electron Dist
|
||||||
|
if: ${{ inputs.is-release }}
|
||||||
|
run: |
|
||||||
|
rm -rf src/out/Default/obj
|
||||||
|
cd src/electron
|
||||||
|
if [ ${{ inputs.upload-to-storage == '1' }} ]; then
|
||||||
|
echo 'Uploading Electron release distribution to Azure'
|
||||||
|
script/release/uploaders/upload.py --verbose --upload_to_storage
|
||||||
|
else
|
||||||
|
echo 'Uploading Electron release distribution to GitHub releases'
|
||||||
|
script/release/uploaders/upload.py --verbose
|
||||||
|
fi
|
||||||
|
- name: Move all Generated Artifacts to Upload Folder (mas)
|
||||||
|
run: ./src/electron/script/actions/move-artifacts.sh
|
||||||
|
- name: Upload Generated Artifacts
|
||||||
|
uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808
|
||||||
|
with:
|
||||||
|
name: generated_artifacts_mas_${{ env.TARGET_ARCH }}
|
||||||
|
path: ./generated_artifacts_mas_${{ env.TARGET_ARCH }}
|
||||||
|
- name: Persist Build Artifacts
|
||||||
|
uses: actions/cache/save@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9
|
||||||
|
with:
|
||||||
|
path: |
|
||||||
|
src/out/Default/gen/node_headers
|
||||||
|
src/out/Default/overlapped-checker
|
||||||
|
src/out/Default/ffmpeg
|
||||||
|
src/out/Default/hunspell_dictionaries
|
||||||
|
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/mac
|
||||||
|
src/buildtools/third_party/libc++
|
||||||
|
src/buildtools/third_party/libc++abi
|
||||||
|
src/third_party/libc++
|
||||||
|
src/third_party/libc++abi
|
||||||
|
src/out/Default/obj/buildtools/third_party
|
||||||
|
src/v8/tools/builtins-pgo
|
||||||
|
key: ${{ runner.os }}-build-artifacts-mas-${{ env.TARGET_ARCH }}-${{ github.sha }}
|
||||||
|
test:
|
||||||
|
if: ${{ inputs.is-release == false }}
|
||||||
|
runs-on: macos-14-xlarge
|
||||||
|
needs: build
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
build-type: [ darwin, mas ]
|
||||||
|
env:
|
||||||
|
BUILD_TYPE: ${{ matrix.build-type }}
|
||||||
|
steps:
|
||||||
|
- name: Load Build Tools
|
||||||
|
run: |
|
||||||
|
export BUILD_TOOLS_SHA=2bb63e2e7877491b52f972532b52adc979a6ec2f
|
||||||
|
npm i -g @electron/build-tools
|
||||||
|
e auto-update disable
|
||||||
|
e init --root=$(pwd) --out=Default ${{ inputs.gn-build-type }}
|
||||||
|
- name: Checkout Electron
|
||||||
|
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29
|
||||||
|
with:
|
||||||
|
path: src/electron
|
||||||
|
fetch-depth: 0
|
||||||
|
- name: Setup Node.js/npm
|
||||||
|
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8
|
||||||
|
with:
|
||||||
|
node-version: 20.11.x
|
||||||
|
cache: yarn
|
||||||
|
cache-dependency-path: src/electron/yarn.lock
|
||||||
|
- name: Install Dependencies
|
||||||
|
run: |
|
||||||
|
cd src/electron
|
||||||
|
node script/yarn install
|
||||||
|
- name: Get Depot Tools
|
||||||
|
timeout-minutes: 5
|
||||||
|
run: |
|
||||||
|
git clone --depth=1 https://chromium.googlesource.com/chromium/tools/depot_tools.git
|
||||||
|
if [ "`uname`" == "Darwin" ]; then
|
||||||
|
# remove ninjalog_uploader_wrapper.py from autoninja since we don't use it and it causes problems
|
||||||
|
sed -i '' '/ninjalog_uploader_wrapper.py/d' ./depot_tools/autoninja
|
||||||
|
else
|
||||||
|
sed -i '/ninjalog_uploader_wrapper.py/d' ./depot_tools/autoninja
|
||||||
|
# Remove swift-format dep from cipd on macOS until we send a patch upstream.
|
||||||
|
cd depot_tools
|
||||||
|
git apply --3way ../src/electron/.github/workflows/config/gclient.diff
|
||||||
|
fi
|
||||||
|
# Ensure depot_tools does not update.
|
||||||
|
test -d depot_tools && cd depot_tools
|
||||||
|
touch .disable_auto_update
|
||||||
|
- name: Add Depot Tools to PATH
|
||||||
|
run: echo "$(pwd)/depot_tools" >> $GITHUB_PATH
|
||||||
|
- name: Download Generated Artifacts
|
||||||
|
uses: actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e
|
||||||
|
with:
|
||||||
|
name: generated_artifacts_${{ matrix.build-type }}
|
||||||
|
path: ./generated_artifacts_${{ matrix.build-type }}
|
||||||
|
- name: Restore Persisted Build Artifacts
|
||||||
|
uses: actions/cache/restore@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9
|
||||||
|
with:
|
||||||
|
path: |
|
||||||
|
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/mac
|
||||||
|
src/buildtools/third_party/libc++
|
||||||
|
src/buildtools/third_party/libc++abi
|
||||||
|
src/third_party/libc++
|
||||||
|
src/third_party/libc++abi
|
||||||
|
src/out/Default/obj/buildtools/third_party
|
||||||
|
src/v8/tools/builtins-pgo
|
||||||
|
key: ${{ runner.os }}-build-artifacts-${{ matrix.build-type }}-${{ github.sha }}
|
||||||
|
- name: Restore Generated Artifacts
|
||||||
|
run: ./src/electron/script/actions/restore-artifacts.sh
|
||||||
|
- name: Unzip Dist, Mksnapshot & Chromedriver
|
||||||
|
run: |
|
||||||
|
cd src/out/Default
|
||||||
|
unzip -:o dist.zip
|
||||||
|
unzip -:o chromedriver.zip
|
||||||
|
unzip -:o mksnapshot.zip
|
||||||
|
- name: Import & Trust Self-Signed Codesigning Cert on MacOS
|
||||||
|
run: |
|
||||||
|
sudo security authorizationdb write com.apple.trust-settings.admin allow
|
||||||
|
cd src/electron
|
||||||
|
./script/codesign/generate-identity.sh
|
||||||
|
- name: Run Electron Tests
|
||||||
|
env:
|
||||||
|
MOCHA_REPORTER: mocha-multi-reporters
|
||||||
|
ELECTRON_TEST_RESULTS_DIR: junit
|
||||||
|
MOCHA_MULTI_REPORTERS: mocha-junit-reporter, tap
|
||||||
|
ELECTRON_DISABLE_SECURITY_WARNINGS: 1
|
||||||
|
ELECTRON_SKIP_NATIVE_MODULE_TESTS: true
|
||||||
|
run: |
|
||||||
|
cd src/electron
|
||||||
|
node script/yarn test --runners=main --trace-uncaught --enable-logging
|
14
.github/workflows/macos-publish.yml
vendored
14
.github/workflows/macos-publish.yml
vendored
|
@ -5,7 +5,7 @@ on:
|
||||||
inputs:
|
inputs:
|
||||||
upload-to-storage:
|
upload-to-storage:
|
||||||
description: 'Uploads to Azure storage'
|
description: 'Uploads to Azure storage'
|
||||||
required: false
|
required: false
|
||||||
default: '1'
|
default: '1'
|
||||||
type: string
|
type: string
|
||||||
run-macos-publish:
|
run-macos-publish:
|
||||||
|
@ -16,11 +16,11 @@ on:
|
||||||
jobs:
|
jobs:
|
||||||
publish:
|
publish:
|
||||||
# TODO(vertedinde): Change this to main before merge
|
# TODO(vertedinde): Change this to main before merge
|
||||||
uses: electron/electron/.github/workflows/macos-build.yml@gh-actions-mac-publish
|
uses: electron/electron/.github/workflows/macos-pipeline.yml@main
|
||||||
with:
|
with:
|
||||||
IS_RELEASE: true
|
is-release: true
|
||||||
GN_CONFIG: //electron/build/args/release.gn
|
gn-config: //electron/build/args/release.gn
|
||||||
GN_BUILD_TYPE: release
|
gn-build-type: release
|
||||||
GENERATE_SYMBOLS: true
|
generate-symbols: true
|
||||||
UPLOAD_TO_STORAGE: ${{ inputs.upload-to-storage }}
|
upload-to-storage: ${{ inputs.upload-to-storage }}
|
||||||
secrets: inherit
|
secrets: inherit
|
||||||
|
|
Loading…
Reference in a new issue