diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 29294f6a08c2..64c9e2371155 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -97,7 +97,7 @@ jobs: - /mnt/cross-instance-cache:/mnt/cross-instance-cache - /var/run/sas:/var/run/sas env: - GCLIENT_EXTRA_ARGS: '--custom-var=checkout_mac=True --custom-var=host_os=mac' + GCLIENT_EXTRA_ARGS: '--custom-var=checkout_arm=True --custom-var=checkout_arm64=True' steps: - name: Checkout Electron uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 diff --git a/.github/workflows/pipeline-electron-build-and-test.yml b/.github/workflows/pipeline-electron-build-and-test.yml index 14c84fc20928..f7b05280fe27 100644 --- a/.github/workflows/pipeline-electron-build-and-test.yml +++ b/.github/workflows/pipeline-electron-build-and-test.yml @@ -67,6 +67,16 @@ jobs: generate-symbols: ${{ inputs.generate-symbols }} upload-to-storage: ${{ inputs.upload-to-storage }} secrets: inherit + gn-check: + if: ${{ inputs.target-platform == 'macos' || inputs.target-arch != 'arm' }} + uses: ./.github/workflows/pipeline-segment-electron-gn-check.yml + with: + target-platform: ${{ inputs.target-platform }} + target-arch: ${{ inputs.target-arch }} + check-runs-on: ${{ inputs.build-runs-on }} + check-container: ${{ inputs.build-container }} + gn-build-type: ${{ inputs.gn-build-type }} + secrets: inherit test: uses: ./.github/workflows/pipeline-segment-electron-test.yml needs: build diff --git a/.github/workflows/pipeline-segment-electron-build.yml b/.github/workflows/pipeline-segment-electron-build.yml index 6fb6db6c14d7..0eccd0bb649a 100644 --- a/.github/workflows/pipeline-segment-electron-build.yml +++ b/.github/workflows/pipeline-segment-electron-build.yml @@ -142,7 +142,7 @@ jobs: fetch-depth: 0 - name: Load Build Tools run: | - export BUILD_TOOLS_SHA=97f6508e27d08c1e41b61b2cdc1250d998b9ff8c + export BUILD_TOOLS_SHA=ff3e40a9a2ebb735c18b6450ecd5ddaa8bb364a9 npm i -g @electron/build-tools e auto-update disable e init -f --root=$(pwd) --out=Default ${{ inputs.gn-build-type }} --import ${{ inputs.gn-build-type }} --target-cpu ${{ inputs.target-arch }} --only-sdk diff --git a/.github/workflows/pipeline-segment-electron-gn-check.yml b/.github/workflows/pipeline-segment-electron-gn-check.yml new file mode 100644 index 000000000000..66ba1af47dcc --- /dev/null +++ b/.github/workflows/pipeline-segment-electron-gn-check.yml @@ -0,0 +1,143 @@ +name: Pipeline Segment - Electron GN Check + +on: + workflow_call: + inputs: + target-platform: + type: string + description: 'Platform to run on, can be macos or linux' + required: true + target-arch: + type: string + description: 'Arch to build for, can be x64, arm64 or arm' + required: true + check-runs-on: + type: string + description: 'What host to run the tests on' + required: true + check-container: + type: string + description: 'JSON container information for aks runs-on' + required: false + default: '{"image":null}' + gn-build-type: + description: 'The gn build type - testing or release' + required: true + type: string + default: testing + +concurrency: + group: electron-gn-check-${{ inputs.target-platform }}-${{ inputs.target-arch }}-${{ github.ref }} + cancel-in-progress: true + +env: + ELECTRON_RBE_JWT: ${{ secrets.ELECTRON_RBE_JWT }} + GN_BUILDFLAG_ARGS: 'enable_precompiled_headers=false' + GCLIENT_EXTRA_ARGS: ${{ inputs.target-platform == 'macos' && '--custom-var=checkout_mac=True --custom-var=host_os=mac' || '--custom-var=checkout_arm=True --custom-var=checkout_arm64=True' }} + ELECTRON_OUT_DIR: Default + TARGET_ARCH: ${{ inputs.target-arch }} + +jobs: + gn-check: + # TODO(codebytere): Change this to medium VM + runs-on: ${{ inputs.check-runs-on }} + container: ${{ fromJSON(inputs.check-container) }} + strategy: + fail-fast: false + matrix: + build-type: ${{ inputs.target-platform == 'macos' && fromJSON('["darwin","mas"]') || fromJSON('["linux"]') }} + env: + BUILD_TYPE: ${{ matrix.build-type }} + TARGET_ARCH: ${{ inputs.target-arch }} + steps: + - name: Load Build Tools + run: | + export BUILD_TOOLS_SHA=ff3e40a9a2ebb735c18b6450ecd5ddaa8bb364a9 + npm i -g @electron/build-tools + e auto-update disable + e init -f --root=$(pwd) --out=Default ${{ inputs.gn-build-type }} --import ${{ inputs.gn-build-type }} --target-cpu ${{ inputs.target-arch }} --only-sdk + - name: Checkout Electron + uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 + with: + path: src/electron + fetch-depth: 0 + - name: Get Depot Tools + timeout-minutes: 5 + run: | + git clone --depth=1 https://chromium.googlesource.com/chromium/tools/depot_tools.git + + SEDOPTION="-i" + if [ "`uname`" = "Darwin" ]; then + SEDOPTION="-i ''" + fi + + # remove ninjalog_uploader_wrapper.py from autoninja since we don't use it and it causes problems + sed $SEDOPTION '/ninjalog_uploader_wrapper.py/d' ./depot_tools/autoninja + + # Ensure depot_tools does not update. + test -d depot_tools && cd depot_tools + if [ "`uname`" = "Linux" ]; then + git apply --3way ../src/electron/.github/workflows/config/gclient.diff + fi + touch .disable_auto_update + - name: Add Depot Tools to PATH + run: echo "$(pwd)/depot_tools" >> $GITHUB_PATH + - name: Set GN_EXTRA_ARGS for Linux + if: ${{ inputs.target-platform == 'linux' }} + run: | + if [ "${{ inputs.target-arch }}" = "arm" ]; then + GN_EXTRA_ARGS='build_tflite_with_xnnpack=false' + elif [ "${{ inputs.target-arch }}" = "arm64" ]; then + GN_EXTRA_ARGS='fatal_linker_warnings=false enable_linux_installer=false' + fi + echo "GN_EXTRA_ARGS=$GN_EXTRA_ARGS" >> $GITHUB_ENV + - name: Generate DEPS Hash + run: | + node src/electron/script/generate-deps-hash.js && cat src/electron/.depshash-target + DEPSHASH=v1-src-cache-$(shasum src/electron/.depshash | cut -f1 -d' ') + echo "DEPSHASH=$DEPSHASH" >> $GITHUB_ENV + echo "CACHE_PATH=$DEPSHASH.tar" >> $GITHUB_ENV + - name: Restore src cache via AZCopy + if: ${{ inputs.target-platform == 'macos' }} + uses: ./src/electron/.github/actions/restore-cache-azcopy + - name: Restore src cache via AKS + if: ${{ inputs.target-platform == 'linux' }} + uses: ./src/electron/.github/actions/restore-cache-aks + - name: Run Electron Only Hooks + run: | + 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: Checkout Electron + uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 + with: + path: src/electron + fetch-depth: 0 + - name: Default GN gen + run: | + cd src/electron + git pack-refs + cd .. + + e build --only-gen + - name: Run GN Check + run: | + cd src + gn check out/Default //electron:electron_lib + gn check out/Default //electron:electron_app + gn check out/Default //electron/shell/common/api:mojo + + # Check the hunspell filenames + node electron/script/gen-hunspell-filenames.js --check + node electron/script/gen-libc++-filenames.js --check + - name: Wait for active SSH sessions + if: always() && !cancelled() + run: | + while [ -f /var/.ssh-lock ] + do + sleep 60 + done diff --git a/.github/workflows/pipeline-segment-node-nan-test.yml b/.github/workflows/pipeline-segment-node-nan-test.yml index 3d3950a43b0a..8caa15842fc8 100644 --- a/.github/workflows/pipeline-segment-node-nan-test.yml +++ b/.github/workflows/pipeline-segment-node-nan-test.yml @@ -46,7 +46,7 @@ jobs: steps: - name: Load Build Tools run: | - export BUILD_TOOLS_SHA=97f6508e27d08c1e41b61b2cdc1250d998b9ff8c + export BUILD_TOOLS_SHA=ff3e40a9a2ebb735c18b6450ecd5ddaa8bb364a9 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 ${{ inputs.target-arch }} @@ -111,7 +111,7 @@ jobs: steps: - name: Load Build Tools run: | - export BUILD_TOOLS_SHA=97f6508e27d08c1e41b61b2cdc1250d998b9ff8c + export BUILD_TOOLS_SHA=ff3e40a9a2ebb735c18b6450ecd5ddaa8bb364a9 npm i -g @electron/build-tools e auto-update disable e init --root=$(pwd) --out=Default ${{ inputs.gn-build-type }}