From e78d84165a39c3fc22608f8b900a131307afbf37 Mon Sep 17 00:00:00 2001 From: John Kleinschmidt Date: Tue, 18 Sep 2018 09:48:01 -0400 Subject: [PATCH 01/11] Add chromedriver to build Make sure certain paths/files don't make it into the dist zip Don't build the content shell test_runner Make sure libffmpeg.dylib gets put in the right place Run verify-ffmpeg on Mac builds Add ffmpeg build to VSTS --- BUILD.gn | 13 +++++-------- brightray/BUILD.gn | 2 +- build/zip.py | 23 +++++++++++++++++++++++ vsts.yml | 7 +++++++ 4 files changed, 36 insertions(+), 9 deletions(-) diff --git a/BUILD.gn b/BUILD.gn index ada0cfbc9ef9..a102e522d81a 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -222,6 +222,7 @@ static_library("electron_lib") { "//base", "//base:i18n", "//chrome/common:constants", + "//chrome/test/chromedriver", "//components/network_session_configurator/common", "//components/prefs", "//components/printing/common", @@ -497,14 +498,10 @@ if (is_mac) { ] } - if (!is_component_build) { + if (is_component_ffmpeg) { bundle_data("electron_framework_libraries") { - sources = [] - public_deps = [] - if (is_component_ffmpeg) { - sources += [ "$root_out_dir/libffmpeg.dylib" ] - public_deps += [ "//third_party/ffmpeg:ffmpeg" ] - } + sources = [ "$root_out_dir/libffmpeg.dylib" ] + public_deps = [ "//third_party/ffmpeg:ffmpeg" ] outputs = [ "{{bundle_contents_dir}}/Libraries/{{source_file_part}}", ] @@ -531,7 +528,7 @@ if (is_mac) { mac_framework_bundle("electron_framework") { output_name = electron_framework_name framework_version = electron_framework_version - framework_contents = [ "Resources" ] + framework_contents = [ "Resources", "Libraries" ] public_deps = [ ":electron_lib", ] diff --git a/brightray/BUILD.gn b/brightray/BUILD.gn index c83a61231e88..2441ba805262 100644 --- a/brightray/BUILD.gn +++ b/brightray/BUILD.gn @@ -7,7 +7,7 @@ static_library("brightray") { "//components/network_session_configurator/common", "//components/prefs", "//content/public/browser", - "//content/shell:resources", + "//content/shell:copy_shell_resources", "//net:extras", "//net:net_with_v8", "//skia", diff --git a/build/zip.py b/build/zip.py index 150656e2c2be..80bf696db0bc 100644 --- a/build/zip.py +++ b/build/zip.py @@ -10,6 +10,27 @@ LINUX_BINARIES_TO_STRIP = [ 'libnode.so' ] +EXTENSIONS_TO_SKIP = [ + '.pdb' +] + +PATHS_TO_SKIP = [ + 'angledata', + 'swiftshader', + 'resources/inspector' +] + +def skip_path(dep): + should_skip = False + for path in PATHS_TO_SKIP: + if dep.startswith(path): + print 'Skipping: '+dep + should_skip = True + for extension in EXTENSIONS_TO_SKIP: + if dep.endswith(extension): + print 'Skipping: '+dep + should_skip = True + def strip_binaries(target_cpu, dep): for binary in LINUX_BINARIES_TO_STRIP: if dep.endswith(binary): @@ -48,6 +69,8 @@ def main(argv): for dep in dist_files: if target_os == 'linux': strip_binaries(target_cpu, dep) + if skip_path(dep): + continue if os.path.isdir(dep): for root, dirs, files in os.walk(dep): for file in files: diff --git a/vsts.yml b/vsts.yml index 6c4e7fdf00dc..6f16bf2b9b01 100644 --- a/vsts.yml +++ b/vsts.yml @@ -51,6 +51,13 @@ jobs: ninja -C out/Default electron:electron_app displayName: Ninja build app + - bash: | + cd src + gn gen out/ffmpeg --args='import("//electron/build/args/ffmpeg.gn") cc_wrapper="'"$SCCACHE_PATH"'"'" $GN_EXTRA_ARGS" + ninja -C out/ffmpeg third_party/ffmpeg + displayName: Non proprietary ffmpeg build + condition: and(succeeded(), eq(variables['RUN_TESTS'], '1')) + - bash: | "$SCCACHE_BINARY" --stop-server displayName: Check sccache stats after build From 3154275d2f855c9a6a07ac32f78ef86cb08de7b6 Mon Sep 17 00:00:00 2001 From: John Kleinschmidt Date: Wed, 19 Sep 2018 14:55:48 -0400 Subject: [PATCH 02/11] Add verify ffmpeg back to CircleCI builds --- .circleci/config.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 2310ae1b3a1e..f2565a8d2525 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -399,8 +399,7 @@ steps-build-mac: &steps-build-mac # It would be better to verify ffmpeg as a part of a test job, # but it requires `gn` to run, and it's complicated # to store all gn's dependencies and configs. - # FIXME(alexeykuzmin): Enable the next step back. - # - *step-verify-ffmpeg + - <<: *step-verify-ffmpeg # Node.js headers for tests - *step-nodejs-headers-build From e367aff8ac070b86a9e5b27772e4cc0b1ebc40d9 Mon Sep 17 00:00:00 2001 From: John Kleinschmidt Date: Wed, 19 Sep 2018 18:36:07 -0400 Subject: [PATCH 03/11] Cleaned up/fixed skip_path with @nornagon's suggestion. Co-Authored-By: Jeremy Apthorp --- build/zip.py | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/build/zip.py b/build/zip.py index 80bf696db0bc..4399824ab67c 100644 --- a/build/zip.py +++ b/build/zip.py @@ -21,15 +21,12 @@ PATHS_TO_SKIP = [ ] def skip_path(dep): - should_skip = False - for path in PATHS_TO_SKIP: - if dep.startswith(path): - print 'Skipping: '+dep - should_skip = True - for extension in EXTENSIONS_TO_SKIP: - if dep.endswith(extension): - print 'Skipping: '+dep - should_skip = True + should_skip = ( + any(dep.startswith(path) for path in PATHS_TO_SKIP) or + any(dep.endswith(ext) for ext in EXTENSIONS_TO_SKIP)) + if should_skip: + print("Skipping {}".format(dep)) + return should_skip def strip_binaries(target_cpu, dep): for binary in LINUX_BINARIES_TO_STRIP: From 62172dee6c741cc8c97a1e9f265f9eaf4867f1f0 Mon Sep 17 00:00:00 2001 From: John Kleinschmidt Date: Wed, 19 Sep 2018 18:42:42 -0400 Subject: [PATCH 04/11] Add electron_chromedriver_zip target --- .circleci/config.yml | 20 ++++++++++++++++++++ BUILD.gn | 22 ++++++++++++++++++---- appveyor.yml | 2 ++ vsts.yml | 13 ++++++++++++- 4 files changed, 52 insertions(+), 5 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index f2565a8d2525..960e705b101c 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -140,6 +140,18 @@ step-electron-dist-store: &step-electron-dist-store path: src/out/Default/dist.zip destination: dist.zip +step-electron-chromedriver-build: &step-electron-chromedriver-build + run: + name: Build chromedriver.zip + command: | + cd src + ninja -C out/Default electron:electron_chromedriver_zip + +step-electron-chromedriver-store: &step-electron-chromedriver-store + store_artifacts: + path: src/out/Default/chromedriver.zip + destination: chromedriver.zip + step-nodejs-headers-build: &step-nodejs-headers-build run: name: Build Node.js headers @@ -272,6 +284,10 @@ steps-electron-build-for-tests: &steps-electron-build-for-tests - *step-electron-dist-build - *step-electron-dist-store + # chromedriver + - *step-electron-chromedriver-build + - *step-electron-chromedriver-store + # Node.js headers - *step-nodejs-headers-build @@ -389,6 +405,10 @@ steps-build-mac: &steps-build-mac - *step-electron-dist-build - *step-electron-dist-store + # chromedriver + - *step-electron-chromedriver-build + - *step-electron-chromedriver-store + # ffmpeg - *step-ffmpeg-gn-gen - *step-ffmpeg-build diff --git a/BUILD.gn b/BUILD.gn index a102e522d81a..199b19cfb559 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -222,7 +222,6 @@ static_library("electron_lib") { "//base", "//base:i18n", "//chrome/common:constants", - "//chrome/test/chromedriver", "//components/network_session_configurator/common", "//components/prefs", "//components/printing/common", @@ -498,10 +497,14 @@ if (is_mac) { ] } - if (is_component_ffmpeg) { + if (!is_component_build) { bundle_data("electron_framework_libraries") { - sources = [ "$root_out_dir/libffmpeg.dylib" ] - public_deps = [ "//third_party/ffmpeg:ffmpeg" ] + sources = [] + public_deps = [] + if (is_component_ffmpeg) { + sources += [ "$root_out_dir/libffmpeg.dylib" ] + public_deps += [ "//third_party/ffmpeg:ffmpeg" ] + } outputs = [ "{{bundle_contents_dir}}/Libraries/{{source_file_part}}", ] @@ -903,6 +906,7 @@ dist_zip("electron_dist_zip") { ] } + dist_zip("electron_ffmpeg_zip") { data_deps = [ "//third_party/ffmpeg", @@ -912,6 +916,16 @@ dist_zip("electron_ffmpeg_zip") { ] } +dist_zip("electron_chromedriver_zip") { + data_deps = [ + "//chrome/test/chromedriver", + ":licenses", + ] + outputs = [ + "$root_build_dir/chromedriver.zip", + ] +} + group("electron") { deps = [ ":electron_app", diff --git a/appveyor.yml b/appveyor.yml index 2fa527201ea0..7488af3a69bf 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -29,7 +29,9 @@ build_script: - gn gen out/ffmpeg "--args=import(\"//electron/build/args/ffmpeg.gn\") %GN_EXTRA_ARGS%" - ninja -C out/ffmpeg third_party/ffmpeg - ninja -C out/Default electron:electron_dist_zip + - ninja -C out/Default electron:electron_chromedriver_zip - appveyor PushArtifact out/Default/dist.zip + - appveyor PushArtifact out/Default/chromedriver.zip test_script: - if "%GN_CONFIG%"=="testing" ( echo Verifying non proprietary ffmpeg & python electron\script\verify-ffmpeg.py --build-dir out\Default --source-root %cd% --ffmpeg-path out\ffmpeg ) - ps: >- diff --git a/vsts.yml b/vsts.yml index 6f16bf2b9b01..5d6b5ccf0581 100644 --- a/vsts.yml +++ b/vsts.yml @@ -78,6 +78,11 @@ jobs: ninja -C out/Default electron:electron_dist_zip displayName: Build dist zip + - bash: | + cd src + ninja -C out/Default electron:electron_chromedriver_zip + displayName: Build chromedriver and zip + - task: PublishTestResults@2 displayName: Publish Test Results inputs: @@ -89,7 +94,13 @@ jobs: displayName: Publish Build Artifacts inputs: PathtoPublish: '$(System.DefaultWorkingDirectory)/src/out/Default/dist.zip' - ArtifactName: dist.zip + ArtifactName: dist + + - task: PublishBuildArtifacts@1 + displayName: Publish Build Artifacts + inputs: + PathtoPublish: '$(System.DefaultWorkingDirectory)/src/out/Default/chromedriver.zip' + ArtifactName: dist - bash: | export BUILD_URL="${SYSTEM_TEAMFOUNDATIONCOLLECTIONURI}${SYSTEM_TEAMPROJECT}/_build/results?buildId=${BUILD_BUILDID}" From 96ec3e9162985d16d08c4b77407ccbe5f08ddf86 Mon Sep 17 00:00:00 2001 From: John Kleinschmidt Date: Thu, 20 Sep 2018 11:02:47 -0400 Subject: [PATCH 05/11] Split build and test into separate jobs Also clean from review --- .circleci/config.yml | 2 +- BUILD.gn | 1 - build/zip.py | 10 ++-- vsts.yml | 130 +++++++++++++++++++++++++++++++++++-------- 4 files changed, 111 insertions(+), 32 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 960e705b101c..77965c8bee27 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -419,7 +419,7 @@ steps-build-mac: &steps-build-mac # It would be better to verify ffmpeg as a part of a test job, # but it requires `gn` to run, and it's complicated # to store all gn's dependencies and configs. - - <<: *step-verify-ffmpeg + - *step-verify-ffmpeg # Node.js headers for tests - *step-nodejs-headers-build diff --git a/BUILD.gn b/BUILD.gn index 199b19cfb559..ff4655344cce 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -906,7 +906,6 @@ dist_zip("electron_dist_zip") { ] } - dist_zip("electron_ffmpeg_zip") { data_deps = [ "//third_party/ffmpeg", diff --git a/build/zip.py b/build/zip.py index 4399824ab67c..69fe91e92680 100644 --- a/build/zip.py +++ b/build/zip.py @@ -21,12 +21,10 @@ PATHS_TO_SKIP = [ ] def skip_path(dep): - should_skip = ( - any(dep.startswith(path) for path in PATHS_TO_SKIP) or - any(dep.endswith(ext) for ext in EXTENSIONS_TO_SKIP)) - if should_skip: - print("Skipping {}".format(dep)) - return should_skip + should_skip = ( + any(dep.startswith(path) for path in PATHS_TO_SKIP) or + any(dep.endswith(ext) for ext in EXTENSIONS_TO_SKIP)) + return should_skip def strip_binaries(target_cpu, dep): for binary in LINUX_BINARIES_TO_STRIP: diff --git a/vsts.yml b/vsts.yml index 5d6b5ccf0581..8fadcd303cad 100644 --- a/vsts.yml +++ b/vsts.yml @@ -1,6 +1,7 @@ jobs: - job: Build_Electron_via_GN - timeoutInMinutes: 180 + displayName: Build Electron via GN + timeoutInMinutes: 120 steps: - bash: | export PATH="$PATH:/Users/electron/depot_tools" @@ -51,6 +52,12 @@ jobs: ninja -C out/Default electron:electron_app displayName: Ninja build app + - bash: | + cd src + ninja -C out/Default third_party/electron_node:headers + displayName: Build Node.js headers for testing + condition: and(succeeded(), eq(variables['RUN_TESTS'], '1')) + - bash: | cd src gn gen out/ffmpeg --args='import("//electron/build/args/ffmpeg.gn") cc_wrapper="'"$SCCACHE_PATH"'"'" $GN_EXTRA_ARGS" @@ -63,16 +70,6 @@ jobs: displayName: Check sccache stats after build condition: and(succeeded(), ne(variables['ELECTRON_RELEASE'], '1')) - - bash: | - cd src - # Make sure there aren't any Electron processes left running from previous tests - killall Electron - ninja -C out/Default third_party/electron_node:headers - export ELECTRON_OUT_DIR=Default - (cd electron && npm run test -- --ci --enable-logging) - displayName: Test - condition: and(succeeded(), eq(variables['RUN_TESTS'], '1')) - - bash: | cd src ninja -C out/Default electron:electron_dist_zip @@ -83,24 +80,109 @@ jobs: ninja -C out/Default electron:electron_chromedriver_zip displayName: Build chromedriver and zip + - task: PublishBuildArtifacts@1 + displayName: Publish Build Artifacts (application zip) + inputs: + PathtoPublish: '$(System.DefaultWorkingDirectory)/src/out/Default/dist.zip' + ArtifactName: Default + + - task: PublishBuildArtifacts@1 + displayName: Publish Build Artifacts (chromedriver.zip) + inputs: + PathtoPublish: '$(System.DefaultWorkingDirectory)/src/out/Default/chromedriver.zip' + ArtifactName: Default + + - task: PublishBuildArtifacts@1 + displayName: Publish gn args for ffmpeg testing + inputs: + PathtoPublish: '$(System.DefaultWorkingDirectory)/src/out/Default/args.gn' + ArtifactName: Default + + - task: PublishBuildArtifacts@1 + displayName: Publish build.ninja for ffmpeg testing + inputs: + PathtoPublish: '$(System.DefaultWorkingDirectory)/src/out/Default/build.ninja' + ArtifactName: Default + condition: and(succeeded(), eq(variables['RUN_TESTS'], '1')) + + - task: PublishBuildArtifacts@1 + displayName: Publish libffmpeg.dylib for testing + inputs: + PathtoPublish: '$(System.DefaultWorkingDirectory)/src/out/ffmpeg/libffmpeg.dylib' + ArtifactName: ffmpeg + condition: and(succeeded(), eq(variables['RUN_TESTS'], '1')) + + - task: PublishBuildArtifacts@1 + displayName: Publish Node.js headers for testing + inputs: + PathtoPublish: '$(System.DefaultWorkingDirectory)/src/out/Default/gen/node_headers' + ArtifactName: node_headers + condition: and(succeeded(), eq(variables['RUN_TESTS'], '1')) + +- job: Test_Electron_Build + displayName: Test + dependsOn: Build_Electron_via_GN + condition: and(succeeded(), eq(variables['RUN_TESTS'], '1')) + timeoutInMinutes: 30 + steps: + - bash: | + set -ex + mkdir -p src/out/Default/gen + mkdir -p src/out/ffmpeg + git clone https://github.com/electron/electron src/electron + (cd src/electron; git fetch origin +"${BUILD_SOURCEBRANCH}"; git checkout "${BUILD_SOURCEVERSION}") + displayName: Checkout Electron + + - task: DownloadBuildArtifacts@0 + displayName: 'Download files needed for testing' + inputs: + artifactName: Default + downloadPath: '$(System.DefaultWorkingDirectory)/src/out' + + - task: DownloadBuildArtifacts@0 + displayName: 'Download ffmpeg.dylib for testing' + inputs: + artifactName: ffmpeg + downloadPath: '$(System.DefaultWorkingDirectory)/src/out/ffmpeg' + + - task: DownloadBuildArtifacts@0 + displayName: 'Download Node.js headers' + inputs: + artifactName: node_headers + downloadPath: '$(System.DefaultWorkingDirectory)/src/out/Default/gen' + + - bash: | + cd src/out/Default + unzip dist.zip + displayName: Unzip Electron app + + - bash: | + set +e + killall Electron + displayName: Make sure Electron isn't running from previous tests + + - bash: | + cd src + python electron/script/verify-ffmpeg.py --source-root "$PWD" --build-dir out/Default --ffmpeg-path out/ffmpeg + displayName: Verify non proprietary ffmpeg + condition: and(succeeded(), eq(variables['RUN_TESTS'], '1')) + timeoutInMinutes: 5 + + - bash: | + cd src + ninja -C out/Default third_party/electron_node:headers + export ELECTRON_OUT_DIR=Default + (cd electron && npm run test -- --ci --enable-logging) + displayName: Run Electron test suite + condition: and(succeeded(), eq(variables['RUN_TESTS'], '1')) + timeoutInMinutes: 10 + - task: PublishTestResults@2 displayName: Publish Test Results inputs: testResultsFiles: '*.xml' searchFolder: '$(System.DefaultWorkingDirectory)/src/junit/' - condition: and(always(), eq(variables['MOCHA_FILE'], 'junit/test-results.xml'), eq(variables['RUN_TESTS'], '1')) - - - task: PublishBuildArtifacts@1 - displayName: Publish Build Artifacts - inputs: - PathtoPublish: '$(System.DefaultWorkingDirectory)/src/out/Default/dist.zip' - ArtifactName: dist - - - task: PublishBuildArtifacts@1 - displayName: Publish Build Artifacts - inputs: - PathtoPublish: '$(System.DefaultWorkingDirectory)/src/out/Default/chromedriver.zip' - ArtifactName: dist + condition: and(always(), eq(variables['MOCHA_FILE'], 'junit/test-results.xml')) - bash: | export BUILD_URL="${SYSTEM_TEAMFOUNDATIONCOLLECTIONURI}${SYSTEM_TEAMPROJECT}/_build/results?buildId=${BUILD_BUILDID}" From bfaf3f458f956c09e8a06147090399c22e1795e8 Mon Sep 17 00:00:00 2001 From: John Kleinschmidt Date: Fri, 21 Sep 2018 10:39:29 -0400 Subject: [PATCH 06/11] Make killall Electron more friendly --- vsts.yml | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/vsts.yml b/vsts.yml index 8fadcd303cad..59946e793c6d 100644 --- a/vsts.yml +++ b/vsts.yml @@ -131,6 +131,9 @@ jobs: mkdir -p src/out/ffmpeg git clone https://github.com/electron/electron src/electron (cd src/electron; git fetch origin +"${BUILD_SOURCEBRANCH}"; git checkout "${BUILD_SOURCEVERSION}") + cd src + export CHROMIUM_BUILDTOOLS_PATH=`pwd`/buildtools + echo "##vso[task.setvariable variable=CHROMIUM_BUILDTOOLS_PATH]`pwd`/buildtools" displayName: Checkout Electron - task: DownloadBuildArtifacts@0 @@ -143,7 +146,7 @@ jobs: displayName: 'Download ffmpeg.dylib for testing' inputs: artifactName: ffmpeg - downloadPath: '$(System.DefaultWorkingDirectory)/src/out/ffmpeg' + downloadPath: '$(System.DefaultWorkingDirectory)/src/out' - task: DownloadBuildArtifacts@0 displayName: 'Download Node.js headers' @@ -157,8 +160,9 @@ jobs: displayName: Unzip Electron app - bash: | - set +e - killall Electron + if pgrep Electron; then + killall Electron + fi displayName: Make sure Electron isn't running from previous tests - bash: | From e85ea5dcffcd4848ab8c1c6699448ba13046bcbd Mon Sep 17 00:00:00 2001 From: John Kleinschmidt Date: Fri, 21 Sep 2018 14:22:32 -0400 Subject: [PATCH 07/11] Add buildtools to artifacts needed for testing Also remove not needed change --- vsts.yml | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/vsts.yml b/vsts.yml index 59946e793c6d..eb043219ced4 100644 --- a/vsts.yml +++ b/vsts.yml @@ -106,12 +106,19 @@ jobs: condition: and(succeeded(), eq(variables['RUN_TESTS'], '1')) - task: PublishBuildArtifacts@1 - displayName: Publish libffmpeg.dylib for testing + displayName: Publish libffmpeg.dylib for ffmpeg testing inputs: PathtoPublish: '$(System.DefaultWorkingDirectory)/src/out/ffmpeg/libffmpeg.dylib' ArtifactName: ffmpeg condition: and(succeeded(), eq(variables['RUN_TESTS'], '1')) + - task: PublishBuildArtifacts@1 + displayName: Publish buildtools for ffmpeg testing + inputs: + PathtoPublish: '$(System.DefaultWorkingDirectory)/src/buildtools' + ArtifactName: buildtools + condition: and(succeeded(), eq(variables['RUN_TESTS'], '1')) + - task: PublishBuildArtifacts@1 displayName: Publish Node.js headers for testing inputs: @@ -143,11 +150,17 @@ jobs: downloadPath: '$(System.DefaultWorkingDirectory)/src/out' - task: DownloadBuildArtifacts@0 - displayName: 'Download ffmpeg.dylib for testing' + displayName: 'Download ffmpeg.dylib for testing ffmpeg' inputs: artifactName: ffmpeg downloadPath: '$(System.DefaultWorkingDirectory)/src/out' + - task: DownloadBuildArtifacts@0 + displayName: 'Download buildtools for testing ffmpeg' + inputs: + artifactName: buildtools + downloadPath: '$(System.DefaultWorkingDirectory)/src' + - task: DownloadBuildArtifacts@0 displayName: 'Download Node.js headers' inputs: From 334fea3d7bf48635a2f0252619683cc4f3c08138 Mon Sep 17 00:00:00 2001 From: John Kleinschmidt Date: Fri, 21 Sep 2018 15:37:52 -0400 Subject: [PATCH 08/11] Remove broken symlinks from buildtools before saving it to artifacts --- vsts.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/vsts.yml b/vsts.yml index eb043219ced4..07e0025ec73d 100644 --- a/vsts.yml +++ b/vsts.yml @@ -112,6 +112,11 @@ jobs: ArtifactName: ffmpeg condition: and(succeeded(), eq(variables['RUN_TESTS'], '1')) + - bash: | + cd src + find -L buildtools -type l -exec rm -- {} + + displayName: Remove broken symlinks from buildtools + - task: PublishBuildArtifacts@1 displayName: Publish buildtools for ffmpeg testing inputs: From 806e23685027448d2b1f5193c0999429e44ced58 Mon Sep 17 00:00:00 2001 From: John Kleinschmidt Date: Fri, 21 Sep 2018 16:54:24 -0400 Subject: [PATCH 09/11] Revert to one job instead of two Splitting into build and test jobs is slower and we can set individual timeouts on the test steps. --- vsts.yml | 129 ++++++++++--------------------------------------------- 1 file changed, 22 insertions(+), 107 deletions(-) diff --git a/vsts.yml b/vsts.yml index 07e0025ec73d..1a9a21403dc9 100644 --- a/vsts.yml +++ b/vsts.yml @@ -70,113 +70,6 @@ jobs: displayName: Check sccache stats after build condition: and(succeeded(), ne(variables['ELECTRON_RELEASE'], '1')) - - bash: | - cd src - ninja -C out/Default electron:electron_dist_zip - displayName: Build dist zip - - - bash: | - cd src - ninja -C out/Default electron:electron_chromedriver_zip - displayName: Build chromedriver and zip - - - task: PublishBuildArtifacts@1 - displayName: Publish Build Artifacts (application zip) - inputs: - PathtoPublish: '$(System.DefaultWorkingDirectory)/src/out/Default/dist.zip' - ArtifactName: Default - - - task: PublishBuildArtifacts@1 - displayName: Publish Build Artifacts (chromedriver.zip) - inputs: - PathtoPublish: '$(System.DefaultWorkingDirectory)/src/out/Default/chromedriver.zip' - ArtifactName: Default - - - task: PublishBuildArtifacts@1 - displayName: Publish gn args for ffmpeg testing - inputs: - PathtoPublish: '$(System.DefaultWorkingDirectory)/src/out/Default/args.gn' - ArtifactName: Default - - - task: PublishBuildArtifacts@1 - displayName: Publish build.ninja for ffmpeg testing - inputs: - PathtoPublish: '$(System.DefaultWorkingDirectory)/src/out/Default/build.ninja' - ArtifactName: Default - condition: and(succeeded(), eq(variables['RUN_TESTS'], '1')) - - - task: PublishBuildArtifacts@1 - displayName: Publish libffmpeg.dylib for ffmpeg testing - inputs: - PathtoPublish: '$(System.DefaultWorkingDirectory)/src/out/ffmpeg/libffmpeg.dylib' - ArtifactName: ffmpeg - condition: and(succeeded(), eq(variables['RUN_TESTS'], '1')) - - - bash: | - cd src - find -L buildtools -type l -exec rm -- {} + - displayName: Remove broken symlinks from buildtools - - - task: PublishBuildArtifacts@1 - displayName: Publish buildtools for ffmpeg testing - inputs: - PathtoPublish: '$(System.DefaultWorkingDirectory)/src/buildtools' - ArtifactName: buildtools - condition: and(succeeded(), eq(variables['RUN_TESTS'], '1')) - - - task: PublishBuildArtifacts@1 - displayName: Publish Node.js headers for testing - inputs: - PathtoPublish: '$(System.DefaultWorkingDirectory)/src/out/Default/gen/node_headers' - ArtifactName: node_headers - condition: and(succeeded(), eq(variables['RUN_TESTS'], '1')) - -- job: Test_Electron_Build - displayName: Test - dependsOn: Build_Electron_via_GN - condition: and(succeeded(), eq(variables['RUN_TESTS'], '1')) - timeoutInMinutes: 30 - steps: - - bash: | - set -ex - mkdir -p src/out/Default/gen - mkdir -p src/out/ffmpeg - git clone https://github.com/electron/electron src/electron - (cd src/electron; git fetch origin +"${BUILD_SOURCEBRANCH}"; git checkout "${BUILD_SOURCEVERSION}") - cd src - export CHROMIUM_BUILDTOOLS_PATH=`pwd`/buildtools - echo "##vso[task.setvariable variable=CHROMIUM_BUILDTOOLS_PATH]`pwd`/buildtools" - displayName: Checkout Electron - - - task: DownloadBuildArtifacts@0 - displayName: 'Download files needed for testing' - inputs: - artifactName: Default - downloadPath: '$(System.DefaultWorkingDirectory)/src/out' - - - task: DownloadBuildArtifacts@0 - displayName: 'Download ffmpeg.dylib for testing ffmpeg' - inputs: - artifactName: ffmpeg - downloadPath: '$(System.DefaultWorkingDirectory)/src/out' - - - task: DownloadBuildArtifacts@0 - displayName: 'Download buildtools for testing ffmpeg' - inputs: - artifactName: buildtools - downloadPath: '$(System.DefaultWorkingDirectory)/src' - - - task: DownloadBuildArtifacts@0 - displayName: 'Download Node.js headers' - inputs: - artifactName: node_headers - downloadPath: '$(System.DefaultWorkingDirectory)/src/out/Default/gen' - - - bash: | - cd src/out/Default - unzip dist.zip - displayName: Unzip Electron app - - bash: | if pgrep Electron; then killall Electron @@ -199,6 +92,16 @@ jobs: condition: and(succeeded(), eq(variables['RUN_TESTS'], '1')) timeoutInMinutes: 10 + - bash: | + cd src + ninja -C out/Default electron:electron_dist_zip + displayName: Build dist zip + + - bash: | + cd src + ninja -C out/Default electron:electron_chromedriver_zip + displayName: Build chromedriver and zip + - task: PublishTestResults@2 displayName: Publish Test Results inputs: @@ -206,6 +109,18 @@ jobs: searchFolder: '$(System.DefaultWorkingDirectory)/src/junit/' condition: and(always(), eq(variables['MOCHA_FILE'], 'junit/test-results.xml')) + - task: PublishBuildArtifacts@1 + displayName: Publish Build Artifacts (application zip) + inputs: + PathtoPublish: '$(System.DefaultWorkingDirectory)/src/out/Default/dist.zip' + ArtifactName: Default + + - task: PublishBuildArtifacts@1 + displayName: Publish Build Artifacts (chromedriver.zip) + inputs: + PathtoPublish: '$(System.DefaultWorkingDirectory)/src/out/Default/chromedriver.zip' + ArtifactName: Default + - bash: | export BUILD_URL="${SYSTEM_TEAMFOUNDATIONCOLLECTIONURI}${SYSTEM_TEAMPROJECT}/_build/results?buildId=${BUILD_BUILDID}" export MESSAGE="Build failed for *<$BUILD_URL|$BUILD_DEFINITIONNAME>* nightly build." From a82c4923bd4d3e7d8f163653cdffa0d8be13eb90 Mon Sep 17 00:00:00 2001 From: John Kleinschmidt Date: Fri, 21 Sep 2018 16:58:33 -0400 Subject: [PATCH 10/11] Make sure resources gets skipped --- build/zip.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/build/zip.py b/build/zip.py index 69fe91e92680..e3b5a2fd5c83 100644 --- a/build/zip.py +++ b/build/zip.py @@ -15,15 +15,17 @@ EXTENSIONS_TO_SKIP = [ ] PATHS_TO_SKIP = [ - 'angledata', - 'swiftshader', - 'resources/inspector' + 'angledata', #Skipping because it is an output of //ui/gl that we don't need + 'swiftshader', #Skipping because it is an output of //ui/gl that we don't need + 'resources/inspector' ] def skip_path(dep): should_skip = ( any(dep.startswith(path) for path in PATHS_TO_SKIP) or any(dep.endswith(ext) for ext in EXTENSIONS_TO_SKIP)) + if should_skip: + print("Skipping {}".format(dep)) return should_skip def strip_binaries(target_cpu, dep): @@ -69,7 +71,10 @@ def main(argv): if os.path.isdir(dep): for root, dirs, files in os.walk(dep): for file in files: - z.write(os.path.join(root, file)) + file_path = os.path.join(root, file) + if skip_path(file_path): + continue + z.write(file_path) else: z.write(dep) From 70fb89e2012948ac83fdf2fce4a19af1d748d760 Mon Sep 17 00:00:00 2001 From: John Kleinschmidt Date: Fri, 21 Sep 2018 21:29:55 -0400 Subject: [PATCH 11/11] No longer need to filter out resources dir Also remove not needed change --- BUILD.gn | 3 ++- build/zip.py | 6 +----- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/BUILD.gn b/BUILD.gn index ff4655344cce..10e79c54fa00 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -705,7 +705,8 @@ if (is_mac) { } if (!is_mac) { - data += [ "$root_out_dir/resources" ] + data += [ "$root_out_dir/resources/default_app.asar" ] + data += [ "$root_out_dir/resources/electron.asar" ] } public_deps = [ diff --git a/build/zip.py b/build/zip.py index e3b5a2fd5c83..84df610d7cd5 100644 --- a/build/zip.py +++ b/build/zip.py @@ -17,7 +17,6 @@ EXTENSIONS_TO_SKIP = [ PATHS_TO_SKIP = [ 'angledata', #Skipping because it is an output of //ui/gl that we don't need 'swiftshader', #Skipping because it is an output of //ui/gl that we don't need - 'resources/inspector' ] def skip_path(dep): @@ -71,10 +70,7 @@ def main(argv): if os.path.isdir(dep): for root, dirs, files in os.walk(dep): for file in files: - file_path = os.path.join(root, file) - if skip_path(file_path): - continue - z.write(file_path) + z.write(os.path.join(root, file)) else: z.write(dep)