build_config.yml 76 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416
  1. version: 2.1
  2. parameters:
  3. run-docs-only:
  4. type: boolean
  5. default: false
  6. upload-to-s3:
  7. type: string
  8. default: '1'
  9. run-build-linux:
  10. type: boolean
  11. default: false
  12. run-build-mac:
  13. type: boolean
  14. default: false
  15. run-linux-publish:
  16. type: boolean
  17. default: false
  18. linux-publish-arch-limit:
  19. type: enum
  20. default: all
  21. enum: ["all", "arm", "arm64", "x64", "ia32"]
  22. run-macos-publish:
  23. type: boolean
  24. default: false
  25. macos-publish-arch-limit:
  26. type: enum
  27. default: all
  28. enum: ["all", "osx-x64", "osx-arm64", "mas-x64", "mas-arm64"]
  29. # Executors
  30. executors:
  31. linux-docker:
  32. parameters:
  33. size:
  34. description: "Docker executor size"
  35. default: 2xlarge+
  36. type: enum
  37. enum: ["medium", "xlarge", "2xlarge+"]
  38. docker:
  39. - image: ghcr.io/electron/build:27db4a3e3512bfd2e47f58cea69922da0835f1d9
  40. resource_class: << parameters.size >>
  41. macos:
  42. parameters:
  43. size:
  44. description: "macOS executor size"
  45. default: large
  46. type: enum
  47. enum: ["medium", "large"]
  48. macos:
  49. xcode: "12.4.0"
  50. resource_class: << parameters.size >>
  51. # Electron Runners
  52. apple-silicon:
  53. resource_class: electronjs/macos-arm64
  54. machine: true
  55. linux-arm:
  56. resource_class: electronjs/linux-arm
  57. machine: true
  58. linux-arm64:
  59. resource_class: electronjs/linux-arm64
  60. machine: true
  61. # The config expects the following environment variables to be set:
  62. # - "SLACK_WEBHOOK" Slack hook URL to send notifications.
  63. #
  64. # The publishing scripts expect access tokens to be defined as env vars,
  65. # but those are not covered here.
  66. #
  67. # CircleCI docs on variables:
  68. # https://circleci.com/docs/2.0/env-vars/
  69. # Build configurations options.
  70. env-testing-build: &env-testing-build
  71. GN_CONFIG: //electron/build/args/testing.gn
  72. CHECK_DIST_MANIFEST: '1'
  73. env-release-build: &env-release-build
  74. GN_CONFIG: //electron/build/args/release.gn
  75. STRIP_BINARIES: true
  76. GENERATE_SYMBOLS: true
  77. CHECK_DIST_MANIFEST: '1'
  78. IS_RELEASE: true
  79. env-headless-testing: &env-headless-testing
  80. DISPLAY: ':99.0'
  81. env-stack-dumping: &env-stack-dumping
  82. ELECTRON_ENABLE_STACK_DUMPING: '1'
  83. env-browsertests: &env-browsertests
  84. GN_CONFIG: //electron/build/args/native_tests.gn
  85. BUILD_TARGET: electron/spec:chromium_browsertests
  86. TESTS_CONFIG: src/electron/spec/configs/browsertests.yml
  87. env-unittests: &env-unittests
  88. GN_CONFIG: //electron/build/args/native_tests.gn
  89. BUILD_TARGET: electron/spec:chromium_unittests
  90. TESTS_CONFIG: src/electron/spec/configs/unittests.yml
  91. # Build targets options.
  92. env-ia32: &env-ia32
  93. GN_EXTRA_ARGS: 'target_cpu = "x86"'
  94. NPM_CONFIG_ARCH: ia32
  95. TARGET_ARCH: ia32
  96. env-arm: &env-arm
  97. GN_EXTRA_ARGS: 'target_cpu = "arm"'
  98. MKSNAPSHOT_TOOLCHAIN: //build/toolchain/linux:clang_arm
  99. BUILD_NATIVE_MKSNAPSHOT: 1
  100. TARGET_ARCH: arm
  101. env-apple-silicon: &env-apple-silicon
  102. GN_EXTRA_ARGS: 'target_cpu = "arm64" use_prebuilt_v8_context_snapshot = true'
  103. TARGET_ARCH: arm64
  104. USE_PREBUILT_V8_CONTEXT_SNAPSHOT: 1
  105. npm_config_arch: arm64
  106. env-arm64: &env-arm64
  107. GN_EXTRA_ARGS: 'target_cpu = "arm64" fatal_linker_warnings = false enable_linux_installer = false'
  108. MKSNAPSHOT_TOOLCHAIN: //build/toolchain/linux:clang_arm64
  109. BUILD_NATIVE_MKSNAPSHOT: 1
  110. TARGET_ARCH: arm64
  111. env-mas: &env-mas
  112. GN_EXTRA_ARGS: 'is_mas_build = true'
  113. MAS_BUILD: 'true'
  114. env-mas-apple-silicon: &env-mas-apple-silicon
  115. GN_EXTRA_ARGS: 'target_cpu = "arm64" is_mas_build = true use_prebuilt_v8_context_snapshot = true'
  116. MAS_BUILD: 'true'
  117. TARGET_ARCH: arm64
  118. USE_PREBUILT_V8_CONTEXT_SNAPSHOT: 1
  119. env-send-slack-notifications: &env-send-slack-notifications
  120. NOTIFY_SLACK: true
  121. env-global: &env-global
  122. ELECTRON_OUT_DIR: Default
  123. env-linux-medium: &env-linux-medium
  124. <<: *env-global
  125. NUMBER_OF_NINJA_PROCESSES: 3
  126. env-linux-2xlarge: &env-linux-2xlarge
  127. <<: *env-global
  128. NUMBER_OF_NINJA_PROCESSES: 34
  129. env-linux-2xlarge-release: &env-linux-2xlarge-release
  130. <<: *env-global
  131. NUMBER_OF_NINJA_PROCESSES: 16
  132. env-machine-mac: &env-machine-mac
  133. <<: *env-global
  134. NUMBER_OF_NINJA_PROCESSES: 6
  135. env-mac-large: &env-mac-large
  136. <<: *env-global
  137. NUMBER_OF_NINJA_PROCESSES: 18
  138. env-mac-large-release: &env-mac-large-release
  139. <<: *env-global
  140. NUMBER_OF_NINJA_PROCESSES: 8
  141. env-ninja-status: &env-ninja-status
  142. NINJA_STATUS: "[%r processes, %f/%t @ %o/s : %es] "
  143. env-disable-run-as-node: &env-disable-run-as-node
  144. GN_BUILDFLAG_ARGS: 'enable_run_as_node = false'
  145. env-32bit-release: &env-32bit-release
  146. # Set symbol level to 1 for 32 bit releases because of https://crbug.com/648948
  147. GN_BUILDFLAG_ARGS: 'symbol_level = 1'
  148. env-macos-build: &env-macos-build
  149. # Disable pre-compiled headers to reduce out size, only useful for rebuilds
  150. GN_BUILDFLAG_ARGS: 'enable_precompiled_headers = false'
  151. # Individual (shared) steps.
  152. step-maybe-notify-slack-failure: &step-maybe-notify-slack-failure
  153. run:
  154. name: Send a Slack notification on failure
  155. command: |
  156. if [ "$NOTIFY_SLACK" == "true" ]; then
  157. export MESSAGE="Build failed for *<$CIRCLE_BUILD_URL|$CIRCLE_JOB>* nightly build from *$CIRCLE_BRANCH*."
  158. curl -g -H "Content-Type: application/json" -X POST \
  159. -d "{\"text\": \"$MESSAGE\", \"attachments\": [{\"color\": \"#FC5C3C\",\"title\": \"$CIRCLE_JOB nightly build results\",\"title_link\": \"$CIRCLE_BUILD_URL\"}]}" $SLACK_WEBHOOK
  160. fi
  161. when: on_fail
  162. step-maybe-notify-slack-success: &step-maybe-notify-slack-success
  163. run:
  164. name: Send a Slack notification on success
  165. command: |
  166. if [ "$NOTIFY_SLACK" == "true" ]; then
  167. export MESSAGE="Build succeeded for *<$CIRCLE_BUILD_URL|$CIRCLE_JOB>* nightly build from *$CIRCLE_BRANCH*."
  168. curl -g -H "Content-Type: application/json" -X POST \
  169. -d "{\"text\": \"$MESSAGE\", \"attachments\": [{\"color\": \"good\",\"title\": \"$CIRCLE_JOB nightly build results\",\"title_link\": \"$CIRCLE_BUILD_URL\"}]}" $SLACK_WEBHOOK
  170. fi
  171. when: on_success
  172. step-maybe-cleanup-arm64-mac: &step-maybe-cleanup-arm64-mac
  173. run:
  174. name: Cleanup after testing
  175. command: |
  176. if [ "$TARGET_ARCH" == "arm64" ] &&[ "`uname`" == "Darwin" ]; then
  177. killall Electron || echo "No Electron processes left running"
  178. killall Safari || echo "No Safari processes left running"
  179. rm -rf ~/Library/Application\ Support/Electron*
  180. rm -rf ~/Library/Application\ Support/electron*
  181. security delete-generic-password -l "Chromium Safe Storage" || echo "✓ Keychain does not contain password from tests"
  182. security delete-generic-password -l "Electron Test Main Safe Storage" || echo "✓ Keychain does not contain password from tests"
  183. elif [ "$TARGET_ARCH" == "arm" ] || [ "$TARGET_ARCH" == "arm64" ]; then
  184. XVFB=/usr/bin/Xvfb
  185. /sbin/start-stop-daemon --stop --exec $XVFB || echo "Xvfb not running"
  186. pkill electron || echo "electron not running"
  187. rm -rf ~/.config/Electron*
  188. rm -rf ~/.config/electron*
  189. fi
  190. when: always
  191. step-checkout-electron: &step-checkout-electron
  192. checkout:
  193. path: src/electron
  194. step-depot-tools-get: &step-depot-tools-get
  195. run:
  196. name: Get depot tools
  197. command: |
  198. git clone --depth=1 https://chromium.googlesource.com/chromium/tools/depot_tools.git
  199. # remove ninjalog_uploader_wrapper.py from autoninja since we don't use it and it causes problems
  200. if [ "`uname`" == "Darwin" ]; then
  201. sed -i '' '/ninjalog_uploader_wrapper.py/d' ./depot_tools/autoninja
  202. else
  203. sed -i '/ninjalog_uploader_wrapper.py/d' ./depot_tools/autoninja
  204. fi
  205. step-depot-tools-add-to-path: &step-depot-tools-add-to-path
  206. run:
  207. name: Add depot tools to PATH
  208. command: echo 'export PATH="$PATH:'"$PWD"'/depot_tools"' >> $BASH_ENV
  209. step-gclient-sync: &step-gclient-sync
  210. run:
  211. name: Gclient sync
  212. command: |
  213. # If we did not restore a complete sync then we need to sync for realz
  214. if [ ! -s "src/electron/.circle-sync-done" ]; then
  215. gclient config \
  216. --name "src/electron" \
  217. --unmanaged \
  218. $GCLIENT_EXTRA_ARGS \
  219. "$CIRCLE_REPOSITORY_URL"
  220. ELECTRON_USE_THREE_WAY_MERGE_FOR_PATCHES=1 gclient sync --with_branch_heads --with_tags
  221. if [ "$IS_RELEASE" != "true" ]; then
  222. # Re-export all the patches to check if there were changes.
  223. python src/electron/script/export_all_patches.py src/electron/patches/config.json
  224. cd src/electron
  225. git update-index --refresh || true
  226. if ! git diff-index --quiet HEAD --; then
  227. # There are changes to the patches. Make a git commit with the updated patches
  228. git add patches
  229. GIT_COMMITTER_NAME="PatchUp" GIT_COMMITTER_EMAIL="73610968+patchup[bot]@users.noreply.github.com" git commit -m "chore: update patches" --author="PatchUp <73610968+patchup[bot]@users.noreply.github.com>"
  230. # Export it
  231. mkdir -p ../../patches
  232. git format-patch -1 --stdout --keep-subject --no-stat --full-index > ../../patches/update-patches.patch
  233. if (node ./script/push-patch.js 2> /dev/null > /dev/null); then
  234. echo
  235. echo "======================================================================"
  236. echo "Changes to the patches when applying, we have auto-pushed the diff to the current branch"
  237. echo "A new CI job will kick off shortly"
  238. echo "======================================================================"
  239. exit 1
  240. else
  241. echo
  242. echo "======================================================================"
  243. echo "There were changes to the patches when applying."
  244. echo "Check the CI artifacts for a patch you can apply to fix it."
  245. echo "======================================================================"
  246. exit 1
  247. fi
  248. fi
  249. fi
  250. fi
  251. step-setup-env-for-build: &step-setup-env-for-build
  252. run:
  253. name: Setup Environment Variables
  254. command: |
  255. # To find `gn` executable.
  256. echo 'export CHROMIUM_BUILDTOOLS_PATH="'"$PWD"'/src/buildtools"' >> $BASH_ENV
  257. step-setup-goma-for-build: &step-setup-goma-for-build
  258. run:
  259. name: Setup Goma
  260. command: |
  261. echo 'export NUMBER_OF_NINJA_PROCESSES=300' >> $BASH_ENV
  262. if [ "`uname`" == "Darwin" ]; then
  263. echo 'ulimit -n 10000' >> $BASH_ENV
  264. echo 'sudo launchctl limit maxfiles 65536 200000' >> $BASH_ENV
  265. fi
  266. if [ ! -z "$RAW_GOMA_AUTH" ]; then
  267. echo $RAW_GOMA_AUTH > ~/.goma_oauth2_config
  268. fi
  269. git clone https://github.com/electron/build-tools.git
  270. cd build-tools
  271. npm install
  272. mkdir third_party
  273. node -e "require('./src/utils/goma.js').downloadAndPrepare({ gomaOneForAll: true })"
  274. export GOMA_FALLBACK_ON_AUTH_FAILURE=true
  275. third_party/goma/goma_ctl.py ensure_start
  276. echo 'export GN_GOMA_FILE='`node -e "console.log(require('./src/utils/goma.js').gnFilePath)"` >> $BASH_ENV
  277. echo 'export LOCAL_GOMA_DIR='`node -e "console.log(require('./src/utils/goma.js').dir)"` >> $BASH_ENV
  278. echo 'export GOMA_FALLBACK_ON_AUTH_FAILURE=true' >> $BASH_ENV
  279. cd ..
  280. step-restore-brew-cache: &step-restore-brew-cache
  281. restore_cache:
  282. paths:
  283. - /usr/local/Cellar/gnu-tar
  284. - /usr/local/bin/gtar
  285. keys:
  286. - v4-brew-cache-{{ arch }}
  287. step-save-brew-cache: &step-save-brew-cache
  288. save_cache:
  289. paths:
  290. - /usr/local/Cellar/gnu-tar
  291. - /usr/local/bin/gtar
  292. key: v4-brew-cache-{{ arch }}
  293. name: Persisting brew cache
  294. step-get-more-space-on-mac: &step-get-more-space-on-mac
  295. run:
  296. name: Free up space on MacOS
  297. command: |
  298. if [ "`uname`" == "Darwin" ]; then
  299. sudo mkdir -p $TMPDIR/del-target
  300. if [ "$TARGET_ARCH" == "arm64" ]; then
  301. # Remount the root volume as writable, don't ask questions plz
  302. sudo mount -uw /
  303. fi
  304. tmpify() {
  305. if [ -d "$1" ]; then
  306. sudo mv "$1" $TMPDIR/del-target/$(echo $1|shasum -a 256|head -n1|cut -d " " -f1)
  307. fi
  308. }
  309. strip_arm_deep() {
  310. opwd=$(pwd)
  311. cd $1
  312. f=$(find . -perm +111 -type f)
  313. for fp in $f
  314. do
  315. if [[ $(file "$fp") == *"universal binary"* ]]; then
  316. if [[ $(file "$fp") == *"arm64e)"* ]]; then
  317. sudo lipo -remove arm64e "$fp" -o "$fp" || true
  318. fi
  319. if [[ $(file "$fp") == *"arm64)"* ]]; then
  320. sudo lipo -remove arm64 "$fp" -o "$fp" || true
  321. fi
  322. fi
  323. done
  324. cd $opwd
  325. }
  326. tmpify /Library/Developer/CoreSimulator
  327. tmpify ~/Library/Developer/CoreSimulator
  328. tmpify $(xcode-select -p)/Platforms/AppleTVOS.platform
  329. tmpify $(xcode-select -p)/Platforms/iPhoneOS.platform
  330. tmpify $(xcode-select -p)/Platforms/WatchOS.platform
  331. tmpify $(xcode-select -p)/Platforms/WatchSimulator.platform
  332. tmpify $(xcode-select -p)/Platforms/AppleTVSimulator.platform
  333. tmpify $(xcode-select -p)/Platforms/iPhoneSimulator.platform
  334. tmpify $(xcode-select -p)/Toolchains/XcodeDefault.xctoolchain/usr/metal/ios
  335. tmpify $(xcode-select -p)/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift
  336. tmpify $(xcode-select -p)/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift-5.0
  337. tmpify ~/.rubies
  338. tmpify ~/Library/Caches/Homebrew
  339. tmpify /usr/local/Homebrew
  340. sudo rm -rf $TMPDIR/del-target
  341. if [ "$TARGET_ARCH" == "arm64" ]; then
  342. sudo rm -rf "/System/Library/Desktop Pictures"
  343. sudo rm -rf /System/Library/Templates/Data
  344. sudo rm -rf /System/Library/Speech/Voices
  345. sudo rm -rf "/System/Library/Screen Savers"
  346. sudo rm -rf /System/Volumes/Data/Library/Developer/CommandLineTools/SDKs
  347. sudo rm -rf "/System/Volumes/Data/Library/Application Support/Apple/Photos/Print Products"
  348. sudo rm -rf /System/Volumes/Data/Library/Java
  349. sudo rm -rf /System/Volumes/Data/Library/Ruby
  350. sudo rm -rf /System/Volumes/Data/Library/Printers
  351. sudo rm -rf /System/iOSSupport
  352. sudo rm -rf /System/Applications/*.app
  353. sudo rm -rf /System/Applications/Utilities/*.app
  354. sudo rm -rf /System/Library/LinguisticData
  355. sudo rm -rf /System/Volumes/Data/private/var/db/dyld/*
  356. # sudo rm -rf /System/Library/Fonts/*
  357. # sudo rm -rf /System/Library/PreferencePanes
  358. sudo rm -rf /System/Library/AssetsV2/*
  359. sudo rm -rf /Applications/Safari.app
  360. sudo rm -rf ~/project/src/build/linux
  361. sudo rm -rf ~/project/src/third_party/catapult/tracing/test_data
  362. sudo rm -rf ~/project/src/third_party/angle/third_party/VK-GL-CTS
  363. # lipo off some huge binaries arm64 versions to save space
  364. strip_arm_deep $(xcode-select -p)/../SharedFrameworks
  365. strip_arm_deep /System/Volumes/Data/Library/Developer/CommandLineTools/usr
  366. fi
  367. fi
  368. background: true
  369. # On macOS delete all .git directories under src/ expect for
  370. # third_party/angle/ because of build time generation of file
  371. # gen/angle/commit.h depends on third_party/angle/.git/HEAD
  372. # https://chromium-review.googlesource.com/c/angle/angle/+/2074924
  373. # TODO: maybe better to always leave out */.git/HEAD file for all targets ?
  374. step-delete-git-directories: &step-delete-git-directories
  375. run:
  376. name: Delete all .git directories under src on MacOS to free space
  377. command: |
  378. if [ "`uname`" == "Darwin" ]; then
  379. cd src
  380. ( find . -type d -name ".git" -not -path "./third_party/angle/*" ) | xargs rm -rf
  381. fi
  382. # On macOS the yarn install command during gclient sync was run on a linux
  383. # machine and therefore installed a slightly different set of dependencies
  384. # Notably "fsevents" is a macOS only dependency, we rerun yarn install once
  385. # we are on a macOS machine to get the correct state
  386. step-install-npm-deps-on-mac: &step-install-npm-deps-on-mac
  387. run:
  388. name: Install node_modules on MacOS
  389. command: |
  390. if [ "`uname`" == "Darwin" ]; then
  391. cd src/electron
  392. node script/yarn install
  393. fi
  394. # This step handles the differences between the linux "gclient sync"
  395. # and the expected state on macOS
  396. step-fix-sync-on-mac: &step-fix-sync-on-mac
  397. run:
  398. name: Fix Sync on Mac
  399. command: |
  400. if [ "`uname`" == "Darwin" ]; then
  401. # Fix Clang Install (wrong binary)
  402. rm -rf src/third_party/llvm-build
  403. python src/tools/clang/scripts/update.py
  404. fi
  405. step-install-signing-cert-on-mac: &step-install-signing-cert-on-mac
  406. run:
  407. name: Import and trust self-signed codesigning cert on MacOS
  408. command: |
  409. if [ "$TARGET_ARCH" != "arm64" ] && [ "`uname`" == "Darwin" ]; then
  410. cd src/electron
  411. ./script/codesign/generate-identity.sh
  412. fi
  413. step-install-gnutar-on-mac: &step-install-gnutar-on-mac
  414. run:
  415. name: Install gnu-tar on macos
  416. command: |
  417. if [ "`uname`" == "Darwin" ]; then
  418. if [ ! -d /usr/local/Cellar/gnu-tar/ ]; then
  419. brew update
  420. brew install gnu-tar
  421. fi
  422. ln -fs /usr/local/bin/gtar /usr/local/bin/tar
  423. fi
  424. step-gn-gen-default: &step-gn-gen-default
  425. run:
  426. name: Default GN gen
  427. command: |
  428. cd src
  429. gn gen out/Default --args="import(\"$GN_CONFIG\") import(\"$GN_GOMA_FILE\") $GN_EXTRA_ARGS $GN_BUILDFLAG_ARGS"
  430. step-gn-check: &step-gn-check
  431. run:
  432. name: GN check
  433. command: |
  434. cd src
  435. gn check out/Default //electron:electron_lib
  436. gn check out/Default //electron:electron_app
  437. gn check out/Default //electron/shell/common/api:mojo
  438. # Check the hunspell filenames
  439. node electron/script/gen-hunspell-filenames.js --check
  440. node electron/script/gen-libc++-filenames.js --check
  441. step-electron-build: &step-electron-build
  442. run:
  443. name: Electron build
  444. no_output_timeout: 30m
  445. command: |
  446. # On arm platforms we generate a cross-arch ffmpeg that ninja does not seem
  447. # to realize is not correct / should be rebuilt. We delete it here so it is
  448. # rebuilt
  449. if [ "$TRIGGER_ARM_TEST" == "true" ]; then
  450. rm -f src/out/Default/libffmpeg.so
  451. fi
  452. cd src
  453. # Enable if things get really bad
  454. # if [ "$TARGET_ARCH" == "arm64" ] &&[ "`uname`" == "Darwin" ]; then
  455. # diskutil erasevolume HFS+ "xcode_disk" `hdiutil attach -nomount ram://12582912`
  456. # mv /Applications/Xcode-12.beta.5.app /Volumes/xcode_disk/
  457. # ln -s /Volumes/xcode_disk/Xcode-12.beta.5.app /Applications/Xcode-12.beta.5.app
  458. # fi
  459. # Lets generate a snapshot and mksnapshot and then delete all the x-compiled generated files to save space
  460. if [ "$USE_PREBUILT_V8_CONTEXT_SNAPSHOT" == "1" ]; then
  461. ninja -C out/Default electron:electron_mksnapshot_zip -j $NUMBER_OF_NINJA_PROCESSES
  462. ninja -C out/Default tools/v8_context_snapshot -j $NUMBER_OF_NINJA_PROCESSES
  463. gn desc out/Default v8:run_mksnapshot_default args > out/Default/mksnapshot_args
  464. (cd out/Default; zip mksnapshot.zip mksnapshot_args clang_x64_v8_arm64/gen/v8/embedded.S)
  465. rm -rf out/Default/clang_x64_v8_arm64/gen
  466. rm -rf out/Default/clang_x64_v8_arm64/obj
  467. rm -rf out/Default/clang_x64/obj
  468. # Regenerate because we just deleted some ninja files
  469. gn gen out/Default --args="import(\"$GN_CONFIG\") import(\"$GN_GOMA_FILE\") $GN_EXTRA_ARGS $GN_BUILDFLAG_ARGS"
  470. fi
  471. NINJA_SUMMARIZE_BUILD=1 autoninja -C out/Default electron -j $NUMBER_OF_NINJA_PROCESSES
  472. cp out/Default/.ninja_log out/electron_ninja_log
  473. node electron/script/check-symlinks.js
  474. step-native-unittests-build: &step-native-unittests-build
  475. run:
  476. name: Build native test targets
  477. no_output_timeout: 30m
  478. command: |
  479. cd src
  480. ninja -C out/Default shell_browser_ui_unittests -j $NUMBER_OF_NINJA_PROCESSES
  481. step-maybe-electron-dist-strip: &step-maybe-electron-dist-strip
  482. run:
  483. name: Strip electron binaries
  484. command: |
  485. if [ "$STRIP_BINARIES" == "true" ] && [ "`uname`" == "Linux" ]; then
  486. if [ x"$TARGET_ARCH" == x ]; then
  487. target_cpu=x64
  488. elif [ "$TARGET_ARCH" == "ia32" ]; then
  489. target_cpu=x86
  490. else
  491. target_cpu="$TARGET_ARCH"
  492. fi
  493. cd src
  494. electron/script/copy-debug-symbols.py --target-cpu="$target_cpu" --out-dir=out/Default/debug --compress
  495. electron/script/strip-binaries.py --target-cpu="$target_cpu"
  496. electron/script/add-debug-link.py --target-cpu="$target_cpu" --debug-dir=out/Default/debug
  497. fi
  498. step-electron-dist-build: &step-electron-dist-build
  499. run:
  500. name: Build dist.zip
  501. command: |
  502. cd src
  503. if [ "$SKIP_DIST_ZIP" != "1" ]; then
  504. ninja -C out/Default electron:electron_dist_zip
  505. if [ "$CHECK_DIST_MANIFEST" == "1" ]; then
  506. if [ "`uname`" == "Darwin" ]; then
  507. target_os=mac
  508. target_cpu=x64
  509. if [ x"$MAS_BUILD" == x"true" ]; then
  510. target_os=mac_mas
  511. fi
  512. if [ "$TARGET_ARCH" == "arm64" ]; then
  513. target_cpu=arm64
  514. fi
  515. elif [ "`uname`" == "Linux" ]; then
  516. target_os=linux
  517. if [ x"$TARGET_ARCH" == x ]; then
  518. target_cpu=x64
  519. elif [ "$TARGET_ARCH" == "ia32" ]; then
  520. target_cpu=x86
  521. else
  522. target_cpu="$TARGET_ARCH"
  523. fi
  524. else
  525. echo "Unknown system: `uname`"
  526. exit 1
  527. fi
  528. electron/script/zip_manifests/check-zip-manifest.py out/Default/dist.zip electron/script/zip_manifests/dist_zip.$target_os.$target_cpu.manifest
  529. fi
  530. fi
  531. step-electron-chromedriver-build: &step-electron-chromedriver-build
  532. run:
  533. name: Build chromedriver.zip
  534. command: |
  535. cd src
  536. if [ "$TARGET_ARCH" == "arm" ] || [ "$TARGET_ARCH" == "arm64" ]; then
  537. gn gen out/chromedriver --args="import(\"$GN_CONFIG\") import(\"$GN_GOMA_FILE\") is_component_ffmpeg=false proprietary_codecs=false $GN_EXTRA_ARGS $GN_BUILDFLAG_ARGS"
  538. export CHROMEDRIVER_DIR="out/chromedriver"
  539. else
  540. export CHROMEDRIVER_DIR="out/Default"
  541. fi
  542. ninja -C $CHROMEDRIVER_DIR electron:electron_chromedriver -j $NUMBER_OF_NINJA_PROCESSES
  543. if [ "`uname`" == "Linux" ]; then
  544. electron/script/strip-binaries.py --target-cpu="$TARGET_ARCH" --file $PWD/$CHROMEDRIVER_DIR/chromedriver
  545. fi
  546. ninja -C $CHROMEDRIVER_DIR electron:electron_chromedriver_zip
  547. if [ "$TARGET_ARCH" == "arm" ] || [ "$TARGET_ARCH" == "arm64" ]; then
  548. cp out/chromedriver/chromedriver.zip out/Default
  549. fi
  550. step-nodejs-headers-build: &step-nodejs-headers-build
  551. run:
  552. name: Build Node.js headers
  553. command: |
  554. cd src
  555. ninja -C out/Default third_party/electron_node:headers
  556. step-electron-publish: &step-electron-publish
  557. run:
  558. name: Publish Electron Dist
  559. command: |
  560. if [ "`uname`" == "Darwin" ]; then
  561. rm -rf src/out/Default/obj
  562. fi
  563. cd src/electron
  564. if [ "$UPLOAD_TO_S3" == "1" ]; then
  565. echo 'Uploading Electron release distribution to S3'
  566. script/release/uploaders/upload.py --verbose --upload_to_s3
  567. else
  568. echo 'Uploading Electron release distribution to Github releases'
  569. script/release/uploaders/upload.py --verbose
  570. fi
  571. step-persist-data-for-tests: &step-persist-data-for-tests
  572. persist_to_workspace:
  573. root: .
  574. paths:
  575. # Build artifacts
  576. - src/out/Default/dist.zip
  577. - src/out/Default/mksnapshot.zip
  578. - src/out/Default/chromedriver.zip
  579. - src/out/Default/shell_browser_ui_unittests
  580. - src/out/Default/gen/node_headers
  581. - src/out/ffmpeg/ffmpeg.zip
  582. - src/electron
  583. - src/third_party/electron_node
  584. - src/third_party/nan
  585. - src/cross-arch-snapshots
  586. - src/third_party/llvm-build
  587. - src/build/linux
  588. - src/buildtools/third_party/libc++
  589. - src/buildtools/third_party/libc++abi
  590. - src/out/Default/obj/buildtools/third_party
  591. step-electron-dist-unzip: &step-electron-dist-unzip
  592. run:
  593. name: Unzip dist.zip
  594. command: |
  595. cd src/out/Default
  596. # -o overwrite files WITHOUT prompting
  597. # TODO(alexeykuzmin): Remove '-o' when it's no longer needed.
  598. # -: allows to extract archive members into locations outside
  599. # of the current ``extraction root folder''.
  600. # ASan builds have the llvm-symbolizer binaries listed as
  601. # runtime_deps, with their paths as `../../third_party/...`
  602. # unzip exits with non-zero code on such zip files unless -: is
  603. # passed.
  604. unzip -:o dist.zip
  605. step-ffmpeg-unzip: &step-ffmpeg-unzip
  606. run:
  607. name: Unzip ffmpeg.zip
  608. command: |
  609. cd src/out/ffmpeg
  610. unzip -:o ffmpeg.zip
  611. step-mksnapshot-unzip: &step-mksnapshot-unzip
  612. run:
  613. name: Unzip mksnapshot.zip
  614. command: |
  615. cd src/out/Default
  616. unzip -:o mksnapshot.zip
  617. step-chromedriver-unzip: &step-chromedriver-unzip
  618. run:
  619. name: Unzip chromedriver.zip
  620. command: |
  621. cd src/out/Default
  622. unzip -:o chromedriver.zip
  623. step-ffmpeg-gn-gen: &step-ffmpeg-gn-gen
  624. run:
  625. name: ffmpeg GN gen
  626. command: |
  627. cd src
  628. gn gen out/ffmpeg --args="import(\"//electron/build/args/ffmpeg.gn\") import(\"$GN_GOMA_FILE\") $GN_EXTRA_ARGS"
  629. step-ffmpeg-build: &step-ffmpeg-build
  630. run:
  631. name: Non proprietary ffmpeg build
  632. command: |
  633. cd src
  634. ninja -C out/ffmpeg electron:electron_ffmpeg_zip -j $NUMBER_OF_NINJA_PROCESSES
  635. step-verify-ffmpeg: &step-verify-ffmpeg
  636. run:
  637. name: Verify ffmpeg
  638. command: |
  639. cd src
  640. python electron/script/verify-ffmpeg.py --source-root "$PWD" --build-dir out/Default --ffmpeg-path out/ffmpeg
  641. step-verify-mksnapshot: &step-verify-mksnapshot
  642. run:
  643. name: Verify mksnapshot
  644. command: |
  645. if [ "$IS_ASAN" != "1" ]; then
  646. cd src
  647. if [ "$TARGET_ARCH" == "arm" ] || [ "$TARGET_ARCH" == "arm64" ]; then
  648. python electron/script/verify-mksnapshot.py --source-root "$PWD" --build-dir out/Default --snapshot-files-dir $PWD/cross-arch-snapshots
  649. else
  650. python electron/script/verify-mksnapshot.py --source-root "$PWD" --build-dir out/Default
  651. fi
  652. fi
  653. step-verify-chromedriver: &step-verify-chromedriver
  654. run:
  655. name: Verify ChromeDriver
  656. command: |
  657. if [ "$IS_ASAN" != "1" ]; then
  658. cd src
  659. python electron/script/verify-chromedriver.py --source-root "$PWD" --build-dir out/Default
  660. fi
  661. step-setup-linux-for-headless-testing: &step-setup-linux-for-headless-testing
  662. run:
  663. name: Setup for headless testing
  664. command: |
  665. if [ "`uname`" != "Darwin" ]; then
  666. sh -e /etc/init.d/xvfb start
  667. fi
  668. step-show-goma-stats: &step-show-goma-stats
  669. run:
  670. shell: /bin/bash
  671. name: Check goma stats after build
  672. command: |
  673. set +e
  674. set +o pipefail
  675. $LOCAL_GOMA_DIR/goma_ctl.py stat
  676. $LOCAL_GOMA_DIR/diagnose_goma_log.py
  677. true
  678. when: always
  679. step-mksnapshot-build: &step-mksnapshot-build
  680. run:
  681. name: mksnapshot build
  682. command: |
  683. cd src
  684. if [ "$USE_PREBUILT_V8_CONTEXT_SNAPSHOT" != "1" ]; then
  685. ninja -C out/Default electron:electron_mksnapshot -j $NUMBER_OF_NINJA_PROCESSES
  686. gn desc out/Default v8:run_mksnapshot_default args > out/Default/mksnapshot_args
  687. fi
  688. if [ "`uname`" != "Darwin" ]; then
  689. if [ "$TARGET_ARCH" == "arm" ]; then
  690. electron/script/strip-binaries.py --file $PWD/out/Default/clang_x86_v8_arm/mksnapshot
  691. electron/script/strip-binaries.py --file $PWD/out/Default/clang_x86_v8_arm/v8_context_snapshot_generator
  692. elif [ "$TARGET_ARCH" == "arm64" ]; then
  693. electron/script/strip-binaries.py --file $PWD/out/Default/clang_x64_v8_arm64/mksnapshot
  694. electron/script/strip-binaries.py --file $PWD/out/Default/clang_x64_v8_arm64/v8_context_snapshot_generator
  695. else
  696. electron/script/strip-binaries.py --file $PWD/out/Default/mksnapshot
  697. electron/script/strip-binaries.py --file $PWD/out/Default/v8_context_snapshot_generator
  698. fi
  699. fi
  700. if [ "$USE_PREBUILT_V8_CONTEXT_SNAPSHOT" != "1" ] && [ "$SKIP_DIST_ZIP" != "1" ]; then
  701. ninja -C out/Default electron:electron_mksnapshot_zip -j $NUMBER_OF_NINJA_PROCESSES
  702. (cd out/Default; zip mksnapshot.zip mksnapshot_args gen/v8/embedded.S)
  703. fi
  704. step-hunspell-build: &step-hunspell-build
  705. run:
  706. name: hunspell build
  707. command: |
  708. cd src
  709. if [ "$SKIP_DIST_ZIP" != "1" ]; then
  710. ninja -C out/Default electron:hunspell_dictionaries_zip -j $NUMBER_OF_NINJA_PROCESSES
  711. fi
  712. step-maybe-generate-libcxx: &step-maybe-generate-libcxx
  713. run:
  714. name: maybe generate libcxx
  715. command: |
  716. cd src
  717. if [ "`uname`" == "Linux" ]; then
  718. ninja -C out/Default electron:libcxx_headers_zip -j $NUMBER_OF_NINJA_PROCESSES
  719. ninja -C out/Default electron:libcxxabi_headers_zip -j $NUMBER_OF_NINJA_PROCESSES
  720. ninja -C out/Default electron:libcxx_objects_zip -j $NUMBER_OF_NINJA_PROCESSES
  721. fi
  722. step-maybe-generate-breakpad-symbols: &step-maybe-generate-breakpad-symbols
  723. run:
  724. name: Generate breakpad symbols
  725. no_output_timeout: 30m
  726. command: |
  727. if [ "$GENERATE_SYMBOLS" == "true" ]; then
  728. cd src
  729. ninja -C out/Default electron:electron_symbols
  730. fi
  731. step-maybe-zip-symbols: &step-maybe-zip-symbols
  732. run:
  733. name: Zip symbols
  734. command: |
  735. cd src
  736. export BUILD_PATH="$PWD/out/Default"
  737. ninja -C out/Default electron:licenses
  738. ninja -C out/Default electron:electron_version
  739. DELETE_DSYMS_AFTER_ZIP=1 electron/script/zip-symbols.py -b $BUILD_PATH
  740. step-maybe-cross-arch-snapshot: &step-maybe-cross-arch-snapshot
  741. run:
  742. name: Generate cross arch snapshot (arm/arm64)
  743. command: |
  744. if [ "$GENERATE_CROSS_ARCH_SNAPSHOT" == "true" ] && [ -z "$CIRCLE_PR_NUMBER" ]; then
  745. cd src
  746. if [ "$TARGET_ARCH" == "arm" ]; then
  747. export MKSNAPSHOT_PATH="clang_x86_v8_arm"
  748. elif [ "$TARGET_ARCH" == "arm64" ]; then
  749. export MKSNAPSHOT_PATH="clang_x64_v8_arm64"
  750. fi
  751. cp "out/Default/$MKSNAPSHOT_PATH/mksnapshot" out/Default
  752. cp "out/Default/$MKSNAPSHOT_PATH/v8_context_snapshot_generator" out/Default
  753. if [ "`uname`" == "Linux" ]; then
  754. cp "out/Default/$MKSNAPSHOT_PATH/libffmpeg.so" out/Default
  755. elif [ "`uname`" == "Darwin" ]; then
  756. cp "out/Default/$MKSNAPSHOT_PATH/libffmpeg.dylib" out/Default
  757. fi
  758. python electron/script/verify-mksnapshot.py --source-root "$PWD" --build-dir out/Default --create-snapshot-only
  759. mkdir cross-arch-snapshots
  760. cp out/Default-mksnapshot-test/*.bin cross-arch-snapshots
  761. fi
  762. step-maybe-generate-typescript-defs: &step-maybe-generate-typescript-defs
  763. run:
  764. name: Generate type declarations
  765. command: |
  766. if [ "`uname`" == "Darwin" ]; then
  767. cd src/electron
  768. node script/yarn create-typescript-definitions
  769. fi
  770. step-fix-known-hosts-linux: &step-fix-known-hosts-linux
  771. run:
  772. name: Fix Known Hosts on Linux
  773. command: |
  774. if [ "`uname`" == "Linux" ]; then
  775. ./src/electron/.circleci/fix-known-hosts.sh
  776. fi
  777. # Checkout Steps
  778. step-generate-deps-hash: &step-generate-deps-hash
  779. run:
  780. name: Generate DEPS Hash
  781. command: node src/electron/script/generate-deps-hash.js && cat src/electron/.depshash-target
  782. step-touch-sync-done: &step-touch-sync-done
  783. run:
  784. name: Touch Sync Done
  785. command: touch src/electron/.circle-sync-done
  786. # Restore exact src cache based on the hash of DEPS and patches/*
  787. # If no cache is matched EXACTLY then the .circle-sync-done file is empty
  788. # If a cache is matched EXACTLY then the .circle-sync-done file contains "done"
  789. step-maybe-restore-src-cache: &step-maybe-restore-src-cache
  790. restore_cache:
  791. keys:
  792. - v8-src-cache-{{ checksum "src/electron/.depshash" }}
  793. name: Restoring src cache
  794. step-maybe-restore-src-cache-marker: &step-maybe-restore-src-cache-marker
  795. restore_cache:
  796. keys:
  797. - v1-src-cache-marker-{{ checksum "src/electron/.depshash" }}
  798. name: Restoring src cache marker
  799. # Restore exact or closest git cache based on the hash of DEPS and .circle-sync-done
  800. # If the src cache was restored above then this will match an empty cache
  801. # If the src cache was not restored above then this will match a close git cache
  802. step-maybe-restore-git-cache: &step-maybe-restore-git-cache
  803. restore_cache:
  804. paths:
  805. - ~/.gclient-cache
  806. keys:
  807. - v2-gclient-cache-{{ checksum "src/electron/.circle-sync-done" }}-{{ checksum "src/electron/DEPS" }}
  808. - v2-gclient-cache-{{ checksum "src/electron/.circle-sync-done" }}
  809. name: Conditionally restoring git cache
  810. step-restore-out-cache: &step-restore-out-cache
  811. restore_cache:
  812. paths:
  813. - ./src/out/Default
  814. keys:
  815. - v9-out-cache-{{ checksum "src/electron/.depshash" }}-{{ checksum "src/electron/.depshash-target" }}
  816. name: Restoring out cache
  817. step-set-git-cache-path: &step-set-git-cache-path
  818. run:
  819. name: Set GIT_CACHE_PATH to make gclient to use the cache
  820. command: |
  821. # CircleCI does not support interpolation when setting environment variables.
  822. # https://circleci.com/docs/2.0/env-vars/#setting-an-environment-variable-in-a-shell-command
  823. echo 'export GIT_CACHE_PATH="$HOME/.gclient-cache"' >> $BASH_ENV
  824. # Persist the git cache based on the hash of DEPS and .circle-sync-done
  825. # If the src cache was restored above then this will persist an empty cache
  826. step-save-git-cache: &step-save-git-cache
  827. save_cache:
  828. paths:
  829. - ~/.gclient-cache
  830. key: v2-gclient-cache-{{ checksum "src/electron/.circle-sync-done" }}-{{ checksum "src/electron/DEPS" }}
  831. name: Persisting git cache
  832. step-save-out-cache: &step-save-out-cache
  833. save_cache:
  834. paths:
  835. - ./src/out/Default
  836. key: v9-out-cache-{{ checksum "src/electron/.depshash" }}-{{ checksum "src/electron/.depshash-target" }}
  837. name: Persisting out cache
  838. step-run-electron-only-hooks: &step-run-electron-only-hooks
  839. run:
  840. name: Run Electron Only Hooks
  841. command: gclient runhooks --spec="solutions=[{'name':'src/electron','url':None,'deps_file':'DEPS','custom_vars':{'process_deps':False},'managed':False}]"
  842. step-generate-deps-hash-cleanly: &step-generate-deps-hash-cleanly
  843. run:
  844. name: Generate DEPS Hash
  845. command: (cd src/electron && git checkout .) && node src/electron/script/generate-deps-hash.js && cat src/electron/.depshash-target
  846. # Mark the sync as done for future cache saving
  847. step-mark-sync-done: &step-mark-sync-done
  848. run:
  849. name: Mark Sync Done
  850. command: echo DONE > src/electron/.circle-sync-done
  851. # Minimize the size of the cache
  852. step-minimize-workspace-size-from-checkout: &step-minimize-workspace-size-from-checkout
  853. run:
  854. name: Remove some unused data to avoid storing it in the workspace/cache
  855. command: |
  856. rm -rf src/android_webview
  857. rm -rf src/ios/chrome
  858. rm -rf src/third_party/blink/web_tests
  859. rm -rf src/third_party/blink/perf_tests
  860. rm -rf src/third_party/WebKit/LayoutTests
  861. rm -rf third_party/electron_node/deps/openssl
  862. rm -rf third_party/electron_node/deps/v8
  863. rm -rf chrome/test/data/xr/webvr_info
  864. # Save the src cache based on the deps hash
  865. step-save-src-cache: &step-save-src-cache
  866. save_cache:
  867. paths:
  868. - /var/portal
  869. key: v8-src-cache-{{ checksum "/var/portal/src/electron/.depshash" }}
  870. name: Persisting src cache
  871. step-make-src-cache-marker: &step-make-src-cache-marker
  872. run:
  873. name: Making src cache marker
  874. command: touch .src-cache-marker
  875. step-save-src-cache-marker: &step-save-src-cache-marker
  876. save_cache:
  877. paths:
  878. - .src-cache-marker
  879. key: v1-src-cache-marker-{{ checksum "/var/portal/src/electron/.depshash" }}
  880. step-maybe-early-exit-no-doc-change: &step-maybe-early-exit-no-doc-change
  881. run:
  882. name: Shortcircuit job if change is not doc only
  883. command: |
  884. if [ ! -s src/electron/.skip-ci-build ]; then
  885. circleci-agent step halt
  886. fi
  887. step-ts-compile: &step-ts-compile
  888. run:
  889. name: Run TS/JS compile on doc only change
  890. command: |
  891. cd src
  892. ninja -C out/Default electron:default_app_js -j $NUMBER_OF_NINJA_PROCESSES
  893. ninja -C out/Default electron:electron_js2c -j $NUMBER_OF_NINJA_PROCESSES
  894. # List of all steps.
  895. steps-electron-gn-check: &steps-electron-gn-check
  896. steps:
  897. - attach_workspace:
  898. at: .
  899. - *step-depot-tools-add-to-path
  900. - *step-setup-env-for-build
  901. - *step-setup-goma-for-build
  902. - *step-gn-gen-default
  903. - *step-gn-check
  904. steps-electron-ts-compile-for-doc-change: &steps-electron-ts-compile-for-doc-change
  905. steps:
  906. # Checkout - Copied from steps-checkout
  907. - *step-checkout-electron
  908. - *step-depot-tools-get
  909. - *step-depot-tools-add-to-path
  910. - *step-restore-brew-cache
  911. - *step-install-gnutar-on-mac
  912. - *step-get-more-space-on-mac
  913. - *step-generate-deps-hash
  914. - *step-touch-sync-done
  915. - maybe-restore-portaled-src-cache
  916. - *step-maybe-restore-git-cache
  917. - *step-set-git-cache-path
  918. # This sync call only runs if .circle-sync-done is an EMPTY file
  919. - *step-gclient-sync
  920. # These next few steps reset Electron to the correct commit regardless of which cache was restored
  921. - run:
  922. name: Wipe Electron
  923. command: rm -rf src/electron
  924. - *step-checkout-electron
  925. - *step-run-electron-only-hooks
  926. - *step-generate-deps-hash-cleanly
  927. - *step-mark-sync-done
  928. - *step-minimize-workspace-size-from-checkout
  929. - *step-depot-tools-add-to-path
  930. - *step-setup-env-for-build
  931. - *step-setup-goma-for-build
  932. - *step-get-more-space-on-mac
  933. - *step-install-npm-deps-on-mac
  934. - *step-fix-sync-on-mac
  935. - *step-gn-gen-default
  936. #Compile ts/js to verify doc change didn't break anything
  937. - *step-ts-compile
  938. steps-native-tests: &steps-native-tests
  939. steps:
  940. - attach_workspace:
  941. at: .
  942. - *step-depot-tools-add-to-path
  943. - *step-setup-env-for-build
  944. - *step-setup-goma-for-build
  945. - *step-gn-gen-default
  946. - run:
  947. name: Build tests
  948. command: |
  949. cd src
  950. ninja -C out/Default $BUILD_TARGET
  951. - *step-show-goma-stats
  952. - *step-setup-linux-for-headless-testing
  953. - run:
  954. name: Run tests
  955. command: |
  956. mkdir test_results
  957. python src/electron/script/native-tests.py run \
  958. --config $TESTS_CONFIG \
  959. --tests-dir src/out/Default \
  960. --output-dir test_results \
  961. $TESTS_ARGS
  962. - store_artifacts:
  963. path: test_results
  964. destination: test_results # Put it in the root folder.
  965. - store_test_results:
  966. path: test_results
  967. steps-verify-ffmpeg: &steps-verify-ffmpeg
  968. steps:
  969. - attach_workspace:
  970. at: .
  971. - *step-depot-tools-add-to-path
  972. - *step-electron-dist-unzip
  973. - *step-ffmpeg-unzip
  974. - *step-setup-linux-for-headless-testing
  975. - *step-verify-ffmpeg
  976. - *step-maybe-notify-slack-failure
  977. steps-tests: &steps-tests
  978. steps:
  979. - attach_workspace:
  980. at: .
  981. - *step-depot-tools-add-to-path
  982. - *step-electron-dist-unzip
  983. - *step-mksnapshot-unzip
  984. - *step-chromedriver-unzip
  985. - *step-setup-linux-for-headless-testing
  986. - *step-restore-brew-cache
  987. - *step-fix-known-hosts-linux
  988. - *step-install-signing-cert-on-mac
  989. - run:
  990. name: Run Electron tests
  991. environment:
  992. MOCHA_REPORTER: mocha-multi-reporters
  993. ELECTRON_TEST_RESULTS_DIR: junit
  994. MOCHA_MULTI_REPORTERS: mocha-junit-reporter, tap
  995. ELECTRON_DISABLE_SECURITY_WARNINGS: 1
  996. command: |
  997. cd src
  998. if [ "$IS_ASAN" == "1" ]; then
  999. ASAN_SYMBOLIZE="$PWD/tools/valgrind/asan/asan_symbolize.py --executable-path=$PWD/out/Default/electron"
  1000. export ASAN_OPTIONS="symbolize=0 handle_abort=1"
  1001. export G_SLICE=always-malloc
  1002. export NSS_DISABLE_ARENA_FREE_LIST=1
  1003. export NSS_DISABLE_UNLOAD=1
  1004. export LLVM_SYMBOLIZER_PATH=$PWD/third_party/llvm-build/Release+Asserts/bin/llvm-symbolizer
  1005. export MOCHA_TIMEOUT=180000
  1006. echo "Piping output to ASAN_SYMBOLIZE ($ASAN_SYMBOLIZE)"
  1007. (cd electron && node script/yarn test --runners=main --trace-uncaught --enable-logging --files $(circleci tests glob spec-main/*-spec.ts | circleci tests split --split-by=timings)) 2>&1 | $ASAN_SYMBOLIZE
  1008. (cd electron && node script/yarn test --runners=remote --trace-uncaught --enable-logging --files $(circleci tests glob spec/*-spec.js | circleci tests split --split-by=timings)) 2>&1 | $ASAN_SYMBOLIZE
  1009. else
  1010. if [ "$TARGET_ARCH" == "arm" ] || [ "$TARGET_ARCH" == "arm64" ]; then
  1011. export ELECTRON_SKIP_NATIVE_MODULE_TESTS=true
  1012. (cd electron && node script/yarn test --runners=main --trace-uncaught --enable-logging)
  1013. (cd electron && node script/yarn test --runners=remote --trace-uncaught --enable-logging)
  1014. else
  1015. if [ "$TARGET_ARCH" == "ia32" ]; then
  1016. npm_config_arch=x64 node electron/node_modules/dugite/script/download-git.js
  1017. fi
  1018. (cd electron && node script/yarn test --runners=main --trace-uncaught --enable-logging --files $(circleci tests glob spec-main/*-spec.ts | circleci tests split --split-by=timings))
  1019. (cd electron && node script/yarn test --runners=remote --trace-uncaught --enable-logging --files $(circleci tests glob spec/*-spec.js | circleci tests split --split-by=timings))
  1020. fi
  1021. fi
  1022. - run:
  1023. name: Check test results existence
  1024. command: |
  1025. cd src
  1026. # Check if test results exist and are not empty.
  1027. if [ ! -s "junit/test-results-remote.xml" ]; then
  1028. exit 1
  1029. fi
  1030. if [ ! -s "junit/test-results-main.xml" ]; then
  1031. exit 1
  1032. fi
  1033. - store_test_results:
  1034. path: src/junit
  1035. - *step-verify-mksnapshot
  1036. - *step-verify-chromedriver
  1037. - *step-maybe-notify-slack-failure
  1038. - *step-maybe-cleanup-arm64-mac
  1039. steps-test-nan: &steps-test-nan
  1040. steps:
  1041. - attach_workspace:
  1042. at: .
  1043. - *step-depot-tools-add-to-path
  1044. - *step-electron-dist-unzip
  1045. - *step-setup-linux-for-headless-testing
  1046. - *step-fix-known-hosts-linux
  1047. - run:
  1048. name: Run Nan Tests
  1049. command: |
  1050. cd src
  1051. node electron/script/nan-spec-runner.js
  1052. steps-test-node: &steps-test-node
  1053. steps:
  1054. - attach_workspace:
  1055. at: .
  1056. - *step-depot-tools-add-to-path
  1057. - *step-electron-dist-unzip
  1058. - *step-setup-linux-for-headless-testing
  1059. - *step-fix-known-hosts-linux
  1060. - run:
  1061. name: Run Node Tests
  1062. command: |
  1063. cd src
  1064. node electron/script/node-spec-runner.js --default --jUnitDir=junit
  1065. - store_test_results:
  1066. path: src/junit
  1067. # Command Aliases
  1068. commands:
  1069. maybe-restore-portaled-src-cache:
  1070. parameters:
  1071. halt-if-successful:
  1072. type: boolean
  1073. default: false
  1074. steps:
  1075. - run:
  1076. name: Prepare for cross-OS sync restore
  1077. command: |
  1078. sudo mkdir -p /var/portal
  1079. sudo chown -R $(id -u):$(id -g) /var/portal
  1080. - when:
  1081. condition: << parameters.halt-if-successful >>
  1082. steps:
  1083. - *step-maybe-restore-src-cache-marker
  1084. - run:
  1085. name: Halt the job early if the src cache exists
  1086. command: |
  1087. if [ -f ".src-cache-marker" ]; then
  1088. circleci-agent step halt
  1089. fi
  1090. - *step-maybe-restore-src-cache
  1091. - run:
  1092. name: Fix the src cache restore point on macOS
  1093. command: |
  1094. if [ -d "/var/portal/src" ]; then
  1095. echo Relocating Cache
  1096. rm -rf src
  1097. mv /var/portal/src ./
  1098. fi
  1099. move_and_store_all_artifacts:
  1100. steps:
  1101. - run:
  1102. name: Move all generated artifacts to upload folder
  1103. command: |
  1104. rm -rf generated_artifacts
  1105. mkdir generated_artifacts
  1106. mv_if_exist() {
  1107. if [ -f "$1" ] || [ -d "$1" ]; then
  1108. echo Storing $1
  1109. mv $1 generated_artifacts
  1110. else
  1111. echo Skipping $1 - It is not present on disk
  1112. fi
  1113. }
  1114. mv_if_exist src/out/Default/dist.zip
  1115. mv_if_exist src/out/Default/shell_browser_ui_unittests
  1116. mv_if_exist src/out/Default/gen/node_headers.tar.gz
  1117. mv_if_exist src/out/Default/symbols.zip
  1118. mv_if_exist src/out/Default/mksnapshot.zip
  1119. mv_if_exist src/out/Default/chromedriver.zip
  1120. mv_if_exist src/out/ffmpeg/ffmpeg.zip
  1121. mv_if_exist src/out/Default/hunspell_dictionaries.zip
  1122. mv_if_exist src/cross-arch-snapshots
  1123. mv_if_exist src/out/electron_ninja_log
  1124. when: always
  1125. - store_artifacts:
  1126. path: generated_artifacts
  1127. destination: ./
  1128. - store_artifacts:
  1129. path: generated_artifacts/cross-arch-snapshots
  1130. destination: cross-arch-snapshots
  1131. checkout-from-cache:
  1132. steps:
  1133. - *step-checkout-electron
  1134. - *step-depot-tools-get
  1135. - *step-depot-tools-add-to-path
  1136. - *step-generate-deps-hash
  1137. - maybe-restore-portaled-src-cache
  1138. - run:
  1139. name: Ensure src checkout worked
  1140. command: |
  1141. if [ ! -d "src/third_party/blink" ]; then
  1142. echo src cache was not restored for some reason, idk what happened here...
  1143. exit 1
  1144. fi
  1145. - run:
  1146. name: Wipe Electron
  1147. command: rm -rf src/electron
  1148. - *step-checkout-electron
  1149. - *step-run-electron-only-hooks
  1150. - *step-generate-deps-hash-cleanly
  1151. electron-build:
  1152. parameters:
  1153. attach:
  1154. type: boolean
  1155. default: false
  1156. persist:
  1157. type: boolean
  1158. default: true
  1159. persist-checkout:
  1160. type: boolean
  1161. default: false
  1162. checkout:
  1163. type: boolean
  1164. default: true
  1165. checkout-and-assume-cache:
  1166. type: boolean
  1167. default: false
  1168. save-git-cache:
  1169. type: boolean
  1170. default: false
  1171. checkout-to-create-src-cache:
  1172. type: boolean
  1173. default: false
  1174. build:
  1175. type: boolean
  1176. default: true
  1177. use-out-cache:
  1178. type: boolean
  1179. default: true
  1180. restore-src-cache:
  1181. type: boolean
  1182. default: true
  1183. build-nonproprietary-ffmpeg:
  1184. type: boolean
  1185. default: true
  1186. steps:
  1187. - when:
  1188. condition: << parameters.attach >>
  1189. steps:
  1190. - attach_workspace:
  1191. at: .
  1192. - run: rm -rf src/electron
  1193. - *step-restore-brew-cache
  1194. - *step-install-gnutar-on-mac
  1195. - *step-save-brew-cache
  1196. - when:
  1197. condition: << parameters.checkout-and-assume-cache >>
  1198. steps:
  1199. - checkout-from-cache
  1200. - when:
  1201. condition: << parameters.checkout >>
  1202. steps:
  1203. # Checkout - Copied from steps-checkout
  1204. - *step-checkout-electron
  1205. - *step-depot-tools-get
  1206. - *step-depot-tools-add-to-path
  1207. - *step-get-more-space-on-mac
  1208. - *step-generate-deps-hash
  1209. - *step-touch-sync-done
  1210. - when:
  1211. condition: << parameters.restore-src-cache >>
  1212. steps:
  1213. - maybe-restore-portaled-src-cache:
  1214. halt-if-successful: << parameters.checkout-to-create-src-cache >>
  1215. - *step-maybe-restore-git-cache
  1216. - *step-set-git-cache-path
  1217. # This sync call only runs if .circle-sync-done is an EMPTY file
  1218. - *step-gclient-sync
  1219. - store_artifacts:
  1220. path: patches
  1221. - when:
  1222. condition: << parameters.save-git-cache >>
  1223. steps:
  1224. - *step-save-git-cache
  1225. # These next few steps reset Electron to the correct commit regardless of which cache was restored
  1226. - run:
  1227. name: Wipe Electron
  1228. command: rm -rf src/electron
  1229. - *step-checkout-electron
  1230. - *step-run-electron-only-hooks
  1231. - *step-generate-deps-hash-cleanly
  1232. - *step-mark-sync-done
  1233. - *step-minimize-workspace-size-from-checkout
  1234. - *step-delete-git-directories
  1235. - when:
  1236. condition: << parameters.persist-checkout >>
  1237. steps:
  1238. - persist_to_workspace:
  1239. root: .
  1240. paths:
  1241. - depot_tools
  1242. - src
  1243. - when:
  1244. condition: << parameters.checkout-to-create-src-cache >>
  1245. steps:
  1246. - run:
  1247. name: Move src folder to the cross-OS portal
  1248. command: |
  1249. sudo mkdir -p /var/portal
  1250. sudo chown -R $(id -u):$(id -g) /var/portal
  1251. mv ./src /var/portal
  1252. - *step-save-src-cache
  1253. - *step-make-src-cache-marker
  1254. - *step-save-src-cache-marker
  1255. - when:
  1256. condition: << parameters.build >>
  1257. steps:
  1258. - *step-depot-tools-add-to-path
  1259. - *step-setup-env-for-build
  1260. - *step-setup-goma-for-build
  1261. - *step-get-more-space-on-mac
  1262. - *step-fix-sync-on-mac
  1263. - *step-delete-git-directories
  1264. # Electron app
  1265. - when:
  1266. condition: << parameters.use-out-cache >>
  1267. steps:
  1268. - *step-restore-out-cache
  1269. - *step-gn-gen-default
  1270. - *step-electron-build
  1271. - *step-maybe-electron-dist-strip
  1272. - *step-electron-dist-build
  1273. # Native test targets
  1274. - *step-native-unittests-build
  1275. # Node.js headers
  1276. - *step-nodejs-headers-build
  1277. - *step-show-goma-stats
  1278. # mksnapshot
  1279. - *step-mksnapshot-build
  1280. - *step-maybe-cross-arch-snapshot
  1281. # chromedriver
  1282. - *step-electron-chromedriver-build
  1283. - when:
  1284. condition: << parameters.build-nonproprietary-ffmpeg >>
  1285. steps:
  1286. # ffmpeg
  1287. - *step-ffmpeg-gn-gen
  1288. - *step-ffmpeg-build
  1289. # hunspell
  1290. - *step-hunspell-build
  1291. # Save all data needed for a further tests run.
  1292. - when:
  1293. condition: << parameters.persist >>
  1294. steps:
  1295. - *step-persist-data-for-tests
  1296. - when:
  1297. condition: << parameters.build >>
  1298. steps:
  1299. - *step-maybe-generate-breakpad-symbols
  1300. - *step-maybe-zip-symbols
  1301. - when:
  1302. condition: << parameters.build >>
  1303. steps:
  1304. - move_and_store_all_artifacts
  1305. - run:
  1306. name: Remove the big things on macOS, this seems to be better on average
  1307. command: |
  1308. if [ "`uname`" == "Darwin" ]; then
  1309. mkdir -p src/out/Default
  1310. cd src/out/Default
  1311. find . -type f -size +50M -delete
  1312. mkdir -p gen/electron
  1313. cd gen/electron
  1314. # These files do not seem to like being in a cache, let us remove them
  1315. find . -type f -name '*_pkg_info' -delete
  1316. fi
  1317. - when:
  1318. condition: << parameters.use-out-cache >>
  1319. steps:
  1320. - *step-save-out-cache
  1321. - *step-maybe-notify-slack-failure
  1322. electron-publish:
  1323. parameters:
  1324. attach:
  1325. type: boolean
  1326. default: false
  1327. checkout:
  1328. type: boolean
  1329. default: true
  1330. steps:
  1331. - when:
  1332. condition: << parameters.attach >>
  1333. steps:
  1334. - attach_workspace:
  1335. at: .
  1336. - when:
  1337. condition: << parameters.checkout >>
  1338. steps:
  1339. - *step-depot-tools-get
  1340. - *step-depot-tools-add-to-path
  1341. - *step-restore-brew-cache
  1342. - *step-get-more-space-on-mac
  1343. - when:
  1344. condition: << parameters.checkout >>
  1345. steps:
  1346. - *step-checkout-electron
  1347. - *step-touch-sync-done
  1348. - *step-maybe-restore-git-cache
  1349. - *step-set-git-cache-path
  1350. - *step-gclient-sync
  1351. - *step-delete-git-directories
  1352. - *step-minimize-workspace-size-from-checkout
  1353. - *step-fix-sync-on-mac
  1354. - *step-setup-env-for-build
  1355. - *step-setup-goma-for-build
  1356. - *step-gn-gen-default
  1357. # Electron app
  1358. - *step-electron-build
  1359. - *step-show-goma-stats
  1360. - *step-maybe-generate-breakpad-symbols
  1361. - *step-maybe-electron-dist-strip
  1362. - *step-electron-dist-build
  1363. - *step-maybe-zip-symbols
  1364. # mksnapshot
  1365. - *step-mksnapshot-build
  1366. # chromedriver
  1367. - *step-electron-chromedriver-build
  1368. # Node.js headers
  1369. - *step-nodejs-headers-build
  1370. # ffmpeg
  1371. - *step-ffmpeg-gn-gen
  1372. - *step-ffmpeg-build
  1373. # hunspell
  1374. - *step-hunspell-build
  1375. # libcxx
  1376. - *step-maybe-generate-libcxx
  1377. # typescript defs
  1378. - *step-maybe-generate-typescript-defs
  1379. # Publish
  1380. - *step-electron-publish
  1381. - move_and_store_all_artifacts
  1382. # List of all jobs.
  1383. jobs:
  1384. # Layer 0: Docs. Standalone.
  1385. ts-compile-doc-change:
  1386. executor:
  1387. name: linux-docker
  1388. size: medium
  1389. environment:
  1390. <<: *env-linux-medium
  1391. <<: *env-testing-build
  1392. GCLIENT_EXTRA_ARGS: '--custom-var=checkout_arm=True --custom-var=checkout_arm64=True'
  1393. <<: *steps-electron-ts-compile-for-doc-change
  1394. # Layer 1: Checkout.
  1395. linux-checkout-for-workspace:
  1396. executor: linux-docker
  1397. environment:
  1398. <<: *env-linux-2xlarge
  1399. GCLIENT_EXTRA_ARGS: '--custom-var=checkout_arm=True --custom-var=checkout_arm64=True'
  1400. steps:
  1401. - electron-build:
  1402. persist: false
  1403. build: false
  1404. checkout: true
  1405. persist-checkout: true
  1406. linux-make-src-cache:
  1407. executor: linux-docker
  1408. environment:
  1409. <<: *env-linux-2xlarge
  1410. GCLIENT_EXTRA_ARGS: '--custom-var=checkout_arm=True --custom-var=checkout_arm64=True'
  1411. steps:
  1412. - electron-build:
  1413. persist: false
  1414. build: false
  1415. checkout: true
  1416. save-git-cache: true
  1417. checkout-to-create-src-cache: true
  1418. linux-checkout-for-native-tests:
  1419. executor: linux-docker
  1420. environment:
  1421. <<: *env-linux-2xlarge
  1422. GCLIENT_EXTRA_ARGS: '--custom-var=checkout_pyyaml=True'
  1423. steps:
  1424. - electron-build:
  1425. persist: false
  1426. build: false
  1427. checkout: true
  1428. persist-checkout: true
  1429. linux-checkout-for-native-tests-with-no-patches:
  1430. executor: linux-docker
  1431. environment:
  1432. <<: *env-linux-2xlarge
  1433. GCLIENT_EXTRA_ARGS: '--custom-var=apply_patches=False --custom-var=checkout_pyyaml=True'
  1434. steps:
  1435. - electron-build:
  1436. persist: false
  1437. build: false
  1438. checkout: true
  1439. persist-checkout: true
  1440. mac-checkout:
  1441. executor: linux-docker
  1442. environment:
  1443. <<: *env-linux-2xlarge
  1444. <<: *env-testing-build
  1445. <<: *env-macos-build
  1446. GCLIENT_EXTRA_ARGS: '--custom-var=checkout_mac=True --custom-var=host_os=mac'
  1447. steps:
  1448. - electron-build:
  1449. persist: false
  1450. build: false
  1451. checkout: true
  1452. persist-checkout: true
  1453. restore-src-cache: false
  1454. mac-checkout-for-workspace:
  1455. executor: linux-docker
  1456. environment:
  1457. <<: *env-linux-2xlarge
  1458. <<: *env-testing-build
  1459. <<: *env-macos-build
  1460. GCLIENT_EXTRA_ARGS: '--custom-var=checkout_mac=True --custom-var=host_os=mac'
  1461. steps:
  1462. - electron-build:
  1463. persist: false
  1464. build: false
  1465. checkout: true
  1466. persist-checkout: true
  1467. mac-make-src-cache:
  1468. executor: linux-docker
  1469. environment:
  1470. <<: *env-linux-2xlarge
  1471. <<: *env-testing-build
  1472. <<: *env-macos-build
  1473. GCLIENT_EXTRA_ARGS: '--custom-var=checkout_mac=True --custom-var=host_os=mac'
  1474. steps:
  1475. - electron-build:
  1476. persist: false
  1477. build: false
  1478. checkout: true
  1479. save-git-cache: true
  1480. checkout-to-create-src-cache: true
  1481. # Layer 2: Builds.
  1482. linux-x64-testing:
  1483. executor: linux-docker
  1484. environment:
  1485. <<: *env-global
  1486. <<: *env-testing-build
  1487. <<: *env-ninja-status
  1488. GCLIENT_EXTRA_ARGS: '--custom-var=checkout_arm=True --custom-var=checkout_arm64=True'
  1489. steps:
  1490. - electron-build:
  1491. persist: true
  1492. checkout: true
  1493. use-out-cache: false
  1494. linux-x64-testing-asan:
  1495. executor: linux-docker
  1496. environment:
  1497. <<: *env-global
  1498. <<: *env-testing-build
  1499. <<: *env-ninja-status
  1500. CHECK_DIST_MANIFEST: '0'
  1501. GCLIENT_EXTRA_ARGS: '--custom-var=checkout_arm=True --custom-var=checkout_arm64=True'
  1502. GN_EXTRA_ARGS: 'is_asan = true'
  1503. steps:
  1504. - electron-build:
  1505. persist: true
  1506. checkout: true
  1507. use-out-cache: false
  1508. build-nonproprietary-ffmpeg: false
  1509. linux-x64-testing-no-run-as-node:
  1510. executor: linux-docker
  1511. environment:
  1512. <<: *env-linux-2xlarge
  1513. <<: *env-testing-build
  1514. <<: *env-ninja-status
  1515. <<: *env-disable-run-as-node
  1516. GCLIENT_EXTRA_ARGS: '--custom-var=checkout_arm=True --custom-var=checkout_arm64=True'
  1517. steps:
  1518. - electron-build:
  1519. persist: false
  1520. checkout: true
  1521. use-out-cache: false
  1522. linux-x64-testing-gn-check:
  1523. executor:
  1524. name: linux-docker
  1525. size: medium
  1526. environment:
  1527. <<: *env-linux-medium
  1528. <<: *env-testing-build
  1529. <<: *steps-electron-gn-check
  1530. linux-x64-release:
  1531. executor: linux-docker
  1532. environment:
  1533. <<: *env-linux-2xlarge-release
  1534. <<: *env-release-build
  1535. <<: *env-send-slack-notifications
  1536. <<: *env-ninja-status
  1537. GCLIENT_EXTRA_ARGS: '--custom-var=checkout_arm=True --custom-var=checkout_arm64=True'
  1538. steps:
  1539. - electron-build:
  1540. persist: true
  1541. checkout: true
  1542. linux-x64-publish:
  1543. executor: linux-docker
  1544. environment:
  1545. <<: *env-linux-2xlarge-release
  1546. <<: *env-release-build
  1547. UPLOAD_TO_S3: << pipeline.parameters.upload-to-s3 >>
  1548. <<: *env-ninja-status
  1549. steps:
  1550. - run: echo running
  1551. - when:
  1552. condition:
  1553. or:
  1554. - equal: ["all", << pipeline.parameters.linux-publish-arch-limit >>]
  1555. - equal: ["x64", << pipeline.parameters.linux-publish-arch-limit >>]
  1556. steps:
  1557. - electron-publish:
  1558. attach: false
  1559. checkout: true
  1560. linux-ia32-testing:
  1561. executor: linux-docker
  1562. environment:
  1563. <<: *env-global
  1564. <<: *env-ia32
  1565. <<: *env-testing-build
  1566. <<: *env-ninja-status
  1567. GCLIENT_EXTRA_ARGS: '--custom-var=checkout_arm=True --custom-var=checkout_arm64=True'
  1568. steps:
  1569. - electron-build:
  1570. persist: true
  1571. checkout: true
  1572. use-out-cache: false
  1573. linux-ia32-release:
  1574. executor: linux-docker
  1575. environment:
  1576. <<: *env-linux-2xlarge-release
  1577. <<: *env-ia32
  1578. <<: *env-release-build
  1579. <<: *env-send-slack-notifications
  1580. <<: *env-ninja-status
  1581. GCLIENT_EXTRA_ARGS: '--custom-var=checkout_arm=True --custom-var=checkout_arm64=True'
  1582. steps:
  1583. - electron-build:
  1584. persist: true
  1585. checkout: true
  1586. linux-ia32-publish:
  1587. executor: linux-docker
  1588. environment:
  1589. <<: *env-linux-2xlarge-release
  1590. <<: *env-ia32
  1591. <<: *env-release-build
  1592. <<: *env-32bit-release
  1593. UPLOAD_TO_S3: << pipeline.parameters.upload-to-s3 >>
  1594. <<: *env-ninja-status
  1595. steps:
  1596. - run: echo running
  1597. - when:
  1598. condition:
  1599. or:
  1600. - equal: ["all", << pipeline.parameters.linux-publish-arch-limit >>]
  1601. - equal: ["ia32", << pipeline.parameters.linux-publish-arch-limit >>]
  1602. steps:
  1603. - electron-publish:
  1604. attach: false
  1605. checkout: true
  1606. linux-arm-testing:
  1607. executor: linux-docker
  1608. environment:
  1609. <<: *env-global
  1610. <<: *env-arm
  1611. <<: *env-testing-build
  1612. <<: *env-ninja-status
  1613. TRIGGER_ARM_TEST: true
  1614. GENERATE_CROSS_ARCH_SNAPSHOT: true
  1615. GCLIENT_EXTRA_ARGS: '--custom-var=checkout_arm=True --custom-var=checkout_arm64=True'
  1616. steps:
  1617. - electron-build:
  1618. persist: true
  1619. checkout: true
  1620. use-out-cache: false
  1621. linux-arm-release:
  1622. executor: linux-docker
  1623. environment:
  1624. <<: *env-linux-2xlarge-release
  1625. <<: *env-arm
  1626. <<: *env-release-build
  1627. <<: *env-send-slack-notifications
  1628. <<: *env-ninja-status
  1629. GCLIENT_EXTRA_ARGS: '--custom-var=checkout_arm=True --custom-var=checkout_arm64=True'
  1630. steps:
  1631. - electron-build:
  1632. persist: false
  1633. checkout: true
  1634. linux-arm-publish:
  1635. executor: linux-docker
  1636. environment:
  1637. <<: *env-linux-2xlarge-release
  1638. <<: *env-arm
  1639. <<: *env-release-build
  1640. <<: *env-32bit-release
  1641. GCLIENT_EXTRA_ARGS: '--custom-var=checkout_arm=True'
  1642. UPLOAD_TO_S3: << pipeline.parameters.upload-to-s3 >>
  1643. <<: *env-ninja-status
  1644. steps:
  1645. - run: echo running
  1646. - when:
  1647. condition:
  1648. or:
  1649. - equal: ["all", << pipeline.parameters.linux-publish-arch-limit >>]
  1650. - equal: ["arm", << pipeline.parameters.linux-publish-arch-limit >>]
  1651. steps:
  1652. - electron-publish:
  1653. attach: false
  1654. checkout: true
  1655. linux-arm64-testing:
  1656. executor: linux-docker
  1657. environment:
  1658. <<: *env-global
  1659. <<: *env-arm64
  1660. <<: *env-testing-build
  1661. <<: *env-ninja-status
  1662. TRIGGER_ARM_TEST: true
  1663. GENERATE_CROSS_ARCH_SNAPSHOT: true
  1664. GCLIENT_EXTRA_ARGS: '--custom-var=checkout_arm=True --custom-var=checkout_arm64=True'
  1665. steps:
  1666. - electron-build:
  1667. persist: true
  1668. checkout: true
  1669. use-out-cache: false
  1670. linux-arm64-testing-gn-check:
  1671. executor:
  1672. name: linux-docker
  1673. size: medium
  1674. environment:
  1675. <<: *env-linux-medium
  1676. <<: *env-arm64
  1677. <<: *env-testing-build
  1678. <<: *steps-electron-gn-check
  1679. linux-arm64-release:
  1680. executor: linux-docker
  1681. environment:
  1682. <<: *env-linux-2xlarge-release
  1683. <<: *env-arm64
  1684. <<: *env-release-build
  1685. <<: *env-send-slack-notifications
  1686. <<: *env-ninja-status
  1687. GCLIENT_EXTRA_ARGS: '--custom-var=checkout_arm=True --custom-var=checkout_arm64=True'
  1688. steps:
  1689. - electron-build:
  1690. persist: false
  1691. checkout: true
  1692. linux-arm64-publish:
  1693. executor: linux-docker
  1694. environment:
  1695. <<: *env-linux-2xlarge-release
  1696. <<: *env-arm64
  1697. <<: *env-release-build
  1698. GCLIENT_EXTRA_ARGS: '--custom-var=checkout_arm64=True'
  1699. UPLOAD_TO_S3: << pipeline.parameters.upload-to-s3 >>
  1700. <<: *env-ninja-status
  1701. steps:
  1702. - run: echo running
  1703. - when:
  1704. condition:
  1705. or:
  1706. - equal: ["all", << pipeline.parameters.linux-publish-arch-limit >>]
  1707. - equal: ["arm64", << pipeline.parameters.linux-publish-arch-limit >>]
  1708. steps:
  1709. - electron-publish:
  1710. attach: false
  1711. checkout: true
  1712. osx-testing-x64:
  1713. executor: macos
  1714. environment:
  1715. <<: *env-mac-large
  1716. <<: *env-testing-build
  1717. <<: *env-ninja-status
  1718. <<: *env-macos-build
  1719. GCLIENT_EXTRA_ARGS: '--custom-var=checkout_mac=True --custom-var=host_os=mac'
  1720. steps:
  1721. - electron-build:
  1722. persist: true
  1723. checkout: false
  1724. checkout-and-assume-cache: true
  1725. attach: true
  1726. osx-testing-x64-gn-check:
  1727. executor:
  1728. name: macos
  1729. size: medium
  1730. environment:
  1731. <<: *env-machine-mac
  1732. <<: *env-testing-build
  1733. <<: *steps-electron-gn-check
  1734. osx-publish-x64-skip-checkout:
  1735. executor: macos
  1736. environment:
  1737. <<: *env-mac-large-release
  1738. <<: *env-release-build
  1739. UPLOAD_TO_S3: << pipeline.parameters.upload-to-s3 >>
  1740. <<: *env-ninja-status
  1741. steps:
  1742. - run: echo running
  1743. - when:
  1744. condition:
  1745. or:
  1746. - equal: ["all", << pipeline.parameters.macos-publish-arch-limit >>]
  1747. - equal: ["osx-x64", << pipeline.parameters.macos-publish-arch-limit >>]
  1748. steps:
  1749. - electron-publish:
  1750. attach: true
  1751. checkout: false
  1752. osx-publish-arm64-skip-checkout:
  1753. executor: macos
  1754. environment:
  1755. <<: *env-mac-large-release
  1756. <<: *env-release-build
  1757. <<: *env-apple-silicon
  1758. UPLOAD_TO_S3: << pipeline.parameters.upload-to-s3 >>
  1759. <<: *env-ninja-status
  1760. steps:
  1761. - run: echo running
  1762. - when:
  1763. condition:
  1764. or:
  1765. - equal: ["all", << pipeline.parameters.macos-publish-arch-limit >>]
  1766. - equal: ["osx-arm64", << pipeline.parameters.macos-publish-arch-limit >>]
  1767. steps:
  1768. - electron-publish:
  1769. attach: true
  1770. checkout: false
  1771. osx-testing-arm64:
  1772. executor: macos
  1773. environment:
  1774. <<: *env-mac-large
  1775. <<: *env-testing-build
  1776. <<: *env-ninja-status
  1777. <<: *env-macos-build
  1778. <<: *env-apple-silicon
  1779. GCLIENT_EXTRA_ARGS: '--custom-var=checkout_mac=True --custom-var=host_os=mac'
  1780. GENERATE_CROSS_ARCH_SNAPSHOT: true
  1781. steps:
  1782. - electron-build:
  1783. persist: true
  1784. checkout: false
  1785. checkout-and-assume-cache: true
  1786. attach: true
  1787. mas-testing-x64:
  1788. executor: macos
  1789. environment:
  1790. <<: *env-mac-large
  1791. <<: *env-mas
  1792. <<: *env-testing-build
  1793. <<: *env-ninja-status
  1794. <<: *env-macos-build
  1795. GCLIENT_EXTRA_ARGS: '--custom-var=checkout_mac=True --custom-var=host_os=mac'
  1796. steps:
  1797. - electron-build:
  1798. persist: true
  1799. checkout: false
  1800. checkout-and-assume-cache: true
  1801. attach: true
  1802. mas-testing-x64-gn-check:
  1803. executor:
  1804. name: macos
  1805. size: medium
  1806. environment:
  1807. <<: *env-machine-mac
  1808. <<: *env-mas
  1809. <<: *env-testing-build
  1810. <<: *steps-electron-gn-check
  1811. mas-publish-x64-skip-checkout:
  1812. executor: macos
  1813. environment:
  1814. <<: *env-mac-large-release
  1815. <<: *env-mas
  1816. <<: *env-release-build
  1817. UPLOAD_TO_S3: << pipeline.parameters.upload-to-s3 >>
  1818. steps:
  1819. - run: echo running
  1820. - when:
  1821. condition:
  1822. or:
  1823. - equal: ["all", << pipeline.parameters.macos-publish-arch-limit >>]
  1824. - equal: ["mas-x64", << pipeline.parameters.macos-publish-arch-limit >>]
  1825. steps:
  1826. - electron-publish:
  1827. attach: true
  1828. checkout: false
  1829. mas-publish-arm64-skip-checkout:
  1830. executor: macos
  1831. environment:
  1832. <<: *env-mac-large-release
  1833. <<: *env-mas-apple-silicon
  1834. <<: *env-release-build
  1835. UPLOAD_TO_S3: << pipeline.parameters.upload-to-s3 >>
  1836. <<: *env-ninja-status
  1837. steps:
  1838. - run: echo running
  1839. - when:
  1840. condition:
  1841. or:
  1842. - equal: ["all", << pipeline.parameters.macos-publish-arch-limit >>]
  1843. - equal: ["mas-arm64", << pipeline.parameters.macos-publish-arch-limit >>]
  1844. steps:
  1845. - electron-publish:
  1846. attach: true
  1847. checkout: false
  1848. mas-testing-arm64:
  1849. executor: macos
  1850. environment:
  1851. <<: *env-mac-large
  1852. <<: *env-testing-build
  1853. <<: *env-ninja-status
  1854. <<: *env-macos-build
  1855. <<: *env-mas-apple-silicon
  1856. GCLIENT_EXTRA_ARGS: '--custom-var=checkout_mac=True --custom-var=host_os=mac'
  1857. GENERATE_CROSS_ARCH_SNAPSHOT: true
  1858. steps:
  1859. - electron-build:
  1860. persist: true
  1861. checkout: false
  1862. checkout-and-assume-cache: true
  1863. attach: true
  1864. # Layer 3: Tests.
  1865. linux-x64-unittests:
  1866. executor: linux-docker
  1867. environment:
  1868. <<: *env-linux-2xlarge
  1869. <<: *env-unittests
  1870. <<: *env-headless-testing
  1871. <<: *steps-native-tests
  1872. linux-x64-disabled-unittests:
  1873. executor: linux-docker
  1874. environment:
  1875. <<: *env-linux-2xlarge
  1876. <<: *env-unittests
  1877. <<: *env-headless-testing
  1878. TESTS_ARGS: '--only-disabled-tests'
  1879. <<: *steps-native-tests
  1880. linux-x64-chromium-unittests:
  1881. executor: linux-docker
  1882. environment:
  1883. <<: *env-linux-2xlarge
  1884. <<: *env-unittests
  1885. <<: *env-headless-testing
  1886. TESTS_ARGS: '--include-disabled-tests'
  1887. <<: *steps-native-tests
  1888. linux-x64-browsertests:
  1889. executor: linux-docker
  1890. environment:
  1891. <<: *env-linux-2xlarge
  1892. <<: *env-browsertests
  1893. <<: *env-testing-build
  1894. <<: *env-headless-testing
  1895. <<: *steps-native-tests
  1896. linux-x64-testing-tests:
  1897. executor:
  1898. name: linux-docker
  1899. size: medium
  1900. environment:
  1901. <<: *env-linux-medium
  1902. <<: *env-headless-testing
  1903. <<: *env-stack-dumping
  1904. parallelism: 3
  1905. <<: *steps-tests
  1906. linux-x64-testing-asan-tests:
  1907. executor:
  1908. name: linux-docker
  1909. size: xlarge
  1910. environment:
  1911. <<: *env-linux-medium
  1912. <<: *env-headless-testing
  1913. <<: *env-stack-dumping
  1914. IS_ASAN: '1'
  1915. DISABLE_CRASH_REPORTER_TESTS: '1'
  1916. parallelism: 3
  1917. <<: *steps-tests
  1918. linux-x64-testing-nan:
  1919. executor:
  1920. name: linux-docker
  1921. size: medium
  1922. environment:
  1923. <<: *env-linux-medium
  1924. <<: *env-headless-testing
  1925. <<: *env-stack-dumping
  1926. <<: *steps-test-nan
  1927. linux-x64-testing-node:
  1928. executor: linux-docker
  1929. environment:
  1930. <<: *env-linux-medium
  1931. <<: *env-headless-testing
  1932. <<: *env-stack-dumping
  1933. <<: *steps-test-node
  1934. linux-x64-release-tests:
  1935. executor:
  1936. name: linux-docker
  1937. size: medium
  1938. environment:
  1939. <<: *env-linux-medium
  1940. <<: *env-headless-testing
  1941. <<: *env-send-slack-notifications
  1942. <<: *steps-tests
  1943. linux-x64-verify-ffmpeg:
  1944. executor:
  1945. name: linux-docker
  1946. size: medium
  1947. environment:
  1948. <<: *env-linux-medium
  1949. <<: *env-headless-testing
  1950. <<: *env-send-slack-notifications
  1951. <<: *steps-verify-ffmpeg
  1952. linux-ia32-testing-tests:
  1953. executor:
  1954. name: linux-docker
  1955. size: medium
  1956. environment:
  1957. <<: *env-linux-medium
  1958. <<: *env-ia32
  1959. <<: *env-headless-testing
  1960. <<: *env-stack-dumping
  1961. parallelism: 3
  1962. <<: *steps-tests
  1963. linux-ia32-testing-nan:
  1964. executor:
  1965. name: linux-docker
  1966. size: medium
  1967. environment:
  1968. <<: *env-linux-medium
  1969. <<: *env-ia32
  1970. <<: *env-headless-testing
  1971. <<: *env-stack-dumping
  1972. <<: *steps-test-nan
  1973. linux-ia32-testing-node:
  1974. executor: linux-docker
  1975. environment:
  1976. <<: *env-linux-medium
  1977. <<: *env-ia32
  1978. <<: *env-headless-testing
  1979. <<: *env-stack-dumping
  1980. <<: *steps-test-node
  1981. linux-ia32-release-tests:
  1982. executor:
  1983. name: linux-docker
  1984. size: medium
  1985. environment:
  1986. <<: *env-linux-medium
  1987. <<: *env-ia32
  1988. <<: *env-headless-testing
  1989. <<: *env-send-slack-notifications
  1990. <<: *steps-tests
  1991. linux-ia32-verify-ffmpeg:
  1992. executor:
  1993. name: linux-docker
  1994. size: medium
  1995. environment:
  1996. <<: *env-linux-medium
  1997. <<: *env-ia32
  1998. <<: *env-headless-testing
  1999. <<: *env-send-slack-notifications
  2000. <<: *steps-verify-ffmpeg
  2001. linux-arm-testing-tests:
  2002. executor: linux-arm
  2003. environment:
  2004. <<: *env-arm
  2005. <<: *env-global
  2006. <<: *env-headless-testing
  2007. <<: *env-stack-dumping
  2008. <<: *steps-tests
  2009. linux-arm64-testing-tests:
  2010. executor: linux-arm64
  2011. environment:
  2012. <<: *env-arm64
  2013. <<: *env-global
  2014. <<: *env-headless-testing
  2015. <<: *env-stack-dumping
  2016. <<: *steps-tests
  2017. osx-testing-x64-tests:
  2018. executor:
  2019. name: macos
  2020. size: medium
  2021. environment:
  2022. <<: *env-mac-large
  2023. <<: *env-stack-dumping
  2024. parallelism: 2
  2025. <<: *steps-tests
  2026. osx-testing-arm64-tests:
  2027. executor: apple-silicon
  2028. environment:
  2029. <<: *env-mac-large
  2030. <<: *env-stack-dumping
  2031. <<: *env-apple-silicon
  2032. <<: *steps-tests
  2033. mas-testing-x64-tests:
  2034. executor:
  2035. name: macos
  2036. size: medium
  2037. environment:
  2038. <<: *env-mac-large
  2039. <<: *env-stack-dumping
  2040. parallelism: 2
  2041. <<: *steps-tests
  2042. mas-testing-arm64-tests:
  2043. executor: apple-silicon
  2044. environment:
  2045. <<: *env-mac-large
  2046. <<: *env-stack-dumping
  2047. <<: *env-apple-silicon
  2048. <<: *steps-tests
  2049. # Layer 4: Summary.
  2050. linux-release-summary:
  2051. executor:
  2052. name: linux-docker
  2053. size: medium
  2054. environment:
  2055. <<: *env-linux-medium
  2056. <<: *env-send-slack-notifications
  2057. steps:
  2058. - *step-maybe-notify-slack-success
  2059. # List all workflows
  2060. workflows:
  2061. docs-only:
  2062. when:
  2063. and:
  2064. - equal: [false, << pipeline.parameters.run-macos-publish >>]
  2065. - equal: [false, << pipeline.parameters.run-linux-publish >>]
  2066. - equal: [true, << pipeline.parameters.run-docs-only >>]
  2067. jobs:
  2068. - ts-compile-doc-change
  2069. publish-linux:
  2070. when: << pipeline.parameters.run-linux-publish >>
  2071. jobs:
  2072. - linux-x64-publish:
  2073. context: release-env
  2074. - linux-ia32-publish:
  2075. context: release-env
  2076. - linux-arm-publish:
  2077. context: release-env
  2078. - linux-arm64-publish:
  2079. context: release-env
  2080. publish-macos:
  2081. when: << pipeline.parameters.run-macos-publish >>
  2082. jobs:
  2083. - mac-checkout
  2084. - osx-publish-x64-skip-checkout:
  2085. requires:
  2086. - mac-checkout
  2087. context: release-env
  2088. - mas-publish-x64-skip-checkout:
  2089. requires:
  2090. - mac-checkout
  2091. context: release-env
  2092. - osx-publish-arm64-skip-checkout:
  2093. requires:
  2094. - mac-checkout
  2095. context: release-env
  2096. - mas-publish-arm64-skip-checkout:
  2097. requires:
  2098. - mac-checkout
  2099. context: release-env
  2100. build-linux:
  2101. when:
  2102. and:
  2103. - equal: [false, << pipeline.parameters.run-macos-publish >>]
  2104. - equal: [false, << pipeline.parameters.run-linux-publish >>]
  2105. - equal: [true, << pipeline.parameters.run-build-linux >>]
  2106. jobs:
  2107. - linux-checkout-for-workspace
  2108. - linux-make-src-cache
  2109. - linux-x64-testing
  2110. - linux-x64-testing-asan
  2111. - linux-x64-testing-no-run-as-node
  2112. - linux-x64-testing-gn-check:
  2113. requires:
  2114. - linux-checkout-for-workspace
  2115. - linux-x64-testing-tests:
  2116. requires:
  2117. - linux-x64-testing
  2118. - linux-x64-testing-asan-tests:
  2119. requires:
  2120. - linux-x64-testing-asan
  2121. - linux-x64-testing-nan:
  2122. requires:
  2123. - linux-x64-testing
  2124. - linux-x64-testing-node:
  2125. requires:
  2126. - linux-x64-testing
  2127. - linux-ia32-testing
  2128. - linux-ia32-testing-tests:
  2129. requires:
  2130. - linux-ia32-testing
  2131. - linux-ia32-testing-nan:
  2132. requires:
  2133. - linux-ia32-testing
  2134. - linux-ia32-testing-node:
  2135. requires:
  2136. - linux-ia32-testing
  2137. - linux-arm-testing
  2138. - linux-arm-testing-tests:
  2139. filters:
  2140. branches:
  2141. # Do not run this on forked pull requests
  2142. ignore: /pull\/[0-9]+/
  2143. requires:
  2144. - linux-arm-testing
  2145. - linux-arm64-testing
  2146. - linux-arm64-testing-tests:
  2147. filters:
  2148. branches:
  2149. # Do not run this on forked pull requests
  2150. ignore: /pull\/[0-9]+/
  2151. requires:
  2152. - linux-arm64-testing
  2153. - linux-arm64-testing-gn-check:
  2154. requires:
  2155. - linux-checkout-for-workspace
  2156. build-mac:
  2157. when:
  2158. and:
  2159. - equal: [false, << pipeline.parameters.run-macos-publish >>]
  2160. - equal: [false, << pipeline.parameters.run-linux-publish >>]
  2161. - equal: [true, << pipeline.parameters.run-build-mac >>]
  2162. jobs:
  2163. - mac-checkout-for-workspace
  2164. - mac-make-src-cache
  2165. - osx-testing-x64:
  2166. requires:
  2167. - mac-make-src-cache
  2168. - osx-testing-x64-gn-check:
  2169. requires:
  2170. - mac-checkout-for-workspace
  2171. - osx-testing-x64-tests:
  2172. requires:
  2173. - osx-testing-x64
  2174. - osx-testing-arm64:
  2175. requires:
  2176. - mac-make-src-cache
  2177. - osx-testing-arm64-tests:
  2178. filters:
  2179. branches:
  2180. # Do not run this on forked pull requests
  2181. ignore: /pull\/[0-9]+/
  2182. requires:
  2183. - osx-testing-arm64
  2184. - mas-testing-x64:
  2185. requires:
  2186. - mac-make-src-cache
  2187. - mas-testing-x64-gn-check:
  2188. requires:
  2189. - mac-checkout-for-workspace
  2190. - mas-testing-x64-tests:
  2191. requires:
  2192. - mas-testing-x64
  2193. - mas-testing-arm64:
  2194. requires:
  2195. - mac-make-src-cache
  2196. - mas-testing-arm64-tests:
  2197. filters:
  2198. branches:
  2199. # Do not run this on forked pull requests
  2200. ignore: /pull\/[0-9]+/
  2201. requires:
  2202. - mas-testing-arm64