From 5f8a490a008f40b147457803d3b0c0ab6c00189f Mon Sep 17 00:00:00 2001 From: Keeley Hammond Date: Mon, 3 Jun 2024 11:43:54 -0700 Subject: [PATCH] build: add release config/dsymutil fix, test-releases for GHA (#42350) * build: add publishing workflow for GHActions * build: add test repo/bucket for uploads * build: clean up conditionals, add macos-14-large, review comments * build: remove host_cpu var from GCLIENT_EXTRA_ARGS * build: use GN_CONFIG * remove: hardcode release gn config * Fix GN args import for release * Use BUILD_TOOLS_SHA when cloning build-tools in test * build: create test release in prepare-release * build: fix GN_CONFIG for mas builds * Fix dsymutil arch resetting --------- Co-authored-by: Shelley Vohr --- .github/workflows/config/release/evm.mas.json | 25 +++++++++++++++++++ .../config/{ => testing}/evm.mas.json | 0 .github/workflows/macos-build.yml | 19 +++++++++----- script/release/prepare-release.js | 17 ++++++++++++- 4 files changed, 54 insertions(+), 7 deletions(-) create mode 100644 .github/workflows/config/release/evm.mas.json rename .github/workflows/config/{ => testing}/evm.mas.json (100%) diff --git a/.github/workflows/config/release/evm.mas.json b/.github/workflows/config/release/evm.mas.json new file mode 100644 index 000000000000..53cedbfe96ed --- /dev/null +++ b/.github/workflows/config/release/evm.mas.json @@ -0,0 +1,25 @@ +{ + "root": "/Users/runner/work/electron/electron/", + "remotes": { + "electron": { + "origin": "https://github.com/electron/electron.git" + } + }, + "gen": { + "args": [ + "import(\"//electron/build/args/release.gn\")", + "use_remoteexec = true", + "is_mas_build = true" + ], + "out": "Default" + }, + "env": { + "CHROMIUM_BUILDTOOLS_PATH": "/Users/runner/work/electron/electron/src/buildtools", + "GIT_CACHE_PATH": "/Users/runner/work/electron/electron/.git-cache" + }, + "$schema": "file:///home/builduser/.electron_build_tools/evm-config.schema.json", + "configValidationLevel": "strict", + "reclient": "remote_exec", + "goma": "none", + "preserveXcode": 5 +} diff --git a/.github/workflows/config/evm.mas.json b/.github/workflows/config/testing/evm.mas.json similarity index 100% rename from .github/workflows/config/evm.mas.json rename to .github/workflows/config/testing/evm.mas.json diff --git a/.github/workflows/macos-build.yml b/.github/workflows/macos-build.yml index a86ef7f50371..8cff93c0ad7b 100644 --- a/.github/workflows/macos-build.yml +++ b/.github/workflows/macos-build.yml @@ -16,7 +16,7 @@ on: GN_BUILD_TYPE: required: false type: string - default: testing + default: release GENERATE_SYMBOLS: required: false type: boolean @@ -36,6 +36,7 @@ env: AZURE_STORAGE_KEY: ${{ secrets.AZURE_STORAGE_KEY }} AZURE_STORAGE_CONTAINER_NAME: ${{ secrets.AZURE_STORAGE_CONTAINER_NAME }} ELECTRON_RBE_JWT: ${{ secrets.ELECTRON_RBE_JWT }} + 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' @@ -200,7 +201,8 @@ jobs: run: | export BUILD_TOOLS_SHA=2bb63e2e7877491b52f972532b52adc979a6ec2f npm i -g @electron/build-tools - e init --root=$(pwd) --out=Default ${{ inputs.GN_BUILD_TYPE }} + e init --root=$(pwd) --out=Default ${{ inputs.GN_BUILD_TYPE }} --import ${{ inputs.GN_BUILD_TYPE }} + e use ${{ inputs.GN_BUILD_TYPE }} - name: Checkout Electron uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b with: @@ -335,7 +337,11 @@ jobs: 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 - DSYM_SHA_FILE=src/tools/clang/dsymutil/bin/dsymutil.arm64.sha1 + 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 @@ -454,9 +460,9 @@ jobs: # 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 @@ -548,7 +554,7 @@ jobs: key: ${{ runner.os }}-build-artifacts-darwin-${{ env.TARGET_ARCH }}-${{ github.sha }} - name: Create MAS Config run: | - mv src/electron/.github/workflows/config/evm.mas.json $HOME/.electron_build_tools/configs/evm.mas.json + mv src/electron/.github/workflows/config/${{ inputs.GN_BUILD_TYPE }}/evm.mas.json $HOME/.electron_build_tools/configs/evm.mas.json echo "MAS_BUILD=true" >> $GITHUB_ENV e use mas - name: Build Electron (mas) @@ -718,7 +724,8 @@ jobs: steps: - name: Load Build Tools run: | - yarn add git://github.com/electron/build-tools.git#2bb63e2e7877491b52f972532b52adc979a6ec2f + 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@0ad4b8fadaa221de15dcec353f45205ec38ea70b diff --git a/script/release/prepare-release.js b/script/release/prepare-release.js index 5c2af2ba4aed..c84580e4bfed 100755 --- a/script/release/prepare-release.js +++ b/script/release/prepare-release.js @@ -17,7 +17,6 @@ const bumpType = args._[0]; const targetRepo = getRepo(); function getRepo () { - if (process.env.IS_GHA_RELEASE) return 'test-releases'; return bumpType === 'nightly' ? 'nightlies' : 'electron'; } @@ -128,7 +127,23 @@ async function createRelease (branchToTarget, isBeta) { process.exit(1); }); + const ghaTestRelease = await octokit.repos.createRelease({ + owner: 'electron', + repo: 'test-releases', + tag_name: newVersion, + draft: true, + name: `electron ${newVersion}`, + body: releaseBody, + prerelease: releaseIsPrelease, + target_commitish: newVersion.includes('nightly') ? 'main' : branchToTarget + }).catch(err => { + console.log(`${fail} Error creating new GHA test release: `, err); + }); + console.log(`Release has been created with id: ${release.data.id}.`); + if (ghaTestRelease && ghaTestRelease.data) { + console.log(`Test Release has been created with id: ${ghaTestRelease.data.id}.`); + } console.log(`${pass} Draft release for ${newVersion} successful.`); }