config.yml 43 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578
  1. # The config expects the following environment variables to be set:
  2. # - "SLACK_WEBHOOK" Slack hook URL to send notifications.
  3. #
  4. # The publishing scripts expect access tokens to be defined as env vars,
  5. # but those are not covered here.
  6. #
  7. # CircleCI docs on variables:
  8. # https://circleci.com/docs/2.0/env-vars/
  9. # Build machines configs.
  10. docker-image: &docker-image
  11. docker:
  12. - image: electronbuilds/electron:0.0.9
  13. machine-linux-medium: &machine-linux-medium
  14. <<: *docker-image
  15. resource_class: medium
  16. machine-linux-2xlarge: &machine-linux-2xlarge
  17. <<: *docker-image
  18. resource_class: 2xlarge
  19. machine-mac: &machine-mac
  20. macos:
  21. xcode: "8.3.3"
  22. machine-mac-large: &machine-mac-large
  23. resource_class: large
  24. macos:
  25. xcode: "8.3.3"
  26. # Build configurations options.
  27. env-debug-build: &env-debug-build
  28. GN_CONFIG: //electron/build/args/debug.gn
  29. env-testing-build: &env-testing-build
  30. GN_CONFIG: //electron/build/args/testing.gn
  31. CHECK_DIST_MANIFEST: '1'
  32. env-release-build: &env-release-build
  33. GN_CONFIG: //electron/build/args/release.gn
  34. STRIP_BINARIES: true
  35. GENERATE_SYMBOLS: true
  36. env-headless-testing: &env-headless-testing
  37. DISPLAY: ':99.0'
  38. env-stack-dumping: &env-stack-dumping
  39. ELECTRON_ENABLE_STACK_DUMPING: '1'
  40. env-browsertests: &env-browsertests
  41. GN_EXTRA_ARGS: 'is_component_ffmpeg = false'
  42. BUILD_TARGET: electron:chromium_browsertests
  43. TESTS_CONFIG: src/electron/spec/configs/browsertests.yml
  44. env-unittests: &env-unittests
  45. GN_EXTRA_ARGS: 'is_component_ffmpeg = false'
  46. BUILD_TARGET: electron:chromium_unittests
  47. TESTS_CONFIG: src/electron/spec/configs/unittests.yml
  48. # Build targets options.
  49. env-ia32: &env-ia32
  50. GN_EXTRA_ARGS: 'target_cpu = "x86"'
  51. NPM_CONFIG_ARCH: ia32
  52. TARGET_ARCH: ia32
  53. env-arm: &env-arm
  54. GN_EXTRA_ARGS: 'target_cpu = "arm"'
  55. MKSNAPSHOT_TOOLCHAIN: //build/toolchain/linux:clang_arm
  56. BUILD_NATIVE_MKSNAPSHOT: 1
  57. TARGET_ARCH: arm
  58. env-arm64: &env-arm64
  59. GN_EXTRA_ARGS: 'target_cpu = "arm64" fatal_linker_warnings = false enable_linux_installer = false'
  60. MKSNAPSHOT_TOOLCHAIN: //build/toolchain/linux:clang_arm64
  61. BUILD_NATIVE_MKSNAPSHOT: 1
  62. TARGET_ARCH: arm64
  63. env-mas: &env-mas
  64. GN_EXTRA_ARGS: 'is_mas_build = true'
  65. MAS_BUILD: 'true'
  66. # Misc build configuration options.
  67. env-enable-sccache: &env-enable-sccache
  68. USE_SCCACHE: true
  69. env-send-slack-notifications: &env-send-slack-notifications
  70. NOTIFY_SLACK: true
  71. env-linux-medium: &env-linux-medium
  72. NUMBER_OF_NINJA_PROCESSES: 3
  73. env-linux-2xlarge: &env-linux-2xlarge
  74. NUMBER_OF_NINJA_PROCESSES: 18
  75. env-machine-mac: &env-machine-mac
  76. NUMBER_OF_NINJA_PROCESSES: 6
  77. env-mac-large: &env-mac-large
  78. NUMBER_OF_NINJA_PROCESSES: 10
  79. env-disable-crash-reporter-tests: &env-disable-crash-reporter-tests
  80. DISABLE_CRASH_REPORTER_TESTS: true
  81. # Individual (shared) steps.
  82. step-maybe-notify-slack-failure: &step-maybe-notify-slack-failure
  83. run:
  84. name: Send a Slack notification on failure
  85. command: |
  86. if [ "$NOTIFY_SLACK" == "true" ]; then
  87. export MESSAGE="Build failed for *<$CIRCLE_BUILD_URL|$CIRCLE_JOB>* nightly build from *$CIRCLE_BRANCH*."
  88. curl -g -H "Content-Type: application/json" -X POST \
  89. -d "{\"text\": \"$MESSAGE\", \"attachments\": [{\"color\": \"#FC5C3C\",\"title\": \"$CIRCLE_JOB nightly build results\",\"title_link\": \"$CIRCLE_BUILD_URL\"}]}" $SLACK_WEBHOOK
  90. fi
  91. when: on_fail
  92. step-maybe-notify-slack-success: &step-maybe-notify-slack-success
  93. run:
  94. name: Send a Slack notification on success
  95. command: |
  96. if [ "$NOTIFY_SLACK" == "true" ]; then
  97. export MESSAGE="Build succeeded for *<$CIRCLE_BUILD_URL|$CIRCLE_JOB>* nightly build from *$CIRCLE_BRANCH*."
  98. curl -g -H "Content-Type: application/json" -X POST \
  99. -d "{\"text\": \"$MESSAGE\", \"attachments\": [{\"color\": \"good\",\"title\": \"$CIRCLE_JOB nightly build results\",\"title_link\": \"$CIRCLE_BUILD_URL\"}]}" $SLACK_WEBHOOK
  100. fi
  101. when: on_success
  102. step-checkout-electron: &step-checkout-electron
  103. checkout:
  104. path: src/electron
  105. step-depot-tools-get: &step-depot-tools-get
  106. run:
  107. name: Get depot tools
  108. command: |
  109. git clone --depth=1 https://chromium.googlesource.com/chromium/tools/depot_tools.git
  110. step-depot-tools-add-to-path: &step-depot-tools-add-to-path
  111. run:
  112. name: Add depot tools to PATH
  113. command: echo 'export PATH="$PATH:'"$PWD"'/depot_tools"' >> $BASH_ENV
  114. step-gclient-sync: &step-gclient-sync
  115. run:
  116. name: Gclient sync
  117. command: |
  118. gclient config \
  119. --name "src/electron" \
  120. --unmanaged \
  121. $GCLIENT_EXTRA_ARGS \
  122. "$CIRCLE_REPOSITORY_URL"
  123. gclient sync --with_branch_heads --with_tags
  124. step-setup-env-for-build: &step-setup-env-for-build
  125. run:
  126. name: Setup Environment Variables
  127. command: |
  128. # To find `gn` executable.
  129. echo 'export CHROMIUM_BUILDTOOLS_PATH="'"$PWD"'/src/buildtools"' >> $BASH_ENV
  130. if [ "$USE_SCCACHE" == "true" ]; then
  131. # https://github.com/mozilla/sccache
  132. SCCACHE_PATH="$PWD/src/electron/external_binaries/sccache"
  133. echo 'export SCCACHE_PATH="'"$SCCACHE_PATH"'"' >> $BASH_ENV
  134. if [ "$CIRCLE_PR_NUMBER" != "" ]; then
  135. #if building a fork set readonly access to sccache
  136. echo 'export SCCACHE_BUCKET="electronjs-sccache"' >> $BASH_ENV
  137. echo 'export SCCACHE_TWO_TIER=true' >> $BASH_ENV
  138. fi
  139. fi
  140. step-restore-brew-cache: &step-restore-brew-cache
  141. restore_cache:
  142. paths:
  143. - /usr/local/Homebrew
  144. keys:
  145. - v1-brew-cache-{{ arch }}
  146. step-install-nodejs-on-mac: &step-install-nodejs-on-mac
  147. run:
  148. name: Install Node.js 10 on MacOS
  149. command: |
  150. if [ "`uname`" == "Darwin" ]; then
  151. brew update
  152. brew install node@10
  153. echo 'export PATH="/usr/local/opt/node@10/bin:$PATH"' >> $BASH_ENV
  154. fi
  155. # On macOS the npm install command during gclient sync was run on a linux
  156. # machine and therefore installed a slightly different set of dependencies
  157. # Notably "fsevents" is a macOS only dependency, we rerun npm install once
  158. # we are on a macOS machine to get the correct state
  159. step-install-npm-deps-on-mac: &step-install-npm-deps-on-mac
  160. run:
  161. name: Install NPM Dependencies on MacOS
  162. command: |
  163. if [ "`uname`" == "Darwin" ]; then
  164. cd src/electron
  165. npm install
  166. fi
  167. # This step handles the differences between the linux "gclient sync"
  168. # and the expected state on macOS
  169. step-fix-sync-on-mac: &step-fix-sync-on-mac
  170. run:
  171. name: Fix Sync on macOS
  172. command: |
  173. if [ "`uname`" == "Darwin" ]; then
  174. # Fix Clang Install (wrong binary)
  175. rm -rf src/third_party/llvm-build
  176. python src/tools/clang/scripts/update.py
  177. # Fix Framework Header Installs (symlinks not retained)
  178. rm -rf src/electron/external_binaries
  179. python src/electron/script/update-external-binaries.py
  180. fi
  181. step-install-gnutar-on-mac: &step-install-gnutar-on-mac
  182. run:
  183. name: Install gnu-tar on macos
  184. command: |
  185. if [ "`uname`" == "Darwin" ]; then
  186. brew update
  187. brew install gnu-tar
  188. ln -fs /usr/local/bin/gtar /usr/local/bin/tar
  189. fi
  190. step-gn-gen-default: &step-gn-gen-default
  191. run:
  192. name: Default GN gen
  193. command: |
  194. cd src
  195. gn gen out/Default --args='import("'$GN_CONFIG'") cc_wrapper="'"$SCCACHE_PATH"'"'" $GN_EXTRA_ARGS"
  196. step-electron-build: &step-electron-build
  197. run:
  198. name: Electron build
  199. command: |
  200. cd src
  201. ninja -C out/Default electron -j $NUMBER_OF_NINJA_PROCESSES
  202. step-maybe-electron-dist-strip: &step-maybe-electron-dist-strip
  203. run:
  204. name: Strip electron binaries
  205. command: |
  206. if [ "$STRIP_BINARIES" == "true" ] && [ "`uname`" != "Darwin" ]; then
  207. cd src
  208. electron/script/strip-binaries.py --target-cpu="$TARGET_ARCH"
  209. fi
  210. step-electron-dist-build: &step-electron-dist-build
  211. run:
  212. name: Build dist.zip
  213. command: |
  214. cd src
  215. ninja -C out/Default electron:electron_dist_zip
  216. if [ "$CHECK_DIST_MANIFEST" == "1" ]; then
  217. if [ "`uname`" == "Darwin" ]; then
  218. target_os=mac
  219. target_cpu=x64
  220. if [ x"$MAS_BUILD" == x"true" ]; then
  221. target_os=mac_mas
  222. fi
  223. elif [ "`uname`" == "Linux" ]; then
  224. target_os=linux
  225. if [ x"$TARGET_ARCH" == x ]; then
  226. target_cpu=x64
  227. elif [ "$TARGET_ARCH" == "ia32" ]; then
  228. target_cpu=x86
  229. else
  230. target_cpu="$TARGET_ARCH"
  231. fi
  232. else
  233. echo "Unknown system: `uname`"
  234. exit 1
  235. fi
  236. electron/script/zip_manifests/check-zip-manifest.py out/Default/dist.zip electron/script/zip_manifests/dist_zip.$target_os.$target_cpu.manifest
  237. fi
  238. step-electron-dist-store: &step-electron-dist-store
  239. store_artifacts:
  240. path: src/out/Default/dist.zip
  241. destination: dist.zip
  242. step-electron-chromedriver-build: &step-electron-chromedriver-build
  243. run:
  244. name: Build chromedriver.zip
  245. command: |
  246. cd src
  247. ninja -C out/Default chrome/test/chromedriver -j $NUMBER_OF_NINJA_PROCESSES
  248. electron/script/strip-binaries.py --target-cpu="$TARGET_ARCH" --file $PWD/out/Default/chromedriver
  249. ninja -C out/Default electron:electron_chromedriver_zip
  250. step-electron-chromedriver-store: &step-electron-chromedriver-store
  251. store_artifacts:
  252. path: src/out/Default/chromedriver.zip
  253. destination: chromedriver.zip
  254. step-nodejs-headers-build: &step-nodejs-headers-build
  255. run:
  256. name: Build Node.js headers
  257. command: |
  258. cd src
  259. ninja -C out/Default third_party/electron_node:headers
  260. step-nodejs-headers-store: &step-nodejs-headers-store
  261. store_artifacts:
  262. path: src/out/Default/gen/node_headers.tar.gz
  263. destination: node_headers.tar.gz
  264. step-electron-publish: &step-electron-publish
  265. run:
  266. name: Publish Electron Dist
  267. command: |
  268. cd src/electron
  269. if [ "$UPLOAD_TO_S3" == "1" ]; then
  270. echo 'Uploading Electron release distribution to S3'
  271. script/upload.py --upload_to_s3
  272. else
  273. echo 'Uploading Electron release distribution to Github releases'
  274. script/upload.py
  275. fi
  276. step-persist-data-for-tests: &step-persist-data-for-tests
  277. persist_to_workspace:
  278. root: .
  279. paths:
  280. # Build artifacts
  281. - src/out/Default/dist.zip
  282. - src/out/Default/mksnapshot.zip
  283. - src/out/Default/gen/node_headers
  284. - src/out/ffmpeg/ffmpeg.zip
  285. step-electron-dist-unzip: &step-electron-dist-unzip
  286. run:
  287. name: Unzip dist.zip
  288. command: |
  289. cd src/out/Default
  290. # -o overwrite files WITHOUT prompting
  291. # TODO(alexeykuzmin): Remove '-o' when it's no longer needed.
  292. unzip -o dist.zip
  293. step-ffmpeg-unzip: &step-ffmpeg-unzip
  294. run:
  295. name: Unzip ffmpeg.zip
  296. command: |
  297. cd src/out/ffmpeg
  298. unzip -o ffmpeg.zip
  299. step-mksnapshot-unzip: &step-mksnapshot-unzip
  300. run:
  301. name: Unzip mksnapshot.zip
  302. command: |
  303. cd src/out/Default
  304. unzip -o mksnapshot.zip
  305. step-ffmpeg-gn-gen: &step-ffmpeg-gn-gen
  306. run:
  307. name: ffmpeg GN gen
  308. command: |
  309. cd src
  310. gn gen out/ffmpeg --args='import("//electron/build/args/ffmpeg.gn") cc_wrapper="'"$SCCACHE_PATH"'"'" $GN_EXTRA_ARGS"
  311. step-ffmpeg-build: &step-ffmpeg-build
  312. run:
  313. name: Non proprietary ffmpeg build
  314. command: |
  315. cd src
  316. ninja -C out/ffmpeg electron:electron_ffmpeg_zip -j $NUMBER_OF_NINJA_PROCESSES
  317. step-verify-ffmpeg: &step-verify-ffmpeg
  318. run:
  319. name: Verify ffmpeg
  320. command: |
  321. cd src
  322. python electron/script/verify-ffmpeg.py --source-root "$PWD" --build-dir out/Default --ffmpeg-path out/ffmpeg
  323. step-ffmpeg-store: &step-ffmpeg-store
  324. store_artifacts:
  325. path: src/out/ffmpeg/ffmpeg.zip
  326. destination: ffmpeg.zip
  327. step-verify-mksnapshot: &step-verify-mksnapshot
  328. run:
  329. name: Verify mksnapshot
  330. command: |
  331. cd src
  332. python electron/script/verify-mksnapshot.py --source-root "$PWD" --build-dir out/Default
  333. step-setup-linux-for-headless-testing: &step-setup-linux-for-headless-testing
  334. run:
  335. name: Setup for headless testing
  336. command: |
  337. if [ "`uname`" != "Darwin" ]; then
  338. sh -e /etc/init.d/xvfb start
  339. fi
  340. step-show-sccache-stats: &step-show-sccache-stats
  341. run:
  342. name: Check sccache stats after build
  343. command: |
  344. if [ "$SCCACHE_PATH" != "" ]; then
  345. $SCCACHE_PATH -s
  346. fi
  347. step-mksnapshot-build: &step-mksnapshot-build
  348. run:
  349. name: mksnapshot build
  350. command: |
  351. cd src
  352. if [ "`uname`" != "Darwin" ]; then
  353. if [ "$TARGET_ARCH" == "arm" ]; then
  354. electron/script/strip-binaries.py --file $PWD/out/Default/clang_x86_v8_arm/mksnapshot
  355. elif [ "$TARGET_ARCH" == "arm64" ]; then
  356. electron/script/strip-binaries.py --file $PWD/out/Default/clang_x64_v8_arm64/mksnapshot
  357. else
  358. electron/script/strip-binaries.py --file $PWD/out/Default/mksnapshot
  359. fi
  360. fi
  361. ninja -C out/Default electron:electron_mksnapshot_zip -j $NUMBER_OF_NINJA_PROCESSES
  362. step-mksnapshot-store: &step-mksnapshot-store
  363. store_artifacts:
  364. path: src/out/Default/mksnapshot.zip
  365. destination: mksnapshot.zip
  366. step-maybe-generate-breakpad-symbols: &step-maybe-generate-breakpad-symbols
  367. run:
  368. name: Generate breakpad symbols
  369. command: |
  370. if [ "$GENERATE_SYMBOLS" == "true" ]; then
  371. cd src
  372. ninja -C out/Default electron:electron_symbols
  373. fi
  374. step-maybe-zip-symbols: &step-maybe-zip-symbols
  375. run:
  376. name: Zip symbols
  377. command: |
  378. cd src
  379. export BUILD_PATH="$PWD/out/Default"
  380. electron/script/zip-symbols.py -b $BUILD_PATH
  381. step-maybe-native-mksnapshot-gn-gen: &step-maybe-native-mksnapshot-gn-gen
  382. run:
  383. name: Native mksnapshot GN gen (arm/arm64)
  384. command: |
  385. if [ "$BUILD_NATIVE_MKSNAPSHOT" == "1" ]; then
  386. cd src
  387. gn gen out/native_mksnapshot --args='import("'$GN_CONFIG'") cc_wrapper="'"$SCCACHE_PATH"'" v8_snapshot_toolchain="'"$MKSNAPSHOT_TOOLCHAIN"'"'" $GN_EXTRA_ARGS"
  388. else
  389. echo 'Skipping native mksnapshot GN gen for non arm build'
  390. fi
  391. step-maybe-native-mksnapshot-build: &step-maybe-native-mksnapshot-build
  392. run:
  393. name: Native mksnapshot build (arm/arm64)
  394. command: |
  395. if [ "$BUILD_NATIVE_MKSNAPSHOT" == "1" ]; then
  396. cd src
  397. ninja -C out/native_mksnapshot electron:electron_mksnapshot_zip -j $NUMBER_OF_NINJA_PROCESSES
  398. else
  399. echo 'Skipping native mksnapshot build for non arm build'
  400. fi
  401. step-maybe-native-mksnapshot-strip: &step-maybe-native-mksnapshot-strip
  402. run:
  403. name: Native mksnapshot binary strip (arm/arm64)
  404. command: |
  405. if [ "$BUILD_NATIVE_MKSNAPSHOT" == "1" ]; then
  406. cd src
  407. electron/script/strip-binaries.py --file $PWD/out/native_mksnapshot/mksnapshot --target-cpu="$TARGET_ARCH"
  408. else
  409. echo 'Skipping native mksnapshot binary strip'
  410. fi
  411. step-maybe-native-mksnapshot-store: &step-maybe-native-mksnapshot-store
  412. store_artifacts:
  413. path: src/out/native_mksnapshot/mksnapshot.zip
  414. destination: native_mksnapshot.zip
  415. step-maybe-trigger-arm-test: &step-maybe-trigger-arm-test
  416. run:
  417. name: Trigger an arm test on VSTS if applicable
  418. command: |
  419. cd src
  420. # Only run for non-fork prs
  421. if [ "$TRIGGER_ARM_TEST" == "true" ] && [ -z "$CIRCLE_PR_NUMBER" ]; then
  422. #Trigger VSTS job, passing along CircleCI job number and branch to build
  423. echo "Triggering electron-$TARGET_ARCH-testing build on VSTS"
  424. node electron/script/ci-release-build.js --job=electron-$TARGET_ARCH-testing --ci=VSTS --armTest --circleBuildNum=$CIRCLE_BUILD_NUM $CIRCLE_BRANCH
  425. fi
  426. step-maybe-generate-typescript-defs: &step-maybe-generate-typescript-defs
  427. run:
  428. name: Generate type declarations
  429. command: |
  430. if [ "`uname`" == "Darwin" ]; then
  431. cd src/electron
  432. npm run create-typescript-definitions
  433. fi
  434. # Lists of steps.
  435. steps-lint: &steps-lint
  436. steps:
  437. - *step-checkout-electron
  438. - run:
  439. name: Setup third_party Depot Tools
  440. command: |
  441. # "depot_tools" has to be checkout into "//third_party/depot_tools" so pylint.py can a "pylintrc" file.
  442. git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git src/third_party/depot_tools
  443. echo 'export PATH="$PATH:'"$PWD"'/src/third_party/depot_tools"' >> $BASH_ENV
  444. - run:
  445. name: Download GN Binary
  446. command: |
  447. chromium_revision="$(grep -A1 chromium_version src/electron/DEPS | tr -d '\n' | cut -d\' -f4)"
  448. buildtools_revision="$(curl -sL "https://chromium.googlesource.com/chromium/src/+/${chromium_revision}/DEPS?format=TEXT" | base64 -d | grep buildtools_revision -A1 | tr -d '\n' | cut -d\' -f4)"
  449. git clone https://chromium.googlesource.com/chromium/buildtools "buildtools"
  450. (cd "buildtools" && git checkout "$buildtools_revision")
  451. echo 'export CHROMIUM_BUILDTOOLS_PATH="'"$PWD"'/buildtools"' >> $BASH_ENV
  452. download_from_google_storage --bucket chromium-gn -s "buildtools/linux64/gn.sha1"
  453. - run:
  454. name: Run Lint
  455. command: |
  456. # gn.py tries to find a gclient root folder starting from the current dir.
  457. # When it fails and returns "None" path, the whole script fails. Let's "fix" it.
  458. touch .gclient
  459. # Another option would be to checkout "buildtools" inside the Electron checkout,
  460. # but then we would lint its contents (at least gn format), and it doesn't pass it.
  461. cd src/electron
  462. npm install
  463. npm run lint
  464. steps-checkout: &steps-checkout
  465. steps:
  466. - *step-checkout-electron
  467. - *step-depot-tools-get
  468. - *step-depot-tools-add-to-path
  469. - *step-restore-brew-cache
  470. - *step-install-nodejs-on-mac
  471. - *step-install-gnutar-on-mac
  472. - restore_cache:
  473. paths:
  474. - ~/.gclient-cache
  475. keys:
  476. - v1-gclient-cache-{{ arch }}-{{ checksum "src/electron/DEPS" }}
  477. - v1-gclient-cache-{{ arch }}-
  478. - run:
  479. name: Set GIT_CACHE_PATH to make gclient to use the cache
  480. command: |
  481. # CircleCI does not support interpolation when setting environment variables.
  482. # https://circleci.com/docs/2.0/env-vars/#setting-an-environment-variable-in-a-shell-command
  483. echo 'export GIT_CACHE_PATH="$HOME/.gclient-cache"' >> $BASH_ENV
  484. - *step-gclient-sync
  485. - save_cache:
  486. paths:
  487. - ~/.gclient-cache
  488. key: v1-gclient-cache-{{ arch }}-{{ checksum "src/electron/DEPS" }}
  489. - save_cache:
  490. paths:
  491. - /usr/local/Homebrew
  492. key: v1-brew-cache-{{ arch }}
  493. - run:
  494. name: Remove some unused data to avoid storing it in the workspace
  495. command: |
  496. rm -rf src/android_webview
  497. rm -rf src/ios
  498. rm -rf src/third_party/WebKit/LayoutTests
  499. - persist_to_workspace:
  500. root: .
  501. paths:
  502. - depot_tools
  503. - src
  504. steps-electron-build: &steps-electron-build
  505. steps:
  506. - attach_workspace:
  507. at: .
  508. - *step-depot-tools-add-to-path
  509. - *step-setup-env-for-build
  510. - *step-gn-gen-default
  511. # Electron app
  512. - *step-electron-build
  513. - *step-electron-dist-build
  514. - *step-electron-dist-store
  515. # Node.js headers
  516. - *step-nodejs-headers-build
  517. - *step-nodejs-headers-store
  518. - *step-show-sccache-stats
  519. steps-electron-build-for-tests: &steps-electron-build-for-tests
  520. steps:
  521. - attach_workspace:
  522. at: .
  523. - *step-depot-tools-add-to-path
  524. - *step-setup-env-for-build
  525. - *step-restore-brew-cache
  526. - *step-install-nodejs-on-mac
  527. - *step-install-npm-deps-on-mac
  528. - *step-fix-sync-on-mac
  529. - *step-gn-gen-default
  530. # Electron app
  531. - *step-electron-build
  532. - *step-maybe-electron-dist-strip
  533. - *step-electron-dist-build
  534. - *step-electron-dist-store
  535. # Node.js headers
  536. - *step-nodejs-headers-build
  537. - *step-nodejs-headers-store
  538. - *step-show-sccache-stats
  539. # mksnapshot
  540. - *step-mksnapshot-build
  541. - *step-mksnapshot-store
  542. # native_mksnapshot
  543. - *step-maybe-native-mksnapshot-gn-gen
  544. - *step-maybe-native-mksnapshot-build
  545. - *step-maybe-native-mksnapshot-strip
  546. - *step-maybe-native-mksnapshot-store
  547. # ffmpeg
  548. - *step-ffmpeg-gn-gen
  549. - *step-ffmpeg-build
  550. - *step-ffmpeg-store
  551. # Save all data needed for a further tests run.
  552. - *step-persist-data-for-tests
  553. - *step-maybe-generate-breakpad-symbols
  554. - *step-maybe-zip-symbols
  555. # Trigger tests on arm hardware if needed
  556. - *step-maybe-trigger-arm-test
  557. - *step-maybe-notify-slack-failure
  558. steps-electron-build-for-publish: &steps-electron-build-for-publish
  559. steps:
  560. - *step-checkout-electron
  561. - *step-depot-tools-get
  562. - *step-depot-tools-add-to-path
  563. - *step-restore-brew-cache
  564. - *step-install-nodejs-on-mac
  565. - *step-gclient-sync
  566. - *step-setup-env-for-build
  567. - *step-gn-gen-default
  568. # Electron app
  569. - *step-electron-build
  570. - *step-maybe-electron-dist-strip
  571. - *step-electron-dist-build
  572. - *step-electron-dist-store
  573. - *step-maybe-generate-breakpad-symbols
  574. - *step-maybe-zip-symbols
  575. # mksnapshot
  576. - *step-mksnapshot-build
  577. - *step-mksnapshot-store
  578. # native_mksnapshot
  579. - *step-maybe-native-mksnapshot-gn-gen
  580. - *step-maybe-native-mksnapshot-build
  581. - *step-maybe-native-mksnapshot-strip
  582. - *step-maybe-native-mksnapshot-store
  583. # chromedriver
  584. - *step-electron-chromedriver-build
  585. - *step-electron-chromedriver-store
  586. # Node.js headers
  587. - *step-nodejs-headers-build
  588. - *step-nodejs-headers-store
  589. # ffmpeg
  590. - *step-ffmpeg-gn-gen
  591. - *step-ffmpeg-build
  592. - *step-ffmpeg-store
  593. # typescript defs
  594. - *step-maybe-generate-typescript-defs
  595. # Publish
  596. - *step-electron-publish
  597. steps-chromedriver-build: &steps-chromedriver-build
  598. steps:
  599. - attach_workspace:
  600. at: .
  601. - *step-depot-tools-add-to-path
  602. - *step-setup-env-for-build
  603. - *step-fix-sync-on-mac
  604. - *step-gn-gen-default
  605. - *step-electron-chromedriver-build
  606. - *step-electron-chromedriver-store
  607. - *step-maybe-notify-slack-failure
  608. steps-native-mksnapshot-build: &steps-native-mksnapshot-build
  609. steps:
  610. - attach_workspace:
  611. at: .
  612. - *step-depot-tools-add-to-path
  613. - *step-setup-env-for-build
  614. - *step-maybe-native-mksnapshot-gn-gen
  615. - *step-maybe-native-mksnapshot-build
  616. - *step-maybe-native-mksnapshot-store
  617. - *step-maybe-notify-slack-failure
  618. steps-native-tests: &steps-native-tests
  619. steps:
  620. - attach_workspace:
  621. at: .
  622. - *step-depot-tools-add-to-path
  623. - *step-setup-env-for-build
  624. - *step-gn-gen-default
  625. - run:
  626. name: Build tests
  627. command: |
  628. cd src
  629. ninja -C out/Default $BUILD_TARGET
  630. - *step-show-sccache-stats
  631. - *step-setup-linux-for-headless-testing
  632. - run:
  633. name: Run tests
  634. command: |
  635. mkdir test_results
  636. python src/electron/script/native-tests.py run \
  637. --config $TESTS_CONFIG \
  638. --tests-dir src/out/Default \
  639. --output-dir test_results
  640. - store_artifacts:
  641. path: test_results
  642. destination: test_results # Put it in the root folder.
  643. - store_test_results:
  644. path: test_results
  645. steps-verify-ffmpeg: &steps-verify-ffmpeg
  646. steps:
  647. - attach_workspace:
  648. at: .
  649. - *step-depot-tools-add-to-path
  650. - *step-electron-dist-unzip
  651. - *step-ffmpeg-unzip
  652. - *step-setup-linux-for-headless-testing
  653. - *step-verify-ffmpeg
  654. - *step-maybe-notify-slack-failure
  655. steps-verify-mksnapshot: &steps-verify-mksnapshot
  656. steps:
  657. - attach_workspace:
  658. at: .
  659. - *step-depot-tools-add-to-path
  660. - *step-electron-dist-unzip
  661. - *step-mksnapshot-unzip
  662. - *step-setup-linux-for-headless-testing
  663. - *step-verify-mksnapshot
  664. - *step-maybe-notify-slack-failure
  665. steps-tests: &steps-tests
  666. steps:
  667. - attach_workspace:
  668. at: .
  669. - *step-depot-tools-add-to-path
  670. - *step-electron-dist-unzip
  671. - *step-mksnapshot-unzip
  672. - *step-setup-linux-for-headless-testing
  673. - *step-restore-brew-cache
  674. - *step-install-nodejs-on-mac
  675. - run:
  676. name: Run Electron tests
  677. environment:
  678. MOCHA_REPORTER: mocha-multi-reporters
  679. MOCHA_FILE: junit/test-results.xml
  680. MOCHA_MULTI_REPORTERS: mocha-junit-reporter, tap
  681. ELECTRON_DISABLE_SECURITY_WARNINGS: 1
  682. command: |
  683. cd src
  684. export ELECTRON_OUT_DIR=Default
  685. (cd electron && npm run test -- --ci --enable-logging)
  686. - run:
  687. name: Check test results existence
  688. command: |
  689. MOCHA_FILE='src/junit/test-results.xml'
  690. # Check if it exists and not empty.
  691. if [ ! -s "$MOCHA_FILE" ]; then
  692. exit 1
  693. fi
  694. - store_test_results:
  695. path: src/junit
  696. - *step-verify-mksnapshot
  697. - *step-maybe-notify-slack-failure
  698. chromium-upgrade-branches: &chromium-upgrade-branches
  699. /chromium\-upgrade\/[0-9]+/
  700. # List of all jobs.
  701. version: 2
  702. jobs:
  703. # Layer 0: Lint. Standalone.
  704. lint:
  705. <<: *machine-linux-medium
  706. environment:
  707. <<: *env-linux-medium
  708. <<: *steps-lint
  709. # Layer 1: Checkout.
  710. linux-checkout:
  711. <<: *machine-linux-2xlarge
  712. environment:
  713. <<: *env-linux-2xlarge
  714. GCLIENT_EXTRA_ARGS: '--custom-var=checkout_arm=True --custom-var=checkout_arm64=True'
  715. <<: *steps-checkout
  716. linux-checkout-for-native-tests:
  717. <<: *machine-linux-2xlarge
  718. environment:
  719. <<: *env-linux-2xlarge
  720. GCLIENT_EXTRA_ARGS: '--custom-var=checkout_pyyaml=True'
  721. <<: *steps-checkout
  722. linux-checkout-for-native-tests-with-no-patches:
  723. <<: *machine-linux-2xlarge
  724. environment:
  725. <<: *env-linux-2xlarge
  726. GCLIENT_EXTRA_ARGS: '--custom-var=apply_patches=False --custom-var=checkout_pyyaml=True'
  727. <<: *steps-checkout
  728. mac-checkout:
  729. <<: *machine-linux-2xlarge
  730. environment:
  731. <<: *env-linux-2xlarge
  732. GCLIENT_EXTRA_ARGS: '--custom-var=checkout_mac=True --custom-var=host_os=mac'
  733. <<: *steps-checkout
  734. # Layer 2: Builds.
  735. linux-x64-debug:
  736. <<: *machine-linux-2xlarge
  737. environment:
  738. <<: *env-linux-2xlarge
  739. <<: *env-debug-build
  740. <<: *env-enable-sccache
  741. <<: *steps-electron-build
  742. linux-x64-testing:
  743. <<: *machine-linux-2xlarge
  744. environment:
  745. <<: *env-linux-2xlarge
  746. <<: *env-testing-build
  747. <<: *env-enable-sccache
  748. <<: *steps-electron-build-for-tests
  749. linux-x64-chromedriver:
  750. <<: *machine-linux-medium
  751. environment:
  752. <<: *env-linux-medium
  753. <<: *env-release-build
  754. <<: *env-enable-sccache
  755. <<: *env-send-slack-notifications
  756. <<: *steps-chromedriver-build
  757. linux-x64-release:
  758. <<: *machine-linux-2xlarge
  759. environment:
  760. <<: *env-linux-2xlarge
  761. <<: *env-release-build
  762. <<: *env-enable-sccache
  763. <<: *env-send-slack-notifications
  764. <<: *steps-electron-build-for-tests
  765. linux-x64-publish:
  766. <<: *machine-linux-2xlarge
  767. environment:
  768. <<: *env-linux-2xlarge
  769. GCLIENT_EXTRA_ARGS: '--custom-var=checkout_boto=True --custom-var=checkout_requests=True'
  770. <<: *env-release-build
  771. <<: *steps-electron-build-for-publish
  772. linux-ia32-debug:
  773. <<: *machine-linux-2xlarge
  774. environment:
  775. <<: *env-linux-2xlarge
  776. <<: *env-ia32
  777. <<: *env-debug-build
  778. <<: *env-enable-sccache
  779. <<: *steps-electron-build
  780. linux-ia32-testing:
  781. <<: *machine-linux-2xlarge
  782. environment:
  783. <<: *env-linux-2xlarge
  784. <<: *env-ia32
  785. <<: *env-testing-build
  786. <<: *env-enable-sccache
  787. <<: *steps-electron-build-for-tests
  788. linux-ia32-chromedriver:
  789. <<: *machine-linux-medium
  790. environment:
  791. <<: *env-linux-medium
  792. <<: *env-ia32
  793. <<: *env-release-build
  794. <<: *env-enable-sccache
  795. <<: *env-send-slack-notifications
  796. <<: *steps-chromedriver-build
  797. linux-ia32-release:
  798. <<: *machine-linux-2xlarge
  799. environment:
  800. <<: *env-linux-2xlarge
  801. <<: *env-ia32
  802. <<: *env-release-build
  803. <<: *env-enable-sccache
  804. <<: *env-send-slack-notifications
  805. <<: *steps-electron-build-for-tests
  806. linux-ia32-publish:
  807. <<: *machine-linux-2xlarge
  808. environment:
  809. <<: *env-linux-2xlarge
  810. GCLIENT_EXTRA_ARGS: '--custom-var=checkout_boto=True --custom-var=checkout_requests=True'
  811. <<: *env-ia32
  812. <<: *env-release-build
  813. <<: *steps-electron-build-for-publish
  814. linux-arm-debug:
  815. <<: *machine-linux-2xlarge
  816. environment:
  817. <<: *env-linux-2xlarge
  818. <<: *env-arm
  819. <<: *env-debug-build
  820. <<: *env-enable-sccache
  821. <<: *steps-electron-build
  822. linux-arm-testing:
  823. <<: *machine-linux-2xlarge
  824. environment:
  825. <<: *env-linux-2xlarge
  826. <<: *env-arm
  827. <<: *env-testing-build
  828. <<: *env-enable-sccache
  829. TRIGGER_ARM_TEST: true
  830. <<: *steps-electron-build-for-tests
  831. linux-arm-chromedriver:
  832. <<: *machine-linux-medium
  833. environment:
  834. <<: *env-linux-medium
  835. <<: *env-arm
  836. <<: *env-release-build
  837. <<: *env-enable-sccache
  838. <<: *env-send-slack-notifications
  839. <<: *steps-chromedriver-build
  840. linux-arm-release:
  841. <<: *machine-linux-2xlarge
  842. environment:
  843. <<: *env-linux-2xlarge
  844. <<: *env-arm
  845. <<: *env-release-build
  846. <<: *env-enable-sccache
  847. <<: *env-send-slack-notifications
  848. <<: *steps-electron-build-for-tests
  849. linux-arm-publish:
  850. <<: *machine-linux-2xlarge
  851. environment:
  852. <<: *env-linux-2xlarge
  853. <<: *env-arm
  854. <<: *env-release-build
  855. GCLIENT_EXTRA_ARGS: '--custom-var=checkout_arm=True --custom-var=checkout_boto=True --custom-var=checkout_requests=True'
  856. <<: *steps-electron-build-for-publish
  857. linux-arm-native-mksnapshot:
  858. <<: *machine-linux-medium
  859. environment:
  860. <<: *env-linux-medium
  861. <<: *env-arm
  862. <<: *env-release-build
  863. <<: *env-enable-sccache
  864. <<: *env-send-slack-notifications
  865. <<: *steps-native-mksnapshot-build
  866. linux-arm64-debug:
  867. <<: *machine-linux-2xlarge
  868. environment:
  869. <<: *env-linux-2xlarge
  870. <<: *env-arm64
  871. <<: *env-debug-build
  872. <<: *env-enable-sccache
  873. <<: *steps-electron-build
  874. linux-arm64-testing:
  875. <<: *machine-linux-2xlarge
  876. environment:
  877. <<: *env-linux-2xlarge
  878. <<: *env-arm64
  879. <<: *env-testing-build
  880. <<: *env-enable-sccache
  881. TRIGGER_ARM_TEST: true
  882. <<: *steps-electron-build-for-tests
  883. linux-arm64-chromedriver:
  884. <<: *machine-linux-medium
  885. environment:
  886. <<: *env-linux-medium
  887. <<: *env-arm64
  888. <<: *env-release-build
  889. <<: *env-enable-sccache
  890. <<: *env-send-slack-notifications
  891. <<: *steps-chromedriver-build
  892. linux-arm64-release:
  893. <<: *machine-linux-2xlarge
  894. environment:
  895. <<: *env-linux-2xlarge
  896. <<: *env-arm64
  897. <<: *env-release-build
  898. <<: *env-enable-sccache
  899. <<: *env-send-slack-notifications
  900. <<: *steps-electron-build-for-tests
  901. linux-arm64-publish:
  902. <<: *machine-linux-2xlarge
  903. environment:
  904. <<: *env-linux-2xlarge
  905. <<: *env-arm64
  906. <<: *env-release-build
  907. GCLIENT_EXTRA_ARGS: '--custom-var=checkout_arm64=True --custom-var=checkout_boto=True --custom-var=checkout_requests=True'
  908. <<: *steps-electron-build-for-publish
  909. linux-arm64-native-mksnapshot:
  910. <<: *machine-linux-medium
  911. environment:
  912. <<: *env-linux-medium
  913. <<: *env-arm64
  914. <<: *env-release-build
  915. <<: *env-enable-sccache
  916. <<: *env-send-slack-notifications
  917. <<: *steps-native-mksnapshot-build
  918. osx-testing:
  919. <<: *machine-mac-large
  920. environment:
  921. <<: *env-mac-large
  922. <<: *env-testing-build
  923. <<: *env-enable-sccache
  924. <<: *steps-electron-build-for-tests
  925. osx-chromedriver:
  926. <<: *machine-mac
  927. environment:
  928. <<: *env-machine-mac
  929. <<: *env-release-build
  930. <<: *env-enable-sccache
  931. <<: *env-send-slack-notifications
  932. <<: *steps-chromedriver-build
  933. osx-release:
  934. <<: *machine-mac-large
  935. environment:
  936. <<: *env-mac-large
  937. <<: *env-release-build
  938. <<: *env-enable-sccache
  939. <<: *steps-electron-build-for-tests
  940. osx-publish:
  941. <<: *machine-mac-large
  942. environment:
  943. <<: *env-mac-large
  944. <<: *env-release-build
  945. GCLIENT_EXTRA_ARGS: '--custom-var=checkout_boto=True --custom-var=checkout_requests=True'
  946. <<: *steps-electron-build-for-publish
  947. mas-testing:
  948. <<: *machine-mac-large
  949. environment:
  950. <<: *env-mac-large
  951. <<: *env-mas
  952. <<: *env-testing-build
  953. <<: *env-enable-sccache
  954. <<: *steps-electron-build-for-tests
  955. mas-chromedriver:
  956. <<: *machine-mac
  957. environment:
  958. <<: *env-machine-mac
  959. <<: *env-release-build
  960. <<: *env-enable-sccache
  961. <<: *env-send-slack-notifications
  962. <<: *steps-chromedriver-build
  963. mas-release:
  964. <<: *machine-mac-large
  965. environment:
  966. <<: *env-mac-large
  967. <<: *env-mas
  968. <<: *env-release-build
  969. <<: *env-enable-sccache
  970. <<: *steps-electron-build-for-tests
  971. mas-publish:
  972. <<: *machine-mac-large
  973. environment:
  974. <<: *env-mac-large
  975. <<: *env-mas
  976. <<: *env-release-build
  977. GCLIENT_EXTRA_ARGS: '--custom-var=checkout_boto=True --custom-var=checkout_requests=True'
  978. <<: *steps-electron-build-for-publish
  979. # Layer 3: Tests.
  980. linux-x64-unittests:
  981. <<: *machine-linux-2xlarge
  982. environment:
  983. <<: *env-linux-2xlarge
  984. <<: *env-unittests
  985. <<: *env-testing-build
  986. <<: *env-enable-sccache
  987. <<: *env-headless-testing
  988. <<: *steps-native-tests
  989. linux-x64-disabled-unittests:
  990. <<: *machine-linux-2xlarge
  991. environment:
  992. <<: *env-linux-2xlarge
  993. <<: *env-unittests
  994. <<: *env-enable-sccache
  995. <<: *env-headless-testing
  996. TESTS_ARGS: '--only-disabled-tests'
  997. <<: *steps-native-tests
  998. linux-x64-chromium-unittests:
  999. <<: *machine-linux-2xlarge
  1000. environment:
  1001. <<: *env-linux-2xlarge
  1002. <<: *env-unittests
  1003. <<: *env-enable-sccache
  1004. <<: *env-headless-testing
  1005. TESTS_ARGS: '--include-disabled-tests'
  1006. <<: *steps-native-tests
  1007. linux-x64-browsertests:
  1008. <<: *machine-linux-2xlarge
  1009. environment:
  1010. <<: *env-linux-2xlarge
  1011. <<: *env-browsertests
  1012. <<: *env-testing-build
  1013. <<: *env-enable-sccache
  1014. <<: *env-headless-testing
  1015. <<: *steps-native-tests
  1016. linux-x64-testing-tests:
  1017. <<: *machine-linux-medium
  1018. environment:
  1019. <<: *env-linux-medium
  1020. <<: *env-headless-testing
  1021. <<: *env-stack-dumping
  1022. <<: *steps-tests
  1023. linux-x64-release-tests:
  1024. <<: *machine-linux-medium
  1025. environment:
  1026. <<: *env-linux-medium
  1027. <<: *env-headless-testing
  1028. <<: *env-send-slack-notifications
  1029. <<: *steps-tests
  1030. linux-x64-verify-ffmpeg:
  1031. <<: *machine-linux-medium
  1032. environment:
  1033. <<: *env-linux-medium
  1034. <<: *env-headless-testing
  1035. <<: *env-send-slack-notifications
  1036. <<: *steps-verify-ffmpeg
  1037. linux-x64-verify-mksnapshot:
  1038. <<: *machine-linux-medium
  1039. environment:
  1040. <<: *env-linux-medium
  1041. <<: *env-headless-testing
  1042. <<: *env-send-slack-notifications
  1043. <<: *steps-verify-mksnapshot
  1044. linux-ia32-testing-tests:
  1045. <<: *machine-linux-medium
  1046. environment:
  1047. <<: *env-linux-medium
  1048. <<: *env-ia32
  1049. <<: *env-headless-testing
  1050. <<: *env-stack-dumping
  1051. <<: *steps-tests
  1052. linux-ia32-release-tests:
  1053. <<: *machine-linux-medium
  1054. environment:
  1055. <<: *env-linux-medium
  1056. <<: *env-ia32
  1057. <<: *env-headless-testing
  1058. <<: *env-send-slack-notifications
  1059. <<: *steps-tests
  1060. linux-ia32-verify-ffmpeg:
  1061. <<: *machine-linux-medium
  1062. environment:
  1063. <<: *env-linux-medium
  1064. <<: *env-ia32
  1065. <<: *env-headless-testing
  1066. <<: *env-send-slack-notifications
  1067. <<: *steps-verify-ffmpeg
  1068. linux-ia32-verify-mksnapshot:
  1069. <<: *machine-linux-medium
  1070. environment:
  1071. <<: *env-linux-medium
  1072. <<: *env-ia32
  1073. <<: *env-headless-testing
  1074. <<: *env-send-slack-notifications
  1075. <<: *steps-verify-mksnapshot
  1076. osx-testing-tests:
  1077. <<: *machine-mac-large
  1078. environment:
  1079. <<: *env-mac-large
  1080. <<: *env-stack-dumping
  1081. <<: *env-disable-crash-reporter-tests
  1082. <<: *steps-tests
  1083. osx-release-tests:
  1084. <<: *machine-mac-large
  1085. environment:
  1086. <<: *env-mac-large
  1087. <<: *env-stack-dumping
  1088. <<: *env-send-slack-notifications
  1089. <<: *env-disable-crash-reporter-tests
  1090. <<: *steps-tests
  1091. osx-verify-ffmpeg:
  1092. <<: *machine-mac
  1093. environment:
  1094. <<: *env-machine-mac
  1095. <<: *env-send-slack-notifications
  1096. <<: *steps-verify-ffmpeg
  1097. osx-verify-mksnapshot:
  1098. <<: *machine-mac
  1099. environment:
  1100. <<: *env-machine-mac
  1101. <<: *env-send-slack-notifications
  1102. <<: *steps-verify-mksnapshot
  1103. mas-testing-tests:
  1104. <<: *machine-mac-large
  1105. environment:
  1106. <<: *env-mac-large
  1107. <<: *env-stack-dumping
  1108. <<: *steps-tests
  1109. mas-release-tests:
  1110. <<: *machine-mac-large
  1111. environment:
  1112. <<: *env-mac-large
  1113. <<: *env-stack-dumping
  1114. <<: *env-send-slack-notifications
  1115. <<: *steps-tests
  1116. mas-verify-ffmpeg:
  1117. <<: *machine-mac
  1118. environment:
  1119. <<: *env-machine-mac
  1120. <<: *env-send-slack-notifications
  1121. <<: *steps-verify-ffmpeg
  1122. mas-verify-mksnapshot:
  1123. <<: *machine-mac
  1124. environment:
  1125. <<: *env-machine-mac
  1126. <<: *env-send-slack-notifications
  1127. <<: *steps-verify-mksnapshot
  1128. # Layer 4: Summary.
  1129. linux-x64-release-summary:
  1130. <<: *machine-linux-medium
  1131. environment:
  1132. <<: *env-linux-medium
  1133. <<: *env-send-slack-notifications
  1134. steps:
  1135. - *step-maybe-notify-slack-success
  1136. linux-ia32-release-summary:
  1137. <<: *machine-linux-medium
  1138. environment:
  1139. <<: *env-linux-medium
  1140. <<: *env-send-slack-notifications
  1141. steps:
  1142. - *step-maybe-notify-slack-success
  1143. linux-arm-release-summary:
  1144. <<: *machine-linux-medium
  1145. environment:
  1146. <<: *env-linux-medium
  1147. <<: *env-send-slack-notifications
  1148. steps:
  1149. - *step-maybe-notify-slack-success
  1150. linux-arm64-release-summary:
  1151. <<: *machine-linux-medium
  1152. environment:
  1153. <<: *env-linux-medium
  1154. <<: *env-send-slack-notifications
  1155. steps:
  1156. - *step-maybe-notify-slack-success
  1157. mas-release-summary:
  1158. <<: *machine-mac
  1159. environment:
  1160. <<: *env-machine-mac
  1161. <<: *env-send-slack-notifications
  1162. steps:
  1163. - *step-maybe-notify-slack-success
  1164. osx-release-summary:
  1165. <<: *machine-mac
  1166. environment:
  1167. <<: *env-machine-mac
  1168. <<: *env-send-slack-notifications
  1169. steps:
  1170. - *step-maybe-notify-slack-success
  1171. workflows:
  1172. version: 2
  1173. lint:
  1174. jobs:
  1175. - lint
  1176. build-linux:
  1177. jobs:
  1178. - linux-checkout
  1179. - linux-x64-debug:
  1180. requires:
  1181. - linux-checkout
  1182. - linux-x64-testing:
  1183. requires:
  1184. - linux-checkout
  1185. - linux-x64-testing-tests:
  1186. requires:
  1187. - linux-x64-testing
  1188. - linux-ia32-debug:
  1189. requires:
  1190. - linux-checkout
  1191. - linux-ia32-testing:
  1192. requires:
  1193. - linux-checkout
  1194. - linux-ia32-testing-tests:
  1195. requires:
  1196. - linux-ia32-testing
  1197. - linux-arm-debug:
  1198. requires:
  1199. - linux-checkout
  1200. - linux-arm-testing:
  1201. requires:
  1202. - linux-checkout
  1203. - linux-arm64-debug:
  1204. requires:
  1205. - linux-checkout
  1206. - linux-arm64-testing:
  1207. requires:
  1208. - linux-checkout
  1209. build-mac:
  1210. jobs:
  1211. - mac-checkout
  1212. - osx-testing:
  1213. requires:
  1214. - mac-checkout
  1215. - osx-testing-tests:
  1216. requires:
  1217. - osx-testing
  1218. - mas-testing:
  1219. requires:
  1220. - mac-checkout
  1221. - mas-testing-tests:
  1222. requires:
  1223. - mas-testing
  1224. nightly-linux-release-test:
  1225. triggers:
  1226. - schedule:
  1227. cron: "0 0 * * *"
  1228. filters:
  1229. branches:
  1230. only:
  1231. - master
  1232. - *chromium-upgrade-branches
  1233. jobs:
  1234. - linux-checkout
  1235. - linux-x64-release:
  1236. requires:
  1237. - linux-checkout
  1238. - linux-x64-release-tests:
  1239. requires:
  1240. - linux-x64-release
  1241. - linux-x64-verify-ffmpeg:
  1242. requires:
  1243. - linux-x64-release
  1244. - linux-x64-verify-mksnapshot:
  1245. requires:
  1246. - linux-x64-release
  1247. - linux-x64-chromedriver:
  1248. requires:
  1249. - linux-checkout
  1250. - linux-x64-release-summary:
  1251. requires:
  1252. - linux-x64-release
  1253. - linux-x64-release-tests
  1254. - linux-x64-verify-ffmpeg
  1255. - linux-x64-chromedriver
  1256. - linux-ia32-release:
  1257. requires:
  1258. - linux-checkout
  1259. - linux-ia32-release-tests:
  1260. requires:
  1261. - linux-ia32-release
  1262. - linux-ia32-verify-ffmpeg:
  1263. requires:
  1264. - linux-ia32-release
  1265. - linux-ia32-verify-mksnapshot:
  1266. requires:
  1267. - linux-ia32-release
  1268. - linux-ia32-chromedriver:
  1269. requires:
  1270. - linux-checkout
  1271. - linux-ia32-release-summary:
  1272. requires:
  1273. - linux-ia32-release
  1274. - linux-ia32-release-tests
  1275. - linux-ia32-verify-ffmpeg
  1276. - linux-ia32-chromedriver
  1277. - linux-arm-release:
  1278. requires:
  1279. - linux-checkout
  1280. - linux-arm-native-mksnapshot:
  1281. requires:
  1282. - linux-checkout
  1283. - linux-arm-chromedriver:
  1284. requires:
  1285. - linux-checkout
  1286. - linux-arm-release-summary:
  1287. requires:
  1288. - linux-arm-release
  1289. - linux-arm-chromedriver
  1290. - linux-arm-native-mksnapshot
  1291. - linux-arm64-release:
  1292. requires:
  1293. - linux-checkout
  1294. - linux-arm64-native-mksnapshot:
  1295. requires:
  1296. - linux-checkout
  1297. - linux-arm64-chromedriver:
  1298. requires:
  1299. - linux-checkout
  1300. - linux-arm64-release-summary:
  1301. requires:
  1302. - linux-arm64-release
  1303. - linux-arm64-chromedriver
  1304. - linux-arm64-native-mksnapshot
  1305. nightly-mac-release-test:
  1306. triggers:
  1307. - schedule:
  1308. cron: "0 0 * * *"
  1309. filters:
  1310. branches:
  1311. only:
  1312. - master
  1313. - *chromium-upgrade-branches
  1314. jobs:
  1315. - mac-checkout
  1316. - osx-release:
  1317. requires:
  1318. - mac-checkout
  1319. - osx-release-tests:
  1320. requires:
  1321. - osx-release
  1322. - osx-verify-ffmpeg:
  1323. requires:
  1324. - osx-release
  1325. - osx-verify-mksnapshot:
  1326. requires:
  1327. - osx-release
  1328. - osx-chromedriver:
  1329. requires:
  1330. - mac-checkout
  1331. - osx-release-summary:
  1332. requires:
  1333. - osx-release
  1334. - osx-release-tests
  1335. - osx-verify-ffmpeg
  1336. - osx-chromedriver
  1337. - mas-release:
  1338. requires:
  1339. - mac-checkout
  1340. - mas-release-tests:
  1341. requires:
  1342. - mas-release
  1343. - mas-verify-ffmpeg:
  1344. requires:
  1345. - mas-release
  1346. - mas-verify-mksnapshot:
  1347. requires:
  1348. - mas-release
  1349. - mas-chromedriver:
  1350. requires:
  1351. - mac-checkout
  1352. - mas-release-summary:
  1353. requires:
  1354. - mas-release
  1355. - mas-release-tests
  1356. - mas-verify-ffmpeg
  1357. - mas-chromedriver
  1358. # Various slow and non-essential checks we run only nightly.
  1359. # Sanitizer jobs should be added here.
  1360. linux-checks-nightly:
  1361. triggers:
  1362. - schedule:
  1363. cron: "0 0 * * *"
  1364. filters:
  1365. branches:
  1366. only:
  1367. - master
  1368. - *chromium-upgrade-branches
  1369. jobs:
  1370. - linux-checkout-for-native-tests
  1371. # TODO(alexeykuzmin): Enable it back.
  1372. # Tons of crashes right now, see
  1373. # https://circleci.com/gh/electron/electron/67463
  1374. # - linux-x64-browsertests:
  1375. # requires:
  1376. # - linux-checkout-for-native-tests
  1377. - linux-x64-unittests:
  1378. requires:
  1379. - linux-checkout-for-native-tests