build_config.yml 78 KB

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