build: add several missing test steps for GHA (#42479)

This commit is contained in:
Shelley Vohr 2024-06-13 14:26:20 -05:00 коммит произвёл GitHub
Родитель 30885e5f9f
Коммит 0affad3be6
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: B5690EEEBB952194
6 изменённых файлов: 162 добавлений и 18 удалений

141
.github/workflows/linux-pipeline.yml поставляемый
Просмотреть файл

@ -1,4 +1,4 @@
name: Pipeline Linux name: Linux Pipeline
on: on:
workflow_call: workflow_call:
@ -218,17 +218,17 @@ jobs:
electron/script/strip-binaries.py --file $PWD/out/Default/mksnapshot electron/script/strip-binaries.py --file $PWD/out/Default/mksnapshot
electron/script/strip-binaries.py --file $PWD/out/Default/v8_context_snapshot_generator electron/script/strip-binaries.py --file $PWD/out/Default/v8_context_snapshot_generator
fi fi
e build electron:electron_mksnapshot_zip -j $NUMBER_OF_NINJA_PROCESSES e build electron:electron_mksnapshot_zip -j $NUMBER_OF_NINJA_PROCESSES
(cd out/Default; zip mksnapshot.zip mksnapshot_args gen/v8/embedded.S) (cd out/Default; zip mksnapshot.zip mksnapshot_args gen/v8/embedded.S)
- name: Generate Cross-Arch Snapshot (arm/arm64) - name: Generate Cross-Arch Snapshot (arm/arm64)
if: ${{ matrix.build-arch == 'arm' }} || ${{ matrix.build-arch == 'arm64' }} if: ${{ matrix.build-arch == 'arm' || matrix.build-arch == 'arm64' }}
run: | run: |
cd src cd src
if [ "${{ matrix.build-arch }}" = "arm" ]; then if [ "${{ matrix.build-arch }}" = "arm" ]; then
export MKSNAPSHOT_PATH="clang_x86_v8_arm" MKSNAPSHOT_PATH="clang_x86_v8_arm"
elif [ "${{ matrix.build-arch }}" = "arm64" ]; then elif [ "${{ matrix.build-arch }}" = "arm64" ]; then
export MKSNAPSHOT_PATH="clang_x64_v8_arm64" MKSNAPSHOT_PATH="clang_x64_v8_arm64"
fi fi
cp "out/Default/$MKSNAPSHOT_PATH/mksnapshot" out/Default cp "out/Default/$MKSNAPSHOT_PATH/mksnapshot" out/Default
@ -275,7 +275,7 @@ jobs:
run: | run: |
cd src cd src
autoninja -C out/Default electron:hunspell_dictionaries_zip -j $NUMBER_OF_NINJA_PROCESSES autoninja -C out/Default electron:hunspell_dictionaries_zip -j $NUMBER_OF_NINJA_PROCESSES
- name: Maybe Generate Libcxx - name: Generate Libcxx
if: ${{ inputs.is-release }} if: ${{ inputs.is-release }}
run: | run: |
cd src cd src
@ -375,4 +375,131 @@ jobs:
while [ -f /var/.ssh-lock ] while [ -f /var/.ssh-lock ]
do do
sleep 60 sleep 60
done done
node-tests:
name: Run Node.js Tests
if: ${{ inputs.is-release == false }}
runs-on: aks-linux-medium
needs: build
timeout-minutes: 20
env:
TARGET_ARCH: x64
container:
image: ghcr.io/electron/build:latest
options: --user root
steps:
- name: Load Build Tools
run: |
export BUILD_TOOLS_SHA=ef894bc3cfa99d84a3b731252da0f83f500e4032
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: 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
sed -i '/ninjalog_uploader_wrapper.py/d' ./depot_tools/autoninja
cd depot_tools
git apply --3way ../src/electron/.github/workflows/config/gclient.diff
# 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_linux_${{ env.TARGET_ARCH }}
path: ./generated_artifacts_linux_${{ env.TARGET_ARCH }}
- name: Restore Generated Artifacts
run: ./src/electron/script/actions/restore-artifacts.sh
- name: Unzip Dist
run: |
cd src/out/Default
unzip -:o dist.zip
- name: Setup Linux for Headless Testing
run: sh -e /etc/init.d/xvfb start
- name: Run Node.js Tests
run: |
cd src
node electron/script/node-spec-runner.js --default --jUnitDir=junit
- name: Wait for active SSH sessions
if: always() && !cancelled()
run: |
while [ -f /var/.ssh-lock ]
do
sleep 60
done
nan-tests:
name: Run Nan Tests
if: ${{ inputs.is-release == false }}
runs-on: aks-linux-medium
needs: build
timeout-minutes: 20
env:
TARGET_ARCH: x64
container:
image: ghcr.io/electron/build:latest
options: --user root
steps:
- name: Load Build Tools
run: |
export BUILD_TOOLS_SHA=ef894bc3cfa99d84a3b731252da0f83f500e4032
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: 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
sed -i '/ninjalog_uploader_wrapper.py/d' ./depot_tools/autoninja
cd depot_tools
git apply --3way ../src/electron/.github/workflows/config/gclient.diff
# 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_linux_${{ env.TARGET_ARCH }}
path: ./generated_artifacts_linux_${{ env.TARGET_ARCH }}
- name: Restore Generated Artifacts
run: ./src/electron/script/actions/restore-artifacts.sh
- name: Unzip Dist
run: |
cd src/out/Default
unzip -:o dist.zip
- name: Setup Linux for Headless Testing
run: sh -e /etc/init.d/xvfb start
- name: Run Node.js Tests
run: |
cd src
node electron/script/nan-spec-runner.js
- name: Wait for active SSH sessions
if: always() && !cancelled()
run: |
while [ -f /var/.ssh-lock ]
do
sleep 60
done

21
.github/workflows/macos-pipeline.yml поставляемый
Просмотреть файл

@ -1,4 +1,4 @@
name: Build MacOS name: MacOS Pipeline
on: on:
workflow_call: workflow_call:
@ -510,6 +510,7 @@ jobs:
name: generated_artifacts_mas_${{ env.TARGET_ARCH }} name: generated_artifacts_mas_${{ env.TARGET_ARCH }}
path: ./generated_artifacts_mas_${{ env.TARGET_ARCH }} path: ./generated_artifacts_mas_${{ env.TARGET_ARCH }}
test: test:
name: Run Electron Tests
if: ${{ inputs.is-release == false }} if: ${{ inputs.is-release == false }}
runs-on: macos-14-xlarge runs-on: macos-14-xlarge
needs: build needs: build
@ -568,11 +569,11 @@ jobs:
unzip -:o dist.zip unzip -:o dist.zip
unzip -:o chromedriver.zip unzip -:o chromedriver.zip
unzip -:o mksnapshot.zip unzip -:o mksnapshot.zip
- name: Import & Trust Self-Signed Codesigning Cert on MacOS # - name: Import & Trust Self-Signed Codesigning Cert on MacOS
run: | # run: |
sudo security authorizationdb write com.apple.trust-settings.admin allow # sudo security authorizationdb write com.apple.trust-settings.admin allow
cd src/electron # cd src/electron
./script/codesign/generate-identity.sh # ./script/codesign/generate-identity.sh
- name: Run Electron Tests - name: Run Electron Tests
env: env:
MOCHA_REPORTER: mocha-multi-reporters MOCHA_REPORTER: mocha-multi-reporters
@ -583,3 +584,11 @@ jobs:
run: | run: |
cd src/electron cd src/electron
node script/yarn test --runners=main --trace-uncaught --enable-logging node script/yarn test --runners=main --trace-uncaught --enable-logging
- name: Verify mksnapshot
run: |
cd src
python3 electron/script/verify-mksnapshot.py --source-root "$PWD" --build-dir out/Default
- name: Verify ChromeDriver
run: |
cd src
python3 electron/script/verify-chromedriver.py --source-root "$PWD" --build-dir out/Default

Просмотреть файл

@ -8,6 +8,9 @@ if [ "`uname`" == "Darwin" ]; then
fi fi
elif [ "`uname`" == "Linux" ]; then elif [ "`uname`" == "Linux" ]; then
BUILD_TYPE="linux" BUILD_TYPE="linux"
else
echo "Unsupported platform"
exit 1
fi fi
GENERATED_ARTIFACTS="generated_artifacts_${BUILD_TYPE}_${TARGET_ARCH}" GENERATED_ARTIFACTS="generated_artifacts_${BUILD_TYPE}_${TARGET_ARCH}"

Просмотреть файл

@ -8,6 +8,9 @@ if [ "`uname`" == "Darwin" ]; then
fi fi
elif [ "`uname`" == "Linux" ]; then elif [ "`uname`" == "Linux" ]; then
BUILD_TYPE="linux" BUILD_TYPE="linux"
else
echo "Unsupported platform"
exit 1
fi fi
GENERATED_ARTIFACTS="generated_artifacts_${BUILD_TYPE}_${TARGET_ARCH}" GENERATED_ARTIFACTS="generated_artifacts_${BUILD_TYPE}_${TARGET_ARCH}"

Просмотреть файл

@ -90,16 +90,16 @@ async function main () {
env.LDFLAGS = ldflags; env.LDFLAGS = ldflags;
} }
const { status: buildStatus } = cp.spawnSync(NPX_CMD, ['node-gyp', 'rebuild', '--verbose', '--directory', 'test', '-j', 'max'], { const { status: buildStatus, signal } = cp.spawnSync(NPX_CMD, ['node-gyp', 'rebuild', '--verbose', '--directory', 'test', '-j', 'max'], {
env, env,
cwd: NAN_DIR, cwd: NAN_DIR,
stdio: 'inherit', stdio: 'inherit',
shell: process.platform === 'win32' shell: process.platform === 'win32'
}); });
if (buildStatus !== 0) { if (buildStatus !== 0 || signal != null) {
console.error('Failed to build nan test modules'); console.error('Failed to build nan test modules');
return process.exit(buildStatus); return process.exit(buildStatus !== 0 ? buildStatus : signal);
} }
const { status: installStatus } = cp.spawnSync(NPX_CMD, [`yarn@${YARN_VERSION}`, 'install'], { const { status: installStatus } = cp.spawnSync(NPX_CMD, [`yarn@${YARN_VERSION}`, 'install'], {
@ -108,9 +108,10 @@ async function main () {
stdio: 'inherit', stdio: 'inherit',
shell: process.platform === 'win32' shell: process.platform === 'win32'
}); });
if (installStatus !== 0) {
if (installStatus !== 0 || signal != null) {
console.error('Failed to install nan node_modules'); console.error('Failed to install nan node_modules');
return process.exit(installStatus); return process.exit(installStatus !== 0 ? installStatus : signal);
} }
const onlyTests = args.only && args.only.split(','); const onlyTests = args.only && args.only.split(',');

Просмотреть файл

@ -4,6 +4,7 @@
"parallel/test-bootstrap-modules", "parallel/test-bootstrap-modules",
"parallel/test-child-process-fork-exec-path", "parallel/test-child-process-fork-exec-path",
"parallel/test-code-cache", "parallel/test-code-cache",
"parallel/test-cluster-primary-error",
"parallel/test-crypto-aes-wrap", "parallel/test-crypto-aes-wrap",
"parallel/test-crypto-authenticated-stream", "parallel/test-crypto-authenticated-stream",
"parallel/test-crypto-des3-wrap", "parallel/test-crypto-des3-wrap",