config.yml 59 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105
  1. version: 2.1
  2. parameters:
  3. upload-to-s3:
  4. type: string
  5. default: '1'
  6. run-lint:
  7. type: boolean
  8. default: true
  9. run-build-linux:
  10. type: boolean
  11. default: true
  12. run-build-mac:
  13. type: boolean
  14. default: true
  15. run-linux-x64-publish:
  16. type: boolean
  17. default: false
  18. run-linux-ia32-publish:
  19. type: boolean
  20. default: false
  21. run-linux-arm-publish:
  22. type: boolean
  23. default: false
  24. run-linux-arm64-publish:
  25. type: boolean
  26. default: false
  27. run-osx-publish:
  28. type: boolean
  29. default: false
  30. run-mas-publish:
  31. type: boolean
  32. default: false
  33. # The config expects the following environment variables to be set:
  34. # - "SLACK_WEBHOOK" Slack hook URL to send notifications.
  35. #
  36. # The publishing scripts expect access tokens to be defined as env vars,
  37. # but those are not covered here.
  38. #
  39. # CircleCI docs on variables:
  40. # https://circleci.com/docs/2.0/env-vars/
  41. # Build machines configs.
  42. docker-image: &docker-image
  43. docker:
  44. - image: electronbuilds/electron:0.0.10
  45. machine-linux-medium: &machine-linux-medium
  46. <<: *docker-image
  47. resource_class: medium
  48. machine-linux-2xlarge: &machine-linux-2xlarge
  49. <<: *docker-image
  50. resource_class: 2xlarge
  51. machine-mac: &machine-mac
  52. macos:
  53. xcode: "9.4.1"
  54. machine-mac-large: &machine-mac-large
  55. resource_class: large
  56. macos:
  57. xcode: "9.4.1"
  58. # Build configurations options.
  59. env-debug-build: &env-debug-build
  60. GN_CONFIG: //electron/build/args/debug.gn
  61. env-testing-build: &env-testing-build
  62. GN_CONFIG: //electron/build/args/testing.gn
  63. CHECK_DIST_MANIFEST: '1'
  64. env-release-build: &env-release-build
  65. GN_CONFIG: //electron/build/args/release.gn
  66. STRIP_BINARIES: true
  67. GENERATE_SYMBOLS: true
  68. CHECK_DIST_MANIFEST: '1'
  69. env-headless-testing: &env-headless-testing
  70. DISPLAY: ':99.0'
  71. env-stack-dumping: &env-stack-dumping
  72. ELECTRON_ENABLE_STACK_DUMPING: '1'
  73. env-browsertests: &env-browsertests
  74. GN_CONFIG: //electron/build/args/native_tests.gn
  75. BUILD_TARGET: electron/spec:chromium_browsertests
  76. TESTS_CONFIG: src/electron/spec/configs/browsertests.yml
  77. env-unittests: &env-unittests
  78. GN_CONFIG: //electron/build/args/native_tests.gn
  79. BUILD_TARGET: electron/spec:chromium_unittests
  80. TESTS_CONFIG: src/electron/spec/configs/unittests.yml
  81. # Build targets options.
  82. env-ia32: &env-ia32
  83. GN_EXTRA_ARGS: 'target_cpu = "x86"'
  84. NPM_CONFIG_ARCH: ia32
  85. TARGET_ARCH: ia32
  86. env-arm: &env-arm
  87. GN_EXTRA_ARGS: 'target_cpu = "arm"'
  88. MKSNAPSHOT_TOOLCHAIN: //build/toolchain/linux:clang_arm
  89. BUILD_NATIVE_MKSNAPSHOT: 1
  90. TARGET_ARCH: arm
  91. env-arm64: &env-arm64
  92. GN_EXTRA_ARGS: 'target_cpu = "arm64" fatal_linker_warnings = false enable_linux_installer = false'
  93. MKSNAPSHOT_TOOLCHAIN: //build/toolchain/linux:clang_arm64
  94. BUILD_NATIVE_MKSNAPSHOT: 1
  95. TARGET_ARCH: arm64
  96. env-mas: &env-mas
  97. GN_EXTRA_ARGS: 'is_mas_build = true'
  98. MAS_BUILD: 'true'
  99. # Misc build configuration options.
  100. env-enable-sccache: &env-enable-sccache
  101. USE_SCCACHE: true
  102. env-send-slack-notifications: &env-send-slack-notifications
  103. NOTIFY_SLACK: true
  104. env-global: &env-global
  105. ELECTRON_OUT_DIR: Default
  106. env-linux-medium: &env-linux-medium
  107. <<: *env-global
  108. NUMBER_OF_NINJA_PROCESSES: 3
  109. env-linux-2xlarge: &env-linux-2xlarge
  110. <<: *env-global
  111. NUMBER_OF_NINJA_PROCESSES: 34
  112. env-linux-2xlarge-release: &env-linux-2xlarge-release
  113. <<: *env-global
  114. NUMBER_OF_NINJA_PROCESSES: 16
  115. env-machine-mac: &env-machine-mac
  116. <<: *env-global
  117. NUMBER_OF_NINJA_PROCESSES: 6
  118. env-mac-large: &env-mac-large
  119. <<: *env-global
  120. NUMBER_OF_NINJA_PROCESSES: 18
  121. env-mac-large-release: &env-mac-large-release
  122. <<: *env-global
  123. NUMBER_OF_NINJA_PROCESSES: 8
  124. env-disable-crash-reporter-tests: &env-disable-crash-reporter-tests
  125. DISABLE_CRASH_REPORTER_TESTS: true
  126. env-ninja-status: &env-ninja-status
  127. NINJA_STATUS: "[%r processes, %f/%t @ %o/s : %es] "
  128. env-disable-run-as-node: &env-disable-run-as-node
  129. GN_BUILDFLAG_ARGS: 'enable_run_as_node = false'
  130. # Individual (shared) steps.
  131. step-maybe-notify-slack-failure: &step-maybe-notify-slack-failure
  132. run:
  133. name: Send a Slack notification on failure
  134. command: |
  135. if [ "$NOTIFY_SLACK" == "true" ]; then
  136. export MESSAGE="Build failed for *<$CIRCLE_BUILD_URL|$CIRCLE_JOB>* nightly build from *$CIRCLE_BRANCH*."
  137. curl -g -H "Content-Type: application/json" -X POST \
  138. -d "{\"text\": \"$MESSAGE\", \"attachments\": [{\"color\": \"#FC5C3C\",\"title\": \"$CIRCLE_JOB nightly build results\",\"title_link\": \"$CIRCLE_BUILD_URL\"}]}" $SLACK_WEBHOOK
  139. fi
  140. when: on_fail
  141. step-maybe-notify-slack-success: &step-maybe-notify-slack-success
  142. run:
  143. name: Send a Slack notification on success
  144. command: |
  145. if [ "$NOTIFY_SLACK" == "true" ]; then
  146. export MESSAGE="Build succeeded for *<$CIRCLE_BUILD_URL|$CIRCLE_JOB>* nightly build from *$CIRCLE_BRANCH*."
  147. curl -g -H "Content-Type: application/json" -X POST \
  148. -d "{\"text\": \"$MESSAGE\", \"attachments\": [{\"color\": \"good\",\"title\": \"$CIRCLE_JOB nightly build results\",\"title_link\": \"$CIRCLE_BUILD_URL\"}]}" $SLACK_WEBHOOK
  149. fi
  150. when: on_success
  151. step-checkout-electron: &step-checkout-electron
  152. checkout:
  153. path: src/electron
  154. step-depot-tools-get: &step-depot-tools-get
  155. run:
  156. name: Get depot tools
  157. command: |
  158. git clone --depth=1 https://chromium.googlesource.com/chromium/tools/depot_tools.git
  159. step-depot-tools-add-to-path: &step-depot-tools-add-to-path
  160. run:
  161. name: Add depot tools to PATH
  162. command: echo 'export PATH="$PATH:'"$PWD"'/depot_tools"' >> $BASH_ENV
  163. step-gclient-sync: &step-gclient-sync
  164. run:
  165. name: Gclient sync
  166. command: |
  167. # If we did not restore a complete sync then we need to sync for realz
  168. if [ ! -s "src/electron/.circle-sync-done" ]; then
  169. gclient config \
  170. --name "src/electron" \
  171. --unmanaged \
  172. $GCLIENT_EXTRA_ARGS \
  173. "$CIRCLE_REPOSITORY_URL"
  174. ELECTRON_USE_THREE_WAY_MERGE_FOR_PATCHES=1 gclient sync --with_branch_heads --with_tags
  175. # Re-export all the patches to check if there were changes.
  176. python src/electron/script/export_all_patches.py src/electron/patches/config.json
  177. cd src/electron
  178. git update-index --refresh || true
  179. if ! git diff-index --quiet HEAD --; then
  180. # There are changes to the patches. Make a git commit with the updated patches
  181. git add patches
  182. GIT_COMMITTER_NAME="Electron Bot" GIT_COMMITTER_EMAIL="[email protected]" git commit -m "update patches" --author="Electron Bot <[email protected]>"
  183. # Export it
  184. mkdir -p ../../patches
  185. git format-patch -1 --stdout --keep-subject --no-stat --full-index > ../../patches/update-patches.patch
  186. echo
  187. echo "======================================================================"
  188. echo "There were changes to the patches when applying."
  189. echo "Check the CI artifacts for a patch you can apply to fix it."
  190. echo "======================================================================"
  191. exit 1
  192. fi
  193. fi
  194. step-setup-env-for-build: &step-setup-env-for-build
  195. run:
  196. name: Setup Environment Variables
  197. command: |
  198. # To find `gn` executable.
  199. echo 'export CHROMIUM_BUILDTOOLS_PATH="'"$PWD"'/src/buildtools"' >> $BASH_ENV
  200. if [ "$USE_SCCACHE" == "true" ]; then
  201. # https://github.com/mozilla/sccache
  202. SCCACHE_PATH="$PWD/src/electron/external_binaries/sccache"
  203. echo 'export SCCACHE_PATH="'"$SCCACHE_PATH"'"' >> $BASH_ENV
  204. if [ "$CIRCLE_PR_NUMBER" != "" ]; then
  205. #if building a fork set readonly access to sccache
  206. echo 'export SCCACHE_BUCKET="electronjs-sccache-ci"' >> $BASH_ENV
  207. echo 'export SCCACHE_TWO_TIER=true' >> $BASH_ENV
  208. fi
  209. fi
  210. step-restore-brew-cache: &step-restore-brew-cache
  211. restore_cache:
  212. paths:
  213. - /usr/local/Homebrew
  214. keys:
  215. - v1-brew-cache-{{ arch }}
  216. step-save-brew-cache: &step-save-brew-cache
  217. save_cache:
  218. paths:
  219. - /usr/local/Homebrew
  220. key: v1-brew-cache-{{ arch }}
  221. name: Persisting brew cache
  222. step-get-more-space-on-mac: &step-get-more-space-on-mac
  223. run:
  224. name: Free up space on MacOS
  225. command: |
  226. if [ "`uname`" == "Darwin" ]; then
  227. sudo rm -rf /Library/Developer/CoreSimulator
  228. fi
  229. step-delete-git-directories: &step-delete-git-directories
  230. run:
  231. name: Delete src/.git directory on MacOS to free space
  232. command: |
  233. if [ "`uname`" == "Darwin" ]; then
  234. sudo rm -rf src/.git
  235. fi
  236. # On macOS the yarn install command during gclient sync was run on a linux
  237. # machine and therefore installed a slightly different set of dependencies
  238. # Notably "fsevents" is a macOS only dependency, we rerun yarn install once
  239. # we are on a macOS machine to get the correct state
  240. step-install-npm-deps-on-mac: &step-install-npm-deps-on-mac
  241. run:
  242. name: Install node_modules on MacOS
  243. command: |
  244. if [ "`uname`" == "Darwin" ]; then
  245. cd src/electron
  246. node script/yarn install
  247. fi
  248. # This step handles the differences between the linux "gclient sync"
  249. # and the expected state on macOS
  250. step-fix-sync-on-mac: &step-fix-sync-on-mac
  251. run:
  252. name: Fix Sync on macOS
  253. command: |
  254. if [ "`uname`" == "Darwin" ]; then
  255. # Fix Clang Install (wrong binary)
  256. rm -rf src/third_party/llvm-build
  257. python src/tools/clang/scripts/update.py
  258. # Fix Framework Header Installs (symlinks not retained)
  259. rm -rf src/electron/external_binaries
  260. python src/electron/script/update-external-binaries.py
  261. fi
  262. step-install-signing-cert-on-mac: &step-install-signing-cert-on-mac
  263. run:
  264. name: Import and trust self-signed codesigning cert on MacOS
  265. command: |
  266. if [ "`uname`" == "Darwin" ]; then
  267. cd src/electron
  268. ./script/codesign/generate-identity.sh
  269. fi
  270. step-install-gnutar-on-mac: &step-install-gnutar-on-mac
  271. run:
  272. name: Install gnu-tar on macos
  273. command: |
  274. if [ "`uname`" == "Darwin" ]; then
  275. brew update
  276. brew install gnu-tar
  277. ln -fs /usr/local/bin/gtar /usr/local/bin/tar
  278. fi
  279. step-gn-gen-default: &step-gn-gen-default
  280. run:
  281. name: Default GN gen
  282. command: |
  283. cd src
  284. gn gen out/Default --args='import("'$GN_CONFIG'") cc_wrapper="'"$SCCACHE_PATH"'"'" $GN_EXTRA_ARGS $GN_BUILDFLAG_ARGS"
  285. step-gn-check: &step-gn-check
  286. run:
  287. name: GN check
  288. command: |
  289. cd src
  290. gn check out/Default //electron:electron_lib
  291. gn check out/Default //electron:electron_app
  292. gn check out/Default //electron:manifests
  293. gn check out/Default //electron/shell/common/api:mojo
  294. step-electron-build: &step-electron-build
  295. run:
  296. name: Electron build
  297. no_output_timeout: 30m
  298. command: |
  299. cd src
  300. ninja -C out/Default electron -j $NUMBER_OF_NINJA_PROCESSES
  301. step-maybe-electron-dist-strip: &step-maybe-electron-dist-strip
  302. run:
  303. name: Strip electron binaries
  304. command: |
  305. if [ "$STRIP_BINARIES" == "true" ] && [ "`uname`" == "Linux" ]; then
  306. if [ x"$TARGET_ARCH" == x ]; then
  307. target_cpu=x64
  308. elif [ "$TARGET_ARCH" == "ia32" ]; then
  309. target_cpu=x86
  310. else
  311. target_cpu="$TARGET_ARCH"
  312. fi
  313. cd src
  314. electron/script/copy-debug-symbols.py --target-cpu="$target_cpu" --out-dir=out/Default/debug --compress
  315. electron/script/strip-binaries.py --target-cpu="$target_cpu"
  316. electron/script/add-debug-link.py --target-cpu="$target_cpu" --debug-dir=out/Default/debug
  317. fi
  318. step-electron-dist-build: &step-electron-dist-build
  319. run:
  320. name: Build dist.zip
  321. command: |
  322. cd src
  323. ninja -C out/Default electron:electron_dist_zip
  324. if [ "$CHECK_DIST_MANIFEST" == "1" ]; then
  325. if [ "`uname`" == "Darwin" ]; then
  326. target_os=mac
  327. target_cpu=x64
  328. if [ x"$MAS_BUILD" == x"true" ]; then
  329. target_os=mac_mas
  330. fi
  331. elif [ "`uname`" == "Linux" ]; then
  332. target_os=linux
  333. if [ x"$TARGET_ARCH" == x ]; then
  334. target_cpu=x64
  335. elif [ "$TARGET_ARCH" == "ia32" ]; then
  336. target_cpu=x86
  337. else
  338. target_cpu="$TARGET_ARCH"
  339. fi
  340. else
  341. echo "Unknown system: `uname`"
  342. exit 1
  343. fi
  344. electron/script/zip_manifests/check-zip-manifest.py out/Default/dist.zip electron/script/zip_manifests/dist_zip.$target_os.$target_cpu.manifest
  345. fi
  346. step-electron-dist-store: &step-electron-dist-store
  347. store_artifacts:
  348. path: src/out/Default/dist.zip
  349. destination: dist.zip
  350. step-electron-chromedriver-build: &step-electron-chromedriver-build
  351. run:
  352. name: Build chromedriver.zip
  353. command: |
  354. cd src
  355. ninja -C out/Default chrome/test/chromedriver -j $NUMBER_OF_NINJA_PROCESSES
  356. if [ "`uname`" == "Linux" ]; then
  357. electron/script/strip-binaries.py --target-cpu="$TARGET_ARCH" --file $PWD/out/Default/chromedriver
  358. fi
  359. ninja -C out/Default electron:electron_chromedriver_zip
  360. step-electron-chromedriver-store: &step-electron-chromedriver-store
  361. store_artifacts:
  362. path: src/out/Default/chromedriver.zip
  363. destination: chromedriver.zip
  364. step-nodejs-headers-build: &step-nodejs-headers-build
  365. run:
  366. name: Build Node.js headers
  367. command: |
  368. cd src
  369. ninja -C out/Default third_party/electron_node:headers
  370. step-nodejs-headers-store: &step-nodejs-headers-store
  371. store_artifacts:
  372. path: src/out/Default/gen/node_headers.tar.gz
  373. destination: node_headers.tar.gz
  374. step-electron-publish: &step-electron-publish
  375. run:
  376. name: Publish Electron Dist
  377. command: |
  378. cd src/electron
  379. if [ "$UPLOAD_TO_S3" == "1" ]; then
  380. echo 'Uploading Electron release distribution to S3'
  381. script/release/uploaders/upload.py --upload_to_s3
  382. else
  383. echo 'Uploading Electron release distribution to Github releases'
  384. script/release/uploaders/upload.py
  385. fi
  386. step-persist-data-for-tests: &step-persist-data-for-tests
  387. persist_to_workspace:
  388. root: .
  389. paths:
  390. # Build artifacts
  391. - src/out/Default/dist.zip
  392. - src/out/Default/mksnapshot.zip
  393. - src/out/Default/gen/node_headers
  394. - src/out/ffmpeg/ffmpeg.zip
  395. step-electron-dist-unzip: &step-electron-dist-unzip
  396. run:
  397. name: Unzip dist.zip
  398. command: |
  399. cd src/out/Default
  400. # -o overwrite files WITHOUT prompting
  401. # TODO(alexeykuzmin): Remove '-o' when it's no longer needed.
  402. unzip -o dist.zip
  403. step-ffmpeg-unzip: &step-ffmpeg-unzip
  404. run:
  405. name: Unzip ffmpeg.zip
  406. command: |
  407. cd src/out/ffmpeg
  408. unzip -o ffmpeg.zip
  409. step-mksnapshot-unzip: &step-mksnapshot-unzip
  410. run:
  411. name: Unzip mksnapshot.zip
  412. command: |
  413. cd src/out/Default
  414. unzip -o mksnapshot.zip
  415. step-ffmpeg-gn-gen: &step-ffmpeg-gn-gen
  416. run:
  417. name: ffmpeg GN gen
  418. command: |
  419. cd src
  420. gn gen out/ffmpeg --args='import("//electron/build/args/ffmpeg.gn") cc_wrapper="'"$SCCACHE_PATH"'"'" $GN_EXTRA_ARGS"
  421. step-ffmpeg-build: &step-ffmpeg-build
  422. run:
  423. name: Non proprietary ffmpeg build
  424. command: |
  425. cd src
  426. ninja -C out/ffmpeg electron:electron_ffmpeg_zip -j $NUMBER_OF_NINJA_PROCESSES
  427. step-verify-ffmpeg: &step-verify-ffmpeg
  428. run:
  429. name: Verify ffmpeg
  430. command: |
  431. cd src
  432. python electron/script/verify-ffmpeg.py --source-root "$PWD" --build-dir out/Default --ffmpeg-path out/ffmpeg
  433. step-ffmpeg-store: &step-ffmpeg-store
  434. store_artifacts:
  435. path: src/out/ffmpeg/ffmpeg.zip
  436. destination: ffmpeg.zip
  437. step-verify-mksnapshot: &step-verify-mksnapshot
  438. run:
  439. name: Verify mksnapshot
  440. command: |
  441. cd src
  442. python electron/script/verify-mksnapshot.py --source-root "$PWD" --build-dir out/Default
  443. step-setup-linux-for-headless-testing: &step-setup-linux-for-headless-testing
  444. run:
  445. name: Setup for headless testing
  446. command: |
  447. if [ "`uname`" != "Darwin" ]; then
  448. sh -e /etc/init.d/xvfb start
  449. fi
  450. step-show-sccache-stats: &step-show-sccache-stats
  451. run:
  452. name: Check sccache stats after build
  453. command: |
  454. if [ "$SCCACHE_PATH" != "" ]; then
  455. $SCCACHE_PATH -s
  456. fi
  457. step-mksnapshot-build: &step-mksnapshot-build
  458. run:
  459. name: mksnapshot build
  460. command: |
  461. cd src
  462. ninja -C out/Default electron:electron_mksnapshot -j $NUMBER_OF_NINJA_PROCESSES
  463. if [ "`uname`" != "Darwin" ]; then
  464. if [ "$TARGET_ARCH" == "arm" ]; then
  465. electron/script/strip-binaries.py --file $PWD/out/Default/clang_x86_v8_arm/mksnapshot
  466. electron/script/strip-binaries.py --file $PWD/out/Default/clang_x86_v8_arm/v8_context_snapshot_generator
  467. elif [ "$TARGET_ARCH" == "arm64" ]; then
  468. electron/script/strip-binaries.py --file $PWD/out/Default/clang_x64_v8_arm64/mksnapshot
  469. electron/script/strip-binaries.py --file $PWD/out/Default/clang_x64_v8_arm64/v8_context_snapshot_generator
  470. else
  471. electron/script/strip-binaries.py --file $PWD/out/Default/mksnapshot
  472. electron/script/strip-binaries.py --file $PWD/out/Default/v8_context_snapshot_generator
  473. fi
  474. fi
  475. ninja -C out/Default electron:electron_mksnapshot_zip -j $NUMBER_OF_NINJA_PROCESSES
  476. step-mksnapshot-store: &step-mksnapshot-store
  477. store_artifacts:
  478. path: src/out/Default/mksnapshot.zip
  479. destination: mksnapshot.zip
  480. step-maybe-generate-breakpad-symbols: &step-maybe-generate-breakpad-symbols
  481. run:
  482. name: Generate breakpad symbols
  483. command: |
  484. if [ "$GENERATE_SYMBOLS" == "true" ]; then
  485. cd src
  486. ninja -C out/Default electron:electron_symbols
  487. cd out/Default/breakpad_symbols
  488. find . -name \*.sym -print0 | xargs -0 npx @sentry/[email protected] difutil bundle-sources
  489. fi
  490. step-maybe-zip-symbols: &step-maybe-zip-symbols
  491. run:
  492. name: Zip symbols
  493. command: |
  494. cd src
  495. export BUILD_PATH="$PWD/out/Default"
  496. electron/script/zip-symbols.py -b $BUILD_PATH
  497. step-maybe-cross-arch-snapshot: &step-maybe-cross-arch-snapshot
  498. run:
  499. name: Generate cross arch snapshot (arm/arm64)
  500. command: |
  501. if [ "$TRIGGER_ARM_TEST" == "true" ] && [ -z "$CIRCLE_PR_NUMBER" ]; then
  502. cd src
  503. if [ "$TARGET_ARCH" == "arm" ]; then
  504. export MKSNAPSHOT_PATH="clang_x86_v8_arm"
  505. elif [ "$TARGET_ARCH" == "arm64" ]; then
  506. export MKSNAPSHOT_PATH="clang_x64_v8_arm64"
  507. fi
  508. cp "out/Default/$MKSNAPSHOT_PATH/mksnapshot" out/Default
  509. cp "out/Default/$MKSNAPSHOT_PATH/libffmpeg.so" out/Default
  510. cp "out/Default/$MKSNAPSHOT_PATH/v8_context_snapshot_generator" out/Default
  511. python electron/script/verify-mksnapshot.py --source-root "$PWD" --build-dir out/Default --create-snapshot-only
  512. mkdir cross-arch-snapshots
  513. cp out/Default-mksnapshot-test/*.bin cross-arch-snapshots
  514. fi
  515. step-maybe-cross-arch-snapshot-store: &step-maybe-cross-arch-snapshot-store
  516. store_artifacts:
  517. path: src/cross-arch-snapshots
  518. destination: cross-arch-snapshots
  519. step-maybe-trigger-arm-test: &step-maybe-trigger-arm-test
  520. run:
  521. name: Trigger an arm test on VSTS if applicable
  522. command: |
  523. cd src
  524. # Only run for non-fork prs
  525. if [ "$TRIGGER_ARM_TEST" == "true" ] && [ -z "$CIRCLE_PR_NUMBER" ]; then
  526. #Trigger VSTS job, passing along CircleCI job number and branch to build
  527. echo "Triggering electron-$TARGET_ARCH-testing build on VSTS"
  528. node electron/script/release/ci-release-build.js --job=electron-$TARGET_ARCH-testing --ci=VSTS --armTest --circleBuildNum=$CIRCLE_BUILD_NUM $CIRCLE_BRANCH
  529. fi
  530. step-maybe-generate-typescript-defs: &step-maybe-generate-typescript-defs
  531. run:
  532. name: Generate type declarations
  533. command: |
  534. if [ "`uname`" == "Darwin" ]; then
  535. cd src/electron
  536. node script/yarn create-typescript-definitions
  537. fi
  538. step-fix-known-hosts-linux: &step-fix-known-hosts-linux
  539. run:
  540. name: Fix Known Hosts on Linux
  541. command: |
  542. if [ "`uname`" == "Linux" ]; then
  543. ./src/electron/.circleci/fix-known-hosts.sh
  544. fi
  545. step-ninja-summary: &step-ninja-summary
  546. run:
  547. name: Print ninja summary
  548. command: |
  549. python depot_tools/post_build_ninja_summary.py -C src/out/Default
  550. # Checkout Steps
  551. step-generate-deps-hash: &step-generate-deps-hash
  552. run:
  553. name: Generate DEPS Hash
  554. command: node src/electron/script/generate-deps-hash.js
  555. step-touch-sync-done: &step-touch-sync-done
  556. run:
  557. name: Touch Sync Done
  558. command: touch src/electron/.circle-sync-done
  559. # Restore exact src cache based on the hash of DEPS and patches/*
  560. # If no cache is matched EXACTLY then the .circle-sync-done file is empty
  561. # If a cache is matched EXACTLY then the .circle-sync-done file contains "done"
  562. step-maybe-restore-src-cache: &step-maybe-restore-src-cache
  563. restore_cache:
  564. paths:
  565. - ./src
  566. keys:
  567. - v5-src-cache-{{ arch }}-{{ checksum "src/electron/.depshash" }}
  568. name: Restoring src cache
  569. # Restore exact or closest git cache based on the hash of DEPS and .circle-sync-done
  570. # If the src cache was restored above then this will match an empty cache
  571. # If the src cache was not restored above then this will match a close git cache
  572. step-maybe-restore-git-cache: &step-maybe-restore-git-cache
  573. restore_cache:
  574. paths:
  575. - ~/.gclient-cache
  576. keys:
  577. - v2-gclient-cache-{{ arch }}-{{ checksum "src/electron/.circle-sync-done" }}-{{ checksum "src/electron/DEPS" }}
  578. - v2-gclient-cache-{{ arch }}-{{ checksum "src/electron/.circle-sync-done" }}
  579. name: Conditionally restoring git cache
  580. step-set-git-cache-path: &step-set-git-cache-path
  581. run:
  582. name: Set GIT_CACHE_PATH to make gclient to use the cache
  583. command: |
  584. # CircleCI does not support interpolation when setting environment variables.
  585. # https://circleci.com/docs/2.0/env-vars/#setting-an-environment-variable-in-a-shell-command
  586. echo 'export GIT_CACHE_PATH="$HOME/.gclient-cache"' >> $BASH_ENV
  587. # Persist the git cache based on the hash of DEPS and .circle-sync-done
  588. # If the src cache was restored above then this will persist an empty cache
  589. step-save-git-cache: &step-save-git-cache
  590. save_cache:
  591. paths:
  592. - ~/.gclient-cache
  593. key: v2-gclient-cache-{{ arch }}-{{ checksum "src/electron/.circle-sync-done" }}-{{ checksum "src/electron/DEPS" }}
  594. name: Persisting git cache
  595. step-run-electron-only-hooks: &step-run-electron-only-hooks
  596. run:
  597. name: Run Electron Only Hooks
  598. command: gclient runhooks --spec="solutions=[{'name':'src/electron','url':None,'deps_file':'DEPS','custom_vars':{'process_deps':False},'managed':False}]"
  599. step-generate-deps-hash-cleanly: &step-generate-deps-hash-cleanly
  600. run:
  601. name: Generate DEPS Hash
  602. command: (cd src/electron && git checkout .) && node src/electron/script/generate-deps-hash.js
  603. # Mark the sync as done for future cache saving
  604. step-mark-sync-done: &step-mark-sync-done
  605. run:
  606. name: Mark Sync Done
  607. command: echo DONE > src/electron/.circle-sync-done
  608. # Minimize the size of the cache
  609. step-minimize-workspace-size-from-checkout: &step-minimize-workspace-size-from-checkout
  610. run:
  611. name: Remove some unused data to avoid storing it in the workspace/cache
  612. command: |
  613. rm -rf src/android_webview
  614. rm -rf src/ios
  615. rm -rf src/third_party/blink/web_tests
  616. rm -rf src/third_party/blink/perf_tests
  617. rm -rf src/third_party/hunspell_dictionaries
  618. rm -rf src/third_party/WebKit/LayoutTests
  619. # Save the src cache based on the deps hash
  620. step-save-src-cache: &step-save-src-cache
  621. save_cache:
  622. paths:
  623. - ./src
  624. key: v5-src-cache-{{ arch }}-{{ checksum "src/electron/.depshash" }}
  625. name: Persisting src cache
  626. # Lists of steps.
  627. steps-lint: &steps-lint
  628. steps:
  629. - *step-checkout-electron
  630. - run:
  631. name: Setup third_party Depot Tools
  632. command: |
  633. # "depot_tools" has to be checkout into "//third_party/depot_tools" so pylint.py can a "pylintrc" file.
  634. git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git src/third_party/depot_tools
  635. echo 'export PATH="$PATH:'"$PWD"'/src/third_party/depot_tools"' >> $BASH_ENV
  636. - run:
  637. name: Download GN Binary
  638. command: |
  639. chromium_revision="$(grep -A1 chromium_version src/electron/DEPS | tr -d '\n' | cut -d\' -f4)"
  640. gn_version="$(curl -sL "https://chromium.googlesource.com/chromium/src/+/${chromium_revision}/DEPS?format=TEXT" | base64 -d | grep gn_version | head -n1 | cut -d\' -f4)"
  641. cipd ensure -ensure-file - -root . \<<-CIPD
  642. \$ServiceURL https://chrome-infra-packages.appspot.com/
  643. @Subdir src/buildtools/linux64
  644. gn/gn/linux-amd64 $gn_version
  645. CIPD
  646. echo 'export CHROMIUM_BUILDTOOLS_PATH="'"$PWD"'/src/buildtools"' >> $BASH_ENV
  647. - run:
  648. name: Download clang-format Binary
  649. command: |
  650. chromium_revision="$(grep -A1 chromium_version src/electron/DEPS | tr -d '\n' | cut -d\' -f4)"
  651. sha1_path='buildtools/linux64/clang-format.sha1'
  652. curl -sL "https://chromium.googlesource.com/chromium/src/+/${chromium_revision}/${sha1_path}?format=TEXT" | base64 -d > "src/${sha1_path}"
  653. download_from_google_storage.py --no_resume --no_auth --bucket chromium-clang-format -s "src/${sha1_path}"
  654. - run:
  655. name: Run Lint
  656. command: |
  657. # gn.py tries to find a gclient root folder starting from the current dir.
  658. # When it fails and returns "None" path, the whole script fails. Let's "fix" it.
  659. touch .gclient
  660. # Another option would be to checkout "buildtools" inside the Electron checkout,
  661. # but then we would lint its contents (at least gn format), and it doesn't pass it.
  662. cd src/electron
  663. node script/yarn install --frozen-lockfile
  664. node script/yarn lint
  665. steps-checkout-fast: &steps-checkout-fast
  666. steps:
  667. - *step-checkout-electron
  668. - *step-depot-tools-get
  669. - *step-depot-tools-add-to-path
  670. - *step-restore-brew-cache
  671. - *step-get-more-space-on-mac
  672. - *step-install-gnutar-on-mac
  673. - *step-generate-deps-hash
  674. - *step-touch-sync-done
  675. - *step-maybe-restore-src-cache
  676. - *step-maybe-restore-git-cache
  677. - *step-set-git-cache-path
  678. # This sync call only runs if .circle-sync-done is an EMPTY file
  679. - *step-gclient-sync
  680. - store_artifacts:
  681. path: patches
  682. # These next few steps reset Electron to the correct commit regardless of which cache was restored
  683. - run:
  684. name: Wipe Electron
  685. command: rm -rf src/electron
  686. - *step-checkout-electron
  687. - *step-run-electron-only-hooks
  688. - *step-generate-deps-hash-cleanly
  689. - *step-mark-sync-done
  690. - *step-minimize-workspace-size-from-checkout
  691. - persist_to_workspace:
  692. root: .
  693. paths:
  694. - depot_tools
  695. - src
  696. steps-checkout-and-save-cache: &steps-checkout-and-save-cache
  697. steps:
  698. - *step-checkout-electron
  699. - *step-depot-tools-get
  700. - *step-depot-tools-add-to-path
  701. - *step-restore-brew-cache
  702. - *step-get-more-space-on-mac
  703. - *step-install-gnutar-on-mac
  704. - *step-generate-deps-hash
  705. - *step-touch-sync-done
  706. - *step-maybe-restore-src-cache
  707. - *step-maybe-restore-git-cache
  708. - *step-set-git-cache-path
  709. # This sync call only runs if .circle-sync-done is an EMPTY file
  710. - *step-gclient-sync
  711. - store_artifacts:
  712. path: patches
  713. - *step-save-git-cache
  714. # These next few steps reset Electron to the correct commit regardless of which cache was restored
  715. - run:
  716. name: Wipe Electron
  717. command: rm -rf src/electron
  718. - *step-checkout-electron
  719. - *step-run-electron-only-hooks
  720. - *step-generate-deps-hash-cleanly
  721. - *step-mark-sync-done
  722. - *step-minimize-workspace-size-from-checkout
  723. - *step-save-src-cache
  724. - *step-save-brew-cache
  725. steps-electron-gn-check: &steps-electron-gn-check
  726. steps:
  727. - attach_workspace:
  728. at: .
  729. - *step-depot-tools-add-to-path
  730. - *step-setup-env-for-build
  731. - *step-gn-gen-default
  732. - *step-gn-check
  733. steps-electron-build: &steps-electron-build
  734. steps:
  735. - attach_workspace:
  736. at: .
  737. - *step-depot-tools-add-to-path
  738. - *step-setup-env-for-build
  739. - *step-gn-gen-default
  740. # Electron app
  741. - *step-electron-build
  742. - *step-electron-dist-build
  743. - *step-electron-dist-store
  744. - *step-ninja-summary
  745. # Node.js headers
  746. - *step-nodejs-headers-build
  747. - *step-nodejs-headers-store
  748. - *step-show-sccache-stats
  749. steps-electron-build-for-tests: &steps-electron-build-for-tests
  750. steps:
  751. - attach_workspace:
  752. at: .
  753. - *step-depot-tools-add-to-path
  754. - *step-setup-env-for-build
  755. - *step-restore-brew-cache
  756. - *step-get-more-space-on-mac
  757. - *step-install-npm-deps-on-mac
  758. - *step-fix-sync-on-mac
  759. - *step-gn-gen-default
  760. - *step-delete-git-directories
  761. # Electron app
  762. - *step-electron-build
  763. - *step-maybe-electron-dist-strip
  764. - *step-electron-dist-build
  765. - *step-electron-dist-store
  766. - *step-ninja-summary
  767. # Node.js headers
  768. - *step-nodejs-headers-build
  769. - *step-nodejs-headers-store
  770. - *step-show-sccache-stats
  771. # mksnapshot
  772. - *step-mksnapshot-build
  773. - *step-mksnapshot-store
  774. - *step-maybe-cross-arch-snapshot
  775. - *step-maybe-cross-arch-snapshot-store
  776. # ffmpeg
  777. - *step-ffmpeg-gn-gen
  778. - *step-ffmpeg-build
  779. - *step-ffmpeg-store
  780. # Save all data needed for a further tests run.
  781. - *step-persist-data-for-tests
  782. - *step-maybe-generate-breakpad-symbols
  783. - *step-maybe-zip-symbols
  784. # Trigger tests on arm hardware if needed
  785. - *step-maybe-trigger-arm-test
  786. - *step-maybe-notify-slack-failure
  787. steps-electron-build-for-publish: &steps-electron-build-for-publish
  788. steps:
  789. - *step-checkout-electron
  790. - *step-depot-tools-get
  791. - *step-depot-tools-add-to-path
  792. - *step-restore-brew-cache
  793. - *step-get-more-space-on-mac
  794. - *step-gclient-sync
  795. - *step-setup-env-for-build
  796. - *step-gn-gen-default
  797. - *step-delete-git-directories
  798. # Electron app
  799. - *step-electron-build
  800. - *step-maybe-electron-dist-strip
  801. - *step-electron-dist-build
  802. - *step-electron-dist-store
  803. - *step-maybe-generate-breakpad-symbols
  804. - *step-maybe-zip-symbols
  805. # mksnapshot
  806. - *step-mksnapshot-build
  807. - *step-mksnapshot-store
  808. # chromedriver
  809. - *step-electron-chromedriver-build
  810. - *step-electron-chromedriver-store
  811. # Node.js headers
  812. - *step-nodejs-headers-build
  813. - *step-nodejs-headers-store
  814. # ffmpeg
  815. - *step-ffmpeg-gn-gen
  816. - *step-ffmpeg-build
  817. - *step-ffmpeg-store
  818. # typescript defs
  819. - *step-maybe-generate-typescript-defs
  820. # Publish
  821. - *step-electron-publish
  822. steps-chromedriver-build: &steps-chromedriver-build
  823. steps:
  824. - attach_workspace:
  825. at: .
  826. - *step-depot-tools-add-to-path
  827. - *step-setup-env-for-build
  828. - *step-fix-sync-on-mac
  829. - *step-gn-gen-default
  830. - *step-electron-chromedriver-build
  831. - *step-electron-chromedriver-store
  832. - *step-maybe-notify-slack-failure
  833. steps-native-tests: &steps-native-tests
  834. steps:
  835. - attach_workspace:
  836. at: .
  837. - *step-depot-tools-add-to-path
  838. - *step-setup-env-for-build
  839. - *step-gn-gen-default
  840. - run:
  841. name: Build tests
  842. command: |
  843. cd src
  844. ninja -C out/Default $BUILD_TARGET
  845. - *step-show-sccache-stats
  846. - *step-setup-linux-for-headless-testing
  847. - run:
  848. name: Run tests
  849. command: |
  850. mkdir test_results
  851. python src/electron/script/native-tests.py run \
  852. --config $TESTS_CONFIG \
  853. --tests-dir src/out/Default \
  854. --output-dir test_results \
  855. $TESTS_ARGS
  856. - store_artifacts:
  857. path: test_results
  858. destination: test_results # Put it in the root folder.
  859. - store_test_results:
  860. path: test_results
  861. steps-verify-ffmpeg: &steps-verify-ffmpeg
  862. steps:
  863. - attach_workspace:
  864. at: .
  865. - *step-depot-tools-add-to-path
  866. - *step-electron-dist-unzip
  867. - *step-ffmpeg-unzip
  868. - *step-setup-linux-for-headless-testing
  869. - *step-verify-ffmpeg
  870. - *step-maybe-notify-slack-failure
  871. steps-verify-mksnapshot: &steps-verify-mksnapshot
  872. steps:
  873. - attach_workspace:
  874. at: .
  875. - *step-depot-tools-add-to-path
  876. - *step-electron-dist-unzip
  877. - *step-mksnapshot-unzip
  878. - *step-setup-linux-for-headless-testing
  879. - *step-verify-mksnapshot
  880. - *step-maybe-notify-slack-failure
  881. steps-tests: &steps-tests
  882. steps:
  883. - attach_workspace:
  884. at: .
  885. - *step-depot-tools-add-to-path
  886. - *step-electron-dist-unzip
  887. - *step-mksnapshot-unzip
  888. - *step-setup-linux-for-headless-testing
  889. - *step-restore-brew-cache
  890. - *step-fix-known-hosts-linux
  891. - *step-install-signing-cert-on-mac
  892. - run:
  893. name: Run Electron tests
  894. environment:
  895. MOCHA_REPORTER: mocha-multi-reporters
  896. ELECTRON_TEST_RESULTS_DIR: junit
  897. MOCHA_MULTI_REPORTERS: mocha-junit-reporter, tap
  898. ELECTRON_DISABLE_SECURITY_WARNINGS: 1
  899. command: |
  900. cd src
  901. (cd electron && node script/yarn test -- --ci --enable-logging)
  902. - run:
  903. name: Check test results existence
  904. command: |
  905. cd src
  906. # Check if test results exist and are not empty.
  907. if [ ! -s "junit/test-results-remote.xml" ]; then
  908. exit 1
  909. fi
  910. if [ ! -s "junit/test-results-main.xml" ]; then
  911. exit 1
  912. fi
  913. - store_test_results:
  914. path: src/junit
  915. - *step-verify-mksnapshot
  916. - *step-maybe-notify-slack-failure
  917. steps-test-nan: &steps-test-nan
  918. steps:
  919. - attach_workspace:
  920. at: .
  921. - *step-depot-tools-add-to-path
  922. - *step-electron-dist-unzip
  923. - *step-setup-linux-for-headless-testing
  924. - *step-fix-known-hosts-linux
  925. - run:
  926. name: Run Nan Tests
  927. command: |
  928. cd src
  929. node electron/script/nan-spec-runner.js
  930. steps-test-node: &steps-test-node
  931. steps:
  932. - attach_workspace:
  933. at: .
  934. - *step-depot-tools-add-to-path
  935. - *step-electron-dist-unzip
  936. - *step-setup-linux-for-headless-testing
  937. - *step-fix-known-hosts-linux
  938. - run:
  939. name: Run Node Tests
  940. command: |
  941. cd src
  942. node electron/script/node-spec-runner.js junit
  943. - store_test_results:
  944. path: src/junit
  945. chromium-upgrade-branches: &chromium-upgrade-branches
  946. /chromium\-upgrade\/[0-9]+/
  947. # List of all jobs.
  948. jobs:
  949. # Layer 0: Lint. Standalone.
  950. lint:
  951. <<: *machine-linux-medium
  952. environment:
  953. <<: *env-linux-medium
  954. <<: *steps-lint
  955. # Layer 1: Checkout.
  956. linux-checkout-fast:
  957. <<: *machine-linux-2xlarge
  958. environment:
  959. <<: *env-linux-2xlarge
  960. GCLIENT_EXTRA_ARGS: '--custom-var=checkout_arm=True --custom-var=checkout_arm64=True'
  961. <<: *steps-checkout-fast
  962. linux-checkout-and-save-cache:
  963. <<: *machine-linux-2xlarge
  964. environment:
  965. <<: *env-linux-2xlarge
  966. GCLIENT_EXTRA_ARGS: '--custom-var=checkout_arm=True --custom-var=checkout_arm64=True'
  967. <<: *steps-checkout-and-save-cache
  968. linux-checkout-for-native-tests:
  969. <<: *machine-linux-2xlarge
  970. environment:
  971. <<: *env-linux-2xlarge
  972. GCLIENT_EXTRA_ARGS: '--custom-var=checkout_pyyaml=True'
  973. <<: *steps-checkout-fast
  974. linux-checkout-for-native-tests-with-no-patches:
  975. <<: *machine-linux-2xlarge
  976. environment:
  977. <<: *env-linux-2xlarge
  978. GCLIENT_EXTRA_ARGS: '--custom-var=apply_patches=False --custom-var=checkout_pyyaml=True'
  979. <<: *steps-checkout-fast
  980. mac-checkout-fast:
  981. <<: *machine-linux-2xlarge
  982. environment:
  983. <<: *env-linux-2xlarge
  984. GCLIENT_EXTRA_ARGS: '--custom-var=checkout_mac=True --custom-var=host_os=mac'
  985. <<: *steps-checkout-fast
  986. mac-checkout-and-save-cache:
  987. <<: *machine-linux-2xlarge
  988. environment:
  989. <<: *env-linux-2xlarge
  990. GCLIENT_EXTRA_ARGS: '--custom-var=checkout_mac=True --custom-var=host_os=mac'
  991. <<: *steps-checkout-and-save-cache
  992. # Layer 2: Builds.
  993. linux-x64-debug:
  994. <<: *machine-linux-2xlarge
  995. environment:
  996. <<: *env-linux-2xlarge
  997. <<: *env-debug-build
  998. <<: *env-enable-sccache
  999. <<: *env-ninja-status
  1000. <<: *steps-electron-build
  1001. linux-x64-debug-gn-check:
  1002. <<: *machine-linux-medium
  1003. environment:
  1004. <<: *env-linux-medium
  1005. <<: *env-debug-build
  1006. <<: *steps-electron-gn-check
  1007. linux-x64-testing:
  1008. <<: *machine-linux-2xlarge
  1009. environment:
  1010. <<: *env-linux-2xlarge
  1011. <<: *env-testing-build
  1012. <<: *env-enable-sccache
  1013. <<: *env-ninja-status
  1014. <<: *steps-electron-build-for-tests
  1015. linux-x64-testing-no-run-as-node:
  1016. <<: *machine-linux-2xlarge
  1017. environment:
  1018. <<: *env-linux-2xlarge
  1019. <<: *env-testing-build
  1020. <<: *env-enable-sccache
  1021. <<: *env-ninja-status
  1022. <<: *env-disable-run-as-node
  1023. <<: *steps-electron-build-for-tests
  1024. linux-x64-testing-gn-check:
  1025. <<: *machine-linux-medium
  1026. environment:
  1027. <<: *env-linux-medium
  1028. <<: *env-testing-build
  1029. <<: *steps-electron-gn-check
  1030. linux-x64-chromedriver:
  1031. <<: *machine-linux-medium
  1032. environment:
  1033. <<: *env-linux-medium
  1034. <<: *env-release-build
  1035. <<: *env-enable-sccache
  1036. <<: *env-send-slack-notifications
  1037. <<: *steps-chromedriver-build
  1038. linux-x64-release:
  1039. <<: *machine-linux-2xlarge
  1040. environment:
  1041. <<: *env-linux-2xlarge
  1042. <<: *env-release-build
  1043. <<: *env-enable-sccache
  1044. <<: *env-send-slack-notifications
  1045. <<: *env-ninja-status
  1046. <<: *steps-electron-build-for-tests
  1047. linux-x64-publish:
  1048. <<: *machine-linux-2xlarge
  1049. environment:
  1050. <<: *env-linux-2xlarge-release
  1051. GCLIENT_EXTRA_ARGS: '--custom-var=checkout_boto=True --custom-var=checkout_requests=True'
  1052. <<: *env-release-build
  1053. <<: *env-enable-sccache
  1054. UPLOAD_TO_S3: << pipeline.parameters.upload-to-s3 >>
  1055. <<: *steps-electron-build-for-publish
  1056. linux-ia32-debug:
  1057. <<: *machine-linux-2xlarge
  1058. environment:
  1059. <<: *env-linux-2xlarge
  1060. <<: *env-ia32
  1061. <<: *env-debug-build
  1062. <<: *env-enable-sccache
  1063. <<: *env-ninja-status
  1064. <<: *steps-electron-build
  1065. linux-ia32-testing:
  1066. <<: *machine-linux-2xlarge
  1067. environment:
  1068. <<: *env-linux-2xlarge
  1069. <<: *env-ia32
  1070. <<: *env-testing-build
  1071. <<: *env-enable-sccache
  1072. <<: *env-ninja-status
  1073. <<: *steps-electron-build-for-tests
  1074. linux-ia32-chromedriver:
  1075. <<: *machine-linux-medium
  1076. environment:
  1077. <<: *env-linux-medium
  1078. <<: *env-ia32
  1079. <<: *env-release-build
  1080. <<: *env-enable-sccache
  1081. <<: *env-send-slack-notifications
  1082. <<: *steps-chromedriver-build
  1083. linux-ia32-release:
  1084. <<: *machine-linux-2xlarge
  1085. environment:
  1086. <<: *env-linux-2xlarge
  1087. <<: *env-ia32
  1088. <<: *env-release-build
  1089. <<: *env-enable-sccache
  1090. <<: *env-send-slack-notifications
  1091. <<: *env-ninja-status
  1092. <<: *steps-electron-build-for-tests
  1093. linux-ia32-publish:
  1094. <<: *machine-linux-2xlarge
  1095. environment:
  1096. <<: *env-linux-2xlarge-release
  1097. GCLIENT_EXTRA_ARGS: '--custom-var=checkout_boto=True --custom-var=checkout_requests=True'
  1098. <<: *env-ia32
  1099. <<: *env-release-build
  1100. <<: *env-enable-sccache
  1101. UPLOAD_TO_S3: << pipeline.parameters.upload-to-s3 >>
  1102. <<: *steps-electron-build-for-publish
  1103. linux-arm-debug:
  1104. <<: *machine-linux-2xlarge
  1105. environment:
  1106. <<: *env-linux-2xlarge
  1107. <<: *env-arm
  1108. <<: *env-debug-build
  1109. <<: *env-enable-sccache
  1110. <<: *env-ninja-status
  1111. <<: *steps-electron-build
  1112. linux-arm-testing:
  1113. <<: *machine-linux-2xlarge
  1114. environment:
  1115. <<: *env-linux-2xlarge
  1116. <<: *env-arm
  1117. <<: *env-testing-build
  1118. <<: *env-enable-sccache
  1119. <<: *env-ninja-status
  1120. TRIGGER_ARM_TEST: true
  1121. <<: *steps-electron-build-for-tests
  1122. linux-arm-chromedriver:
  1123. <<: *machine-linux-medium
  1124. environment:
  1125. <<: *env-linux-medium
  1126. <<: *env-arm
  1127. <<: *env-release-build
  1128. <<: *env-enable-sccache
  1129. <<: *env-send-slack-notifications
  1130. <<: *steps-chromedriver-build
  1131. linux-arm-release:
  1132. <<: *machine-linux-2xlarge
  1133. environment:
  1134. <<: *env-linux-2xlarge
  1135. <<: *env-arm
  1136. <<: *env-release-build
  1137. <<: *env-enable-sccache
  1138. <<: *env-send-slack-notifications
  1139. <<: *env-ninja-status
  1140. <<: *steps-electron-build-for-tests
  1141. linux-arm-publish:
  1142. <<: *machine-linux-2xlarge
  1143. environment:
  1144. <<: *env-linux-2xlarge-release
  1145. <<: *env-arm
  1146. <<: *env-release-build
  1147. <<: *env-enable-sccache
  1148. GCLIENT_EXTRA_ARGS: '--custom-var=checkout_arm=True --custom-var=checkout_boto=True --custom-var=checkout_requests=True'
  1149. UPLOAD_TO_S3: << pipeline.parameters.upload-to-s3 >>
  1150. <<: *steps-electron-build-for-publish
  1151. linux-arm64-debug:
  1152. <<: *machine-linux-2xlarge
  1153. environment:
  1154. <<: *env-linux-2xlarge
  1155. <<: *env-arm64
  1156. <<: *env-debug-build
  1157. <<: *env-enable-sccache
  1158. <<: *env-ninja-status
  1159. <<: *steps-electron-build
  1160. linux-arm64-debug-gn-check:
  1161. <<: *machine-linux-medium
  1162. environment:
  1163. <<: *env-linux-medium
  1164. <<: *env-arm64
  1165. <<: *env-debug-build
  1166. <<: *steps-electron-gn-check
  1167. linux-arm64-testing:
  1168. <<: *machine-linux-2xlarge
  1169. environment:
  1170. <<: *env-linux-2xlarge
  1171. <<: *env-arm64
  1172. <<: *env-testing-build
  1173. <<: *env-enable-sccache
  1174. <<: *env-ninja-status
  1175. TRIGGER_ARM_TEST: true
  1176. <<: *steps-electron-build-for-tests
  1177. linux-arm64-testing-gn-check:
  1178. <<: *machine-linux-medium
  1179. environment:
  1180. <<: *env-linux-medium
  1181. <<: *env-arm64
  1182. <<: *env-testing-build
  1183. <<: *steps-electron-gn-check
  1184. linux-arm64-chromedriver:
  1185. <<: *machine-linux-medium
  1186. environment:
  1187. <<: *env-linux-medium
  1188. <<: *env-arm64
  1189. <<: *env-release-build
  1190. <<: *env-enable-sccache
  1191. <<: *env-send-slack-notifications
  1192. <<: *steps-chromedriver-build
  1193. linux-arm64-release:
  1194. <<: *machine-linux-2xlarge
  1195. environment:
  1196. <<: *env-linux-2xlarge
  1197. <<: *env-arm64
  1198. <<: *env-release-build
  1199. <<: *env-enable-sccache
  1200. <<: *env-send-slack-notifications
  1201. <<: *env-ninja-status
  1202. <<: *steps-electron-build-for-tests
  1203. linux-arm64-publish:
  1204. <<: *machine-linux-2xlarge
  1205. environment:
  1206. <<: *env-linux-2xlarge-release
  1207. <<: *env-arm64
  1208. <<: *env-release-build
  1209. <<: *env-enable-sccache
  1210. GCLIENT_EXTRA_ARGS: '--custom-var=checkout_arm64=True --custom-var=checkout_boto=True --custom-var=checkout_requests=True'
  1211. UPLOAD_TO_S3: << pipeline.parameters.upload-to-s3 >>
  1212. <<: *steps-electron-build-for-publish
  1213. osx-testing:
  1214. <<: *machine-mac-large
  1215. environment:
  1216. <<: *env-mac-large
  1217. <<: *env-testing-build
  1218. <<: *env-enable-sccache
  1219. <<: *env-ninja-status
  1220. <<: *steps-electron-build-for-tests
  1221. osx-debug:
  1222. <<: *machine-mac-large
  1223. environment:
  1224. <<: *env-mac-large
  1225. <<: *env-debug-build
  1226. <<: *env-enable-sccache
  1227. <<: *env-ninja-status
  1228. <<: *steps-electron-build-for-tests
  1229. osx-debug-gn-check:
  1230. <<: *machine-mac
  1231. environment:
  1232. <<: *env-machine-mac
  1233. <<: *env-debug-build
  1234. <<: *steps-electron-gn-check
  1235. osx-testing-gn-check:
  1236. <<: *machine-mac
  1237. environment:
  1238. <<: *env-machine-mac
  1239. <<: *env-testing-build
  1240. <<: *steps-electron-gn-check
  1241. osx-chromedriver:
  1242. <<: *machine-mac
  1243. environment:
  1244. <<: *env-machine-mac
  1245. <<: *env-release-build
  1246. <<: *env-enable-sccache
  1247. <<: *env-send-slack-notifications
  1248. <<: *steps-chromedriver-build
  1249. osx-release:
  1250. <<: *machine-mac-large
  1251. environment:
  1252. <<: *env-mac-large
  1253. <<: *env-release-build
  1254. <<: *env-enable-sccache
  1255. <<: *env-ninja-status
  1256. <<: *steps-electron-build-for-tests
  1257. osx-publish:
  1258. <<: *machine-mac-large
  1259. environment:
  1260. <<: *env-mac-large-release
  1261. <<: *env-release-build
  1262. <<: *env-enable-sccache
  1263. GCLIENT_EXTRA_ARGS: '--custom-var=checkout_boto=True --custom-var=checkout_requests=True'
  1264. UPLOAD_TO_S3: << pipeline.parameters.upload-to-s3 >>
  1265. <<: *steps-electron-build-for-publish
  1266. mas-testing:
  1267. <<: *machine-mac-large
  1268. environment:
  1269. <<: *env-mac-large
  1270. <<: *env-mas
  1271. <<: *env-testing-build
  1272. <<: *env-enable-sccache
  1273. <<: *env-ninja-status
  1274. <<: *steps-electron-build-for-tests
  1275. mas-debug:
  1276. <<: *machine-mac-large
  1277. environment:
  1278. <<: *env-mac-large
  1279. <<: *env-mas
  1280. <<: *env-debug-build
  1281. <<: *env-enable-sccache
  1282. <<: *env-ninja-status
  1283. <<: *steps-electron-build-for-tests
  1284. mas-debug-gn-check:
  1285. <<: *machine-mac
  1286. environment:
  1287. <<: *env-machine-mac
  1288. <<: *env-mas
  1289. <<: *env-debug-build
  1290. <<: *steps-electron-gn-check
  1291. mas-testing-gn-check:
  1292. <<: *machine-mac
  1293. environment:
  1294. <<: *env-machine-mac
  1295. <<: *env-mas
  1296. <<: *env-testing-build
  1297. <<: *steps-electron-gn-check
  1298. mas-chromedriver:
  1299. <<: *machine-mac
  1300. environment:
  1301. <<: *env-machine-mac
  1302. <<: *env-release-build
  1303. <<: *env-enable-sccache
  1304. <<: *env-send-slack-notifications
  1305. <<: *steps-chromedriver-build
  1306. mas-release:
  1307. <<: *machine-mac-large
  1308. environment:
  1309. <<: *env-mac-large
  1310. <<: *env-mas
  1311. <<: *env-release-build
  1312. <<: *env-enable-sccache
  1313. <<: *env-ninja-status
  1314. <<: *steps-electron-build-for-tests
  1315. mas-publish:
  1316. <<: *machine-mac-large
  1317. environment:
  1318. <<: *env-mac-large-release
  1319. <<: *env-mas
  1320. <<: *env-release-build
  1321. <<: *env-enable-sccache
  1322. GCLIENT_EXTRA_ARGS: '--custom-var=checkout_boto=True --custom-var=checkout_requests=True'
  1323. UPLOAD_TO_S3: << pipeline.parameters.upload-to-s3 >>
  1324. <<: *steps-electron-build-for-publish
  1325. # Layer 3: Tests.
  1326. linux-x64-unittests:
  1327. <<: *machine-linux-2xlarge
  1328. environment:
  1329. <<: *env-linux-2xlarge
  1330. <<: *env-unittests
  1331. <<: *env-enable-sccache
  1332. <<: *env-headless-testing
  1333. <<: *steps-native-tests
  1334. linux-x64-disabled-unittests:
  1335. <<: *machine-linux-2xlarge
  1336. environment:
  1337. <<: *env-linux-2xlarge
  1338. <<: *env-unittests
  1339. <<: *env-enable-sccache
  1340. <<: *env-headless-testing
  1341. TESTS_ARGS: '--only-disabled-tests'
  1342. <<: *steps-native-tests
  1343. linux-x64-chromium-unittests:
  1344. <<: *machine-linux-2xlarge
  1345. environment:
  1346. <<: *env-linux-2xlarge
  1347. <<: *env-unittests
  1348. <<: *env-enable-sccache
  1349. <<: *env-headless-testing
  1350. TESTS_ARGS: '--include-disabled-tests'
  1351. <<: *steps-native-tests
  1352. linux-x64-browsertests:
  1353. <<: *machine-linux-2xlarge
  1354. environment:
  1355. <<: *env-linux-2xlarge
  1356. <<: *env-browsertests
  1357. <<: *env-testing-build
  1358. <<: *env-enable-sccache
  1359. <<: *env-headless-testing
  1360. <<: *steps-native-tests
  1361. linux-x64-testing-tests:
  1362. <<: *machine-linux-medium
  1363. environment:
  1364. <<: *env-linux-medium
  1365. <<: *env-headless-testing
  1366. <<: *env-stack-dumping
  1367. <<: *steps-tests
  1368. linux-x64-testing-nan:
  1369. <<: *machine-linux-medium
  1370. environment:
  1371. <<: *env-linux-medium
  1372. <<: *env-headless-testing
  1373. <<: *env-stack-dumping
  1374. <<: *steps-test-nan
  1375. linux-x64-testing-node:
  1376. <<: *machine-linux-2xlarge
  1377. environment:
  1378. <<: *env-linux-medium
  1379. <<: *env-headless-testing
  1380. <<: *env-stack-dumping
  1381. <<: *steps-test-node
  1382. linux-x64-release-tests:
  1383. <<: *machine-linux-medium
  1384. environment:
  1385. <<: *env-linux-medium
  1386. <<: *env-headless-testing
  1387. <<: *env-send-slack-notifications
  1388. <<: *steps-tests
  1389. linux-x64-verify-ffmpeg:
  1390. <<: *machine-linux-medium
  1391. environment:
  1392. <<: *env-linux-medium
  1393. <<: *env-headless-testing
  1394. <<: *env-send-slack-notifications
  1395. <<: *steps-verify-ffmpeg
  1396. linux-x64-verify-mksnapshot:
  1397. <<: *machine-linux-medium
  1398. environment:
  1399. <<: *env-linux-medium
  1400. <<: *env-headless-testing
  1401. <<: *env-send-slack-notifications
  1402. <<: *steps-verify-mksnapshot
  1403. linux-ia32-testing-tests:
  1404. <<: *machine-linux-medium
  1405. environment:
  1406. <<: *env-linux-medium
  1407. <<: *env-ia32
  1408. <<: *env-headless-testing
  1409. <<: *env-stack-dumping
  1410. <<: *steps-tests
  1411. linux-ia32-testing-nan:
  1412. <<: *machine-linux-medium
  1413. environment:
  1414. <<: *env-linux-medium
  1415. <<: *env-ia32
  1416. <<: *env-headless-testing
  1417. <<: *env-stack-dumping
  1418. <<: *steps-test-nan
  1419. linux-ia32-testing-node:
  1420. <<: *machine-linux-2xlarge
  1421. environment:
  1422. <<: *env-linux-medium
  1423. <<: *env-ia32
  1424. <<: *env-headless-testing
  1425. <<: *env-stack-dumping
  1426. <<: *steps-test-node
  1427. linux-ia32-release-tests:
  1428. <<: *machine-linux-medium
  1429. environment:
  1430. <<: *env-linux-medium
  1431. <<: *env-ia32
  1432. <<: *env-headless-testing
  1433. <<: *env-send-slack-notifications
  1434. <<: *steps-tests
  1435. linux-ia32-verify-ffmpeg:
  1436. <<: *machine-linux-medium
  1437. environment:
  1438. <<: *env-linux-medium
  1439. <<: *env-ia32
  1440. <<: *env-headless-testing
  1441. <<: *env-send-slack-notifications
  1442. <<: *steps-verify-ffmpeg
  1443. linux-ia32-verify-mksnapshot:
  1444. <<: *machine-linux-medium
  1445. environment:
  1446. <<: *env-linux-medium
  1447. <<: *env-ia32
  1448. <<: *env-headless-testing
  1449. <<: *env-send-slack-notifications
  1450. <<: *steps-verify-mksnapshot
  1451. osx-testing-tests:
  1452. <<: *machine-mac-large
  1453. environment:
  1454. <<: *env-mac-large
  1455. <<: *env-stack-dumping
  1456. <<: *env-disable-crash-reporter-tests
  1457. <<: *steps-tests
  1458. osx-release-tests:
  1459. <<: *machine-mac-large
  1460. environment:
  1461. <<: *env-mac-large
  1462. <<: *env-stack-dumping
  1463. <<: *env-send-slack-notifications
  1464. <<: *env-disable-crash-reporter-tests
  1465. <<: *steps-tests
  1466. osx-verify-ffmpeg:
  1467. <<: *machine-mac
  1468. environment:
  1469. <<: *env-machine-mac
  1470. <<: *env-send-slack-notifications
  1471. <<: *steps-verify-ffmpeg
  1472. osx-verify-mksnapshot:
  1473. <<: *machine-mac
  1474. environment:
  1475. <<: *env-machine-mac
  1476. <<: *env-send-slack-notifications
  1477. <<: *steps-verify-mksnapshot
  1478. mas-testing-tests:
  1479. <<: *machine-mac-large
  1480. environment:
  1481. <<: *env-mac-large
  1482. <<: *env-stack-dumping
  1483. <<: *steps-tests
  1484. mas-release-tests:
  1485. <<: *machine-mac-large
  1486. environment:
  1487. <<: *env-mac-large
  1488. <<: *env-stack-dumping
  1489. <<: *env-send-slack-notifications
  1490. <<: *steps-tests
  1491. mas-verify-ffmpeg:
  1492. <<: *machine-mac
  1493. environment:
  1494. <<: *env-machine-mac
  1495. <<: *env-send-slack-notifications
  1496. <<: *steps-verify-ffmpeg
  1497. mas-verify-mksnapshot:
  1498. <<: *machine-mac
  1499. environment:
  1500. <<: *env-machine-mac
  1501. <<: *env-send-slack-notifications
  1502. <<: *steps-verify-mksnapshot
  1503. # Layer 4: Summary.
  1504. linux-x64-release-summary:
  1505. <<: *machine-linux-medium
  1506. environment:
  1507. <<: *env-linux-medium
  1508. <<: *env-send-slack-notifications
  1509. steps:
  1510. - *step-maybe-notify-slack-success
  1511. linux-ia32-release-summary:
  1512. <<: *machine-linux-medium
  1513. environment:
  1514. <<: *env-linux-medium
  1515. <<: *env-send-slack-notifications
  1516. steps:
  1517. - *step-maybe-notify-slack-success
  1518. linux-arm-release-summary:
  1519. <<: *machine-linux-medium
  1520. environment:
  1521. <<: *env-linux-medium
  1522. <<: *env-send-slack-notifications
  1523. steps:
  1524. - *step-maybe-notify-slack-success
  1525. linux-arm64-release-summary:
  1526. <<: *machine-linux-medium
  1527. environment:
  1528. <<: *env-linux-medium
  1529. <<: *env-send-slack-notifications
  1530. steps:
  1531. - *step-maybe-notify-slack-success
  1532. mas-release-summary:
  1533. <<: *machine-mac
  1534. environment:
  1535. <<: *env-machine-mac
  1536. <<: *env-send-slack-notifications
  1537. steps:
  1538. - *step-maybe-notify-slack-success
  1539. osx-release-summary:
  1540. <<: *machine-mac
  1541. environment:
  1542. <<: *env-machine-mac
  1543. <<: *env-send-slack-notifications
  1544. steps:
  1545. - *step-maybe-notify-slack-success
  1546. workflows:
  1547. version: 2
  1548. # The publish workflows below each contain one job so that they are
  1549. # compatible with how sudowoodo works today. If these workflows are
  1550. # changed to have multiple jobs, then scripts/release/ci-release-build.js
  1551. # will need to be updated and there will most likely need to be changes to
  1552. # sudowoodo
  1553. publish-x64-linux:
  1554. when: << pipeline.parameters.run-linux-x64-publish >>
  1555. jobs:
  1556. - linux-x64-publish:
  1557. context: release-env
  1558. publish-ia32-linux:
  1559. when: << pipeline.parameters.run-linux-ia32-publish >>
  1560. jobs:
  1561. - linux-ia32-publish:
  1562. context: release-env
  1563. publish-arm-linux:
  1564. when: << pipeline.parameters.run-linux-arm-publish >>
  1565. jobs:
  1566. - linux-arm-publish:
  1567. context: release-env
  1568. publish-arm64-linux:
  1569. when: << pipeline.parameters.run-linux-arm64-publish >>
  1570. jobs:
  1571. - linux-arm64-publish:
  1572. context: release-env
  1573. publish-osx:
  1574. when: << pipeline.parameters.run-osx-publish >>
  1575. jobs:
  1576. - osx-publish:
  1577. context: release-env
  1578. publish-mas:
  1579. when: << pipeline.parameters.run-mas-publish >>
  1580. jobs:
  1581. - mas-publish:
  1582. context: release-env
  1583. lint:
  1584. when: << pipeline.parameters.run-lint >>
  1585. jobs:
  1586. - lint
  1587. build-linux:
  1588. when: << pipeline.parameters.run-build-linux >>
  1589. jobs:
  1590. - linux-checkout-fast
  1591. - linux-checkout-and-save-cache
  1592. - linux-x64-debug:
  1593. requires:
  1594. - linux-checkout-fast
  1595. - linux-x64-debug-gn-check:
  1596. requires:
  1597. - linux-checkout-fast
  1598. - linux-x64-testing:
  1599. requires:
  1600. - linux-checkout-fast
  1601. - linux-x64-testing-no-run-as-node:
  1602. requires:
  1603. - linux-checkout-fast
  1604. - linux-x64-testing-gn-check:
  1605. requires:
  1606. - linux-checkout-fast
  1607. - linux-x64-testing-tests:
  1608. requires:
  1609. - linux-x64-testing
  1610. - linux-x64-testing-nan:
  1611. requires:
  1612. - linux-x64-testing
  1613. - linux-x64-testing-node:
  1614. requires:
  1615. - linux-x64-testing
  1616. - linux-ia32-debug:
  1617. requires:
  1618. - linux-checkout-fast
  1619. - linux-ia32-testing:
  1620. requires:
  1621. - linux-checkout-fast
  1622. - linux-ia32-testing-tests:
  1623. requires:
  1624. - linux-ia32-testing
  1625. - linux-ia32-testing-nan:
  1626. requires:
  1627. - linux-ia32-testing
  1628. - linux-ia32-testing-node:
  1629. requires:
  1630. - linux-ia32-testing
  1631. - linux-arm-debug:
  1632. requires:
  1633. - linux-checkout-fast
  1634. - linux-arm-testing:
  1635. requires:
  1636. - linux-checkout-fast
  1637. - linux-arm64-debug:
  1638. requires:
  1639. - linux-checkout-fast
  1640. - linux-arm64-debug-gn-check:
  1641. requires:
  1642. - linux-checkout-fast
  1643. - linux-arm64-testing:
  1644. requires:
  1645. - linux-checkout-fast
  1646. - linux-arm64-testing-gn-check:
  1647. requires:
  1648. - linux-checkout-fast
  1649. build-mac:
  1650. when: << pipeline.parameters.run-build-mac >>
  1651. jobs:
  1652. - mac-checkout-fast
  1653. - mac-checkout-and-save-cache
  1654. - osx-testing:
  1655. requires:
  1656. - mac-checkout-fast
  1657. - osx-debug:
  1658. requires:
  1659. - mac-checkout-fast
  1660. - osx-debug-gn-check:
  1661. requires:
  1662. - mac-checkout-fast
  1663. - osx-testing-gn-check:
  1664. requires:
  1665. - mac-checkout-fast
  1666. - osx-testing-tests:
  1667. requires:
  1668. - osx-testing
  1669. - mas-testing:
  1670. requires:
  1671. - mac-checkout-fast
  1672. - mas-debug:
  1673. requires:
  1674. - mac-checkout-fast
  1675. - mas-debug-gn-check:
  1676. requires:
  1677. - mac-checkout-fast
  1678. - mas-testing-gn-check:
  1679. requires:
  1680. - mac-checkout-fast
  1681. - mas-testing-tests:
  1682. requires:
  1683. - mas-testing
  1684. nightly-linux-release-test:
  1685. triggers:
  1686. - schedule:
  1687. cron: "0 0 * * *"
  1688. filters:
  1689. branches:
  1690. only:
  1691. - master
  1692. - *chromium-upgrade-branches
  1693. jobs:
  1694. - linux-checkout-fast
  1695. - linux-x64-release:
  1696. requires:
  1697. - linux-checkout-fast
  1698. - linux-x64-release-tests:
  1699. requires:
  1700. - linux-x64-release
  1701. - linux-x64-verify-ffmpeg:
  1702. requires:
  1703. - linux-x64-release
  1704. - linux-x64-verify-mksnapshot:
  1705. requires:
  1706. - linux-x64-release
  1707. - linux-x64-chromedriver:
  1708. requires:
  1709. - linux-checkout-fast
  1710. - linux-x64-release-summary:
  1711. requires:
  1712. - linux-x64-release
  1713. - linux-x64-release-tests
  1714. - linux-x64-verify-ffmpeg
  1715. - linux-x64-chromedriver
  1716. - linux-ia32-release:
  1717. requires:
  1718. - linux-checkout-fast
  1719. - linux-ia32-release-tests:
  1720. requires:
  1721. - linux-ia32-release
  1722. - linux-ia32-verify-ffmpeg:
  1723. requires:
  1724. - linux-ia32-release
  1725. - linux-ia32-verify-mksnapshot:
  1726. requires:
  1727. - linux-ia32-release
  1728. - linux-ia32-chromedriver:
  1729. requires:
  1730. - linux-checkout-fast
  1731. - linux-ia32-release-summary:
  1732. requires:
  1733. - linux-ia32-release
  1734. - linux-ia32-release-tests
  1735. - linux-ia32-verify-ffmpeg
  1736. - linux-ia32-chromedriver
  1737. - linux-arm-release:
  1738. requires:
  1739. - linux-checkout-fast
  1740. - linux-arm-chromedriver:
  1741. requires:
  1742. - linux-checkout-fast
  1743. - linux-arm-release-summary:
  1744. requires:
  1745. - linux-arm-release
  1746. - linux-arm-chromedriver
  1747. - linux-arm64-release:
  1748. requires:
  1749. - linux-checkout-fast
  1750. - linux-arm64-chromedriver:
  1751. requires:
  1752. - linux-checkout-fast
  1753. - linux-arm64-release-summary:
  1754. requires:
  1755. - linux-arm64-release
  1756. - linux-arm64-chromedriver
  1757. nightly-mac-release-test:
  1758. triggers:
  1759. - schedule:
  1760. cron: "0 0 * * *"
  1761. filters:
  1762. branches:
  1763. only:
  1764. - master
  1765. - *chromium-upgrade-branches
  1766. jobs:
  1767. - mac-checkout-fast
  1768. - osx-release:
  1769. requires:
  1770. - mac-checkout-fast
  1771. - osx-release-tests:
  1772. requires:
  1773. - osx-release
  1774. - osx-verify-ffmpeg:
  1775. requires:
  1776. - osx-release
  1777. - osx-verify-mksnapshot:
  1778. requires:
  1779. - osx-release
  1780. - osx-chromedriver:
  1781. requires:
  1782. - mac-checkout-fast
  1783. - osx-release-summary:
  1784. requires:
  1785. - osx-release
  1786. - osx-release-tests
  1787. - osx-verify-ffmpeg
  1788. - osx-chromedriver
  1789. - mas-release:
  1790. requires:
  1791. - mac-checkout-fast
  1792. - mas-release-tests:
  1793. requires:
  1794. - mas-release
  1795. - mas-verify-ffmpeg:
  1796. requires:
  1797. - mas-release
  1798. - mas-verify-mksnapshot:
  1799. requires:
  1800. - mas-release
  1801. - mas-chromedriver:
  1802. requires:
  1803. - mac-checkout-fast
  1804. - mas-release-summary:
  1805. requires:
  1806. - mas-release
  1807. - mas-release-tests
  1808. - mas-verify-ffmpeg
  1809. - mas-chromedriver
  1810. # Various slow and non-essential checks we run only nightly.
  1811. # Sanitizer jobs should be added here.
  1812. linux-checks-nightly:
  1813. triggers:
  1814. - schedule:
  1815. cron: "0 0 * * *"
  1816. filters:
  1817. branches:
  1818. only:
  1819. - master
  1820. - *chromium-upgrade-branches
  1821. jobs:
  1822. - linux-checkout-for-native-tests
  1823. # TODO(alexeykuzmin): Enable it back.
  1824. # Tons of crashes right now, see
  1825. # https://circleci.com/gh/electron/electron/67463
  1826. # - linux-x64-browsertests:
  1827. # requires:
  1828. # - linux-checkout-for-native-tests
  1829. - linux-x64-unittests:
  1830. requires:
  1831. - linux-checkout-for-native-tests
  1832. - linux-x64-disabled-unittests:
  1833. requires:
  1834. - linux-checkout-for-native-tests
  1835. - linux-checkout-for-native-tests-with-no-patches
  1836. - linux-x64-chromium-unittests:
  1837. requires:
  1838. - linux-checkout-for-native-tests-with-no-patches