From 1acd840c38115a8861cbb4f60303246986eb5184 Mon Sep 17 00:00:00 2001 From: Alexey Kuzmin Date: Thu, 4 Oct 2018 17:50:46 +0200 Subject: [PATCH] ci: rearrange builds on CircleCI (#14969) * ci: do not build ffmpeg for every PR on CircleCI * ci: build and run unittests in a separate workflow on CircleCI * ci: build chromedriver in a separate job --- .circleci/config.yml | 170 +++++++++++++++++++++++++------------------ 1 file changed, 101 insertions(+), 69 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index ba3c1cd3a8ae..ea4dbbb4d28e 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -135,9 +135,9 @@ step-install-nodejs-on-mac: &step-install-nodejs-on-mac brew install node@10 fi -step-electron-gn-gen: &step-electron-gn-gen +step-gn-gen-default: &step-gn-gen-default run: - name: Electron GN gen + name: Default GN gen command: | cd src gn gen out/Default --args='import("'$GN_CONFIG'") cc_wrapper="'"$SCCACHE_PATH"'"'" $GN_EXTRA_ARGS" @@ -166,7 +166,9 @@ step-electron-chromedriver-build: &step-electron-chromedriver-build name: Build chromedriver.zip command: | cd src - ninja -C out/Default electron:electron_chromedriver_zip + # NOTE(alexeykuzmin): -j3 because chromedriver is currently built + # on a smaller size machine and ninja mis-detects the number of CPUs available. + ninja -C out/Default electron:electron_chromedriver_zip -j3 step-electron-chromedriver-store: &step-electron-chromedriver-store store_artifacts: @@ -355,11 +357,9 @@ steps-electron-build: &steps-electron-build at: . - *step-depot-tools-add-to-path - *step-setup-env-for-build + - *step-gn-gen-default - # Electron app - - *step-electron-gn-gen - *step-electron-build - - *step-show-sccache-stats steps-electron-build-for-tests: &steps-electron-build-for-tests @@ -368,21 +368,13 @@ steps-electron-build-for-tests: &steps-electron-build-for-tests at: . - *step-depot-tools-add-to-path - *step-setup-env-for-build + - *step-gn-gen-default # Electron app - - *step-electron-gn-gen - *step-electron-build - *step-electron-dist-build - *step-electron-dist-store - # mksnapshot - - *step-mksnapshot-build - - *step-mksnapshot-store - - # chromedriver - - *step-electron-chromedriver-build - - *step-electron-chromedriver-store - # Node.js headers - *step-nodejs-headers-build @@ -401,9 +393,9 @@ steps-electron-build-for-publish: &steps-electron-build-for-publish - *step-depot-tools-add-to-path - *step-gclient-sync - *step-setup-env-for-build + - *step-gn-gen-default # Electron app - - *step-electron-gn-gen - *step-electron-build - *step-electron-dist-build - *step-electron-dist-store @@ -433,6 +425,17 @@ steps-electron-build-for-publish: &steps-electron-build-for-publish # Publish - *step-electron-publish +steps-chromedriver-build: &steps-chromedriver-build + steps: + - attach_workspace: + at: . + - *step-depot-tools-add-to-path + - *step-setup-env-for-build + - *step-gn-gen-default + + - *step-electron-chromedriver-build + - *step-electron-chromedriver-store + steps-native-mksnapshot-build: &steps-native-mksnapshot-build steps: - attach_workspace: @@ -468,7 +471,7 @@ steps-native-tests: &steps-native-tests at: . - *step-depot-tools-add-to-path - *step-setup-env-for-build - - *step-electron-gn-gen + - *step-gn-gen-default - run: name: Build tests @@ -547,9 +550,9 @@ steps-build-mac: &steps-build-mac - *step-install-nodejs-on-mac - *step-gclient-sync - *step-setup-env-for-build + - *step-gn-gen-default # Electron app - - *step-electron-gn-gen - *step-electron-build - *step-electron-dist-build - *step-electron-dist-store @@ -590,6 +593,9 @@ filter-only-prs-from-forks: &filter-only-prs-from-forks branches: only: /^pull\/.*$/ +chromium-upgrade-branches: &chromium-upgrade-branches + /chromium\-upgrade\/[0-9]+/ + # List of all jobs. version: 2 jobs: @@ -600,6 +606,10 @@ jobs: GCLIENT_EXTRA_ARGS: '--custom-var=checkout_arm=True --custom-var=checkout_arm64=True' <<: *steps-checkout + linux-x64-checkout: + <<: *machine-linux-2xlarge + <<: *steps-checkout + # Layer 2: Builds. linux-x64-debug: <<: *machine-linux-2xlarge @@ -621,6 +631,13 @@ jobs: <<: *env-enable-sccache <<: *steps-ffmpeg-build + linux-x64-chromedriver: + <<: *machine-linux-medium + environment: + <<: *env-release-build + <<: *env-enable-sccache + <<: *steps-chromedriver-build + linux-x64-release: <<: *machine-linux-2xlarge environment: @@ -658,6 +675,14 @@ jobs: <<: *env-enable-sccache <<: *steps-ffmpeg-build + linux-ia32-chromedriver: + <<: *machine-linux-medium + environment: + <<: *env-ia32 + <<: *env-release-build + <<: *env-enable-sccache + <<: *steps-chromedriver-build + linux-ia32-release: <<: *machine-linux-2xlarge environment: @@ -697,6 +722,14 @@ jobs: <<: *env-enable-sccache <<: *steps-ffmpeg-build + linux-arm-chromedriver: + <<: *machine-linux-medium + environment: + <<: *env-arm + <<: *env-release-build + <<: *env-enable-sccache + <<: *steps-chromedriver-build + linux-arm-release: <<: *machine-linux-2xlarge environment: @@ -744,6 +777,14 @@ jobs: <<: *env-enable-sccache <<: *steps-ffmpeg-build + linux-arm64-chromedriver: + <<: *machine-linux-medium + environment: + <<: *env-arm64 + <<: *env-release-build + <<: *env-enable-sccache + <<: *steps-chromedriver-build + linux-arm64-release: <<: *machine-linux-2xlarge environment: @@ -804,15 +845,11 @@ jobs: <<: *machine-linux-medium <<: *steps-tests - linux-x64-testing-verify-ffmpeg: - <<: *machine-linux-medium - <<: *steps-verify-ffmpeg - linux-x64-release-tests: <<: *machine-linux-medium <<: *steps-tests - linux-x64-release-verify-ffmpeg: + linux-x64-verify-ffmpeg: <<: *machine-linux-medium <<: *steps-verify-ffmpeg @@ -822,19 +859,13 @@ jobs: <<: *env-ia32 <<: *steps-tests - linux-ia32-testing-verify-ffmpeg: - <<: *machine-linux-medium - environment: - <<: *env-ia32 - <<: *steps-verify-ffmpeg - linux-ia32-release-tests: <<: *machine-linux-medium environment: <<: *env-ia32 <<: *steps-tests - linux-ia32-release-verify-ffmpeg: + linux-ia32-verify-ffmpeg: <<: *machine-linux-medium environment: <<: *env-ia32 @@ -863,13 +894,6 @@ workflows: - linux-x64-testing-tests: requires: - linux-x64-testing - - linux-x64-ffmpeg: - requires: - - linux-checkout - - linux-x64-testing-verify-ffmpeg: - requires: - - linux-x64-testing - - linux-x64-ffmpeg - linux-ia32-debug: requires: @@ -880,13 +904,6 @@ workflows: - linux-ia32-testing-tests: requires: - linux-ia32-testing - - linux-ia32-ffmpeg: - requires: - - linux-checkout - - linux-ia32-testing-verify-ffmpeg: - requires: - - linux-ia32-testing - - linux-ia32-ffmpeg - linux-arm-debug: requires: @@ -894,12 +911,6 @@ workflows: - linux-arm-testing: requires: - linux-checkout - - linux-arm-ffmpeg: - requires: - - linux-checkout - - linux-arm-native-mksnapshot: - requires: - - linux-checkout - linux-arm64-debug: requires: @@ -907,12 +918,6 @@ workflows: - linux-arm64-testing: requires: - linux-checkout - - linux-arm64-ffmpeg: - requires: - - linux-checkout - - linux-arm64-native-mksnapshot: - requires: - - linux-checkout build-mac-fork-prs: jobs: @@ -938,20 +943,10 @@ workflows: branches: only: - master - - /chromium\-upgrade\/[0-9]+/ + - *chromium-upgrade-branches jobs: - linux-checkout - # TODO(alexeykuzmin): Enable it back. - # Tons of crashes right now, see - # https://circleci.com/gh/electron/electron/67463 -# - linux-x64-browsertests: -# requires: -# - linux-checkout - - linux-x64-unittests: - requires: - - linux-checkout - - linux-x64-release: requires: - linux-checkout @@ -961,10 +956,13 @@ workflows: - linux-x64-ffmpeg: requires: - linux-checkout - - linux-x64-release-verify-ffmpeg: + - linux-x64-verify-ffmpeg: requires: - linux-x64-release - linux-x64-ffmpeg + - linux-x64-chromedriver: + requires: + - linux-checkout - linux-ia32-release: requires: @@ -975,10 +973,13 @@ workflows: - linux-ia32-ffmpeg: requires: - linux-checkout - - linux-ia32-release-verify-ffmpeg: + - linux-ia32-verify-ffmpeg: requires: - linux-ia32-release - linux-ia32-ffmpeg + - linux-ia32-chromedriver: + requires: + - linux-checkout - linux-arm-release: requires: @@ -989,6 +990,9 @@ workflows: - linux-arm-native-mksnapshot: requires: - linux-checkout + - linux-arm-chromedriver: + requires: + - linux-checkout - linux-arm64-release: requires: @@ -999,3 +1003,31 @@ workflows: - linux-arm64-native-mksnapshot: requires: - linux-checkout + - linux-arm64-chromedriver: + requires: + - linux-checkout + + # Various slow and non-essential checks we run only nightly. + # Sanitizer jobs should be added here. + linux-checks-nightly: + triggers: + - schedule: + cron: "0 0 * * *" + filters: + branches: + only: + - master + - *chromium-upgrade-branches + jobs: + - linux-x64-checkout + + # TODO(alexeykuzmin): Enable it back. + # Tons of crashes right now, see + # https://circleci.com/gh/electron/electron/67463 +# - linux-x64-browsertests: +# requires: +# - linux-x64-checkout + + - linux-x64-unittests: + requires: + - linux-x64-checkout