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
This commit is contained in:
Alexey Kuzmin 2018-10-04 17:50:46 +02:00 коммит произвёл John Kleinschmidt
Родитель d3ae541397
Коммит 1acd840c38
1 изменённых файлов: 101 добавлений и 69 удалений

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

@ -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