2018-07-05 14:59:47 +00:00
notify-slack-failure : ¬ify-slack-failure
run :
name : Send a slack notification on failure
command : |
if [ "$NIGHTLY_BUILD" == "true" ]; then
export MESSAGE="Build failed for *<$CIRCLE_BUILD_URL|$CIRCLE_JOB>* nightly build."
curl -g -H "Content-Type: application/json" -X POST \
-d "{\"text\": \"$MESSAGE\", \"attachments\": [{\"color\": \"#FC5C3C\",\"title\": \"$CIRCLE_JOB nightly build results\",\"title_link\": \"$CIRCLE_BUILD_URL\"}]}" $SLACK_WEBHOOK
fi
when : on_fail
notify-slack-success : ¬ify-slack-success
run :
name : Send a slack notification on success
command : |
if [ "$NIGHTLY_BUILD" == "true" ]; then
export MESSAGE="Build succeeded for *<$CIRCLE_BUILD_URL|$CIRCLE_JOB>* nightly build."
curl -g -H "Content-Type: application/json" -X POST \
-d "{\"text\": \"$MESSAGE\", \"attachments\": [{\"color\": \"good\",\"title\": \"$CIRCLE_JOB nightly build results\",\"title_link\": \"$CIRCLE_BUILD_URL\"}]}" $SLACK_WEBHOOK
fi
when : on_success
2018-07-31 18:18:36 +00:00
gn-build-steps : &gn-build-steps
steps :
- run :
name : Setup depot tools
command : |
git clone --depth=1 https://chromium.googlesource.com/chromium/tools/depot_tools.git
echo 'export PATH="$PATH:'"$PWD"'/depot_tools"' >> $BASH_ENV
2018-08-17 16:20:20 +00:00
echo 'export GIT_CACHE_PATH="$HOME/.gclient-cache"' >> $BASH_ENV
2018-07-31 18:18:36 +00:00
- checkout :
path : src/electron
- restore_cache :
paths :
- ~/.gclient-cache
keys :
- v1-gclient-cache-{{ arch }}-{{ checksum "src/electron/DEPS" }}
- v1-gclient-cache-{{ arch }}-
- run :
name : Gclient sync
command : |
gclient config \
--name "src/electron" \
--unmanaged \
2018-08-13 22:43:00 +00:00
$GCLIENT_EXTRA_ARGS \
2018-07-31 18:18:36 +00:00
"$CIRCLE_REPOSITORY_URL"
gclient sync --with_branch_heads --with_tags
- save_cache :
paths :
- ~/.gclient-cache
key : v1-gclient-cache-{{ arch }}-{{ checksum "src/electron/DEPS" }}
- run :
name : GN gen
command : |
cd src
2018-08-21 19:40:06 +00:00
SCCACHE_PATH="$PWD/electron/external_binaries/sccache"
2018-07-31 18:18:36 +00:00
echo 'export CHROMIUM_BUILDTOOLS_PATH="'"$PWD"'/buildtools"' >> $BASH_ENV
2018-08-21 19:40:06 +00:00
echo 'export SCCACHE_WRAPPER="'"$SCCACHE_PATH"'"' >> $BASH_ENV
2018-07-31 18:18:36 +00:00
source $BASH_ENV
2018-07-31 23:25:51 +00:00
gn gen out/Default --args='import("'$GN_CONFIG'") cc_wrapper="'"$SCCACHE_PATH"'"'" $GN_EXTRA_ARGS"
2018-07-31 18:18:36 +00:00
- run :
name : Ninja build
command : |
cd src
ninja -C out/Default electron:electron_app
2018-08-22 15:41:25 +00:00
- run :
name : ffmpeg GN gen
command : |
if [ "$BUILD_FFMPEG" == "true" ]; then
cd src
gn gen out/ffmpeg --args='import("//electron/build/args/ffmpeg.gn") cc_wrapper="'"$SCCACHE_PATH"'"'" $GN_EXTRA_ARGS"
fi
- run :
name : Non proprietary ffmpeg build
command : |
if [ "$BUILD_FFMPEG" == "true" ]; then
cd src
ninja -C out/ffmpeg third_party/ffmpeg
fi
- run :
name : native mksnapshot GN gen
command : |
if [ "$BUILD_NATIVE_MKSNAPSHOT" == "true" ]; then
cd src
gn gen out/native_mksnapshot --args='import("//electron/build/args/native_mksnapshot.gn") cc_wrapper="'"$SCCACHE_PATH"'" v8_snapshot_toolchain="'"$MKSNAPSHOT_TOOLCHAIN"'"'" $GN_EXTRA_ARGS"
fi
- run :
name : native mksnapshot (arm/arm64) build
command : |
if [ "$BUILD_NATIVE_MKSNAPSHOT" == "true" ]; then
cd src
ninja -C out/native_mksnapshot v8:mksnapshot
fi
2018-08-21 17:06:28 +00:00
- run :
name : Build dist.zip
command : |
cd src
ninja -C out/Default electron:electron_dist_zip
2018-07-31 18:18:36 +00:00
- run :
name : Check sccache stats after build
command : $SCCACHE_WRAPPER -s
- run :
name : Setup for headless testing
command : |
sh -e /etc/init.d/xvfb start
2018-08-22 15:41:25 +00:00
- run :
name : Verify ffmpeg
command : |
if [ "$RUN_TESTS" != "false" ] && [ "$BUILD_FFMPEG" == "true" ]; then
python src/electron/script/verify-ffmpeg.py -c Default --source-root "$PWD/src" --ffmpeg-path "$PWD/src/out/ffmpeg"
fi
2018-07-31 18:18:36 +00:00
- run :
name : Test
environment :
MOCHA_REPORTER : mocha-junit-reporter
MOCHA_FILE : junit/test-results.xml
ELECTRON_DISABLE_SECURITY_WARNINGS : 1
command : |
2018-08-13 22:43:00 +00:00
if [ "$RUN_TESTS" != "false" ]; then
cd src
ninja -C out/Default third_party/electron_node:headers
export npm_config_nodedir="$PWD/out/Default/gen/node_headers"
(cd electron/spec && npm install)
python electron/script/lib/dbus_mock.py ./out/Default/electron electron/spec --ci --enable-logging
fi
2018-09-09 01:15:32 +00:00
- << : *notify-slack-failure
- << : *notify-slack-success
2018-07-31 18:18:36 +00:00
- store_test_results :
path : src/junit
- store_artifacts :
path : src/junit
2018-08-21 17:06:28 +00:00
- store_artifacts :
path : src/out/Default/dist.zip
2018-08-22 15:41:25 +00:00
- store_artifacts :
path : src/out/ffmpeg/libffmpeg.dylib
- store_artifacts :
path : src/out/ffmpeg/libffmpeg.so
- store_artifacts :
path : src/out/native_mksnapshot/mksnapshot
2018-08-21 17:06:28 +00:00
gn-mac-build-steps : &gn-mac-build-steps
steps :
- run :
name : Setup depot tools
command : |
git clone --depth=1 https://chromium.googlesource.com/chromium/tools/depot_tools.git
echo 'export PATH="$PATH:'"$PWD"'/depot_tools"' >> $BASH_ENV
echo 'export GIT_CACHE_PATH="$HOME/.gclient-cache"' >> $BASH_ENV
- run :
name : Install Node.js 10 on MacOS
command : |
echo 'Installing Node.js 10 for MacOS'
brew update
brew install node@10
brew install gnu-tar
echo 'export PATH="/usr/local/opt/gnu-tar/libexec/gnubin:$PATH"' >> $BASH_ENV
- checkout :
path : src/electron
- run :
name : Gclient sync
command : |
gclient config \
--name "src/electron" \
--unmanaged \
$GCLIENT_EXTRA_ARGS \
"$CIRCLE_REPOSITORY_URL"
gclient sync --with_branch_heads --with_tags
- run :
name : GN gen
command : |
cd src
SCCACHE_PATH="$PWD/libchromiumcontent/tools/sccache/aad2120/mac/sccache"
echo 'export SCCACHE_WRAPPER="'"$SCCACHE_PATH"'"' >> $BASH_ENV
echo 'export CHROMIUM_BUILDTOOLS_PATH="'"$PWD"'/buildtools"' >> $BASH_ENV
source $BASH_ENV
gn gen out/Default --args='import("'$GN_CONFIG'") cc_wrapper="'"$SCCACHE_PATH"'"'" $GN_EXTRA_ARGS"
- run :
name : Ninja build
command : |
cd src
ninja -C out/Default electron:electron_app
- run :
name : Build dist.zip
command : |
cd src
ninja -C out/Default electron:electron_dist_zip
- run :
name : Check sccache stats after build
command : $SCCACHE_WRAPPER -s
- run :
name : Test
environment :
MOCHA_REPORTER : mocha-junit-reporter
MOCHA_FILE : junit/test-results.xml
ELECTRON_DISABLE_SECURITY_WARNINGS : 1
command : |
if [ "$RUN_TESTS" != "false" ]; then
cd src
ninja -C out/Default third_party/electron_node:headers
export npm_config_nodedir="$PWD/out/Default/gen/node_headers"
(cd electron/spec && npm install)
./out/Default/Electron.app/Contents/MacOS/Electron electron/spec --ci --enable-logging
fi
2018-09-09 01:15:32 +00:00
- << : *notify-slack-failure
- << : *notify-slack-success
2018-08-21 17:06:28 +00:00
- store_test_results :
path : src/junit
- store_artifacts :
path : src/junit
- store_artifacts :
path : src/out/Default/dist.zip
gn-linux-build-machine : &gn-linux-build-machine
docker :
- image : electronbuilds/electron:0.0.8
resource_class : 2xlarge
gn-mac-build-machine : &gn-mac-build-machine
macos :
xcode : "8.3.3"
resource_class : large
2018-07-31 18:18:36 +00:00
2017-09-13 13:48:19 +00:00
version : 2
jobs :
2018-07-31 23:25:51 +00:00
electron-gn-linux-x64-debug-fyi :
2018-07-11 18:01:15 +00:00
environment :
DISPLAY : ':99.0'
2018-07-31 18:18:36 +00:00
GN_CONFIG : //electron/build/args/debug.gn
2018-08-16 23:28:01 +00:00
RUN_TESTS : false
2018-08-21 17:06:28 +00:00
<< : *gn-linux-build-machine
2018-08-16 23:28:01 +00:00
<< : *gn-build-steps
electron-gn-linux-x64-testing-fyi :
environment :
DISPLAY : ':99.0'
GN_CONFIG : //electron/build/args/testing.gn
2018-08-22 15:41:25 +00:00
BUILD_FFMPEG : true
2018-08-21 17:06:28 +00:00
<< : *gn-linux-build-machine
2018-07-31 18:18:36 +00:00
<< : *gn-build-steps
2018-07-11 18:01:15 +00:00
2018-07-31 23:25:51 +00:00
electron-gn-linux-x64-release-fyi :
2018-07-31 18:18:36 +00:00
environment :
DISPLAY : ':99.0'
GN_CONFIG : //electron/build/args/release.gn
2018-08-22 15:41:25 +00:00
BUILD_FFMPEG : true
2018-09-09 01:15:32 +00:00
NIGHTLY_BUILD : true
2018-08-21 17:06:28 +00:00
<< : *gn-linux-build-machine
2018-07-31 18:18:36 +00:00
<< : *gn-build-steps
2018-04-09 19:19:54 +00:00
2018-07-31 23:25:51 +00:00
electron-gn-linux-ia32-debug-fyi :
environment :
DISPLAY : ':99.0'
GN_CONFIG : //electron/build/args/debug.gn
GN_EXTRA_ARGS : 'target_cpu = "x86"'
2018-08-11 17:21:34 +00:00
NPM_CONFIG_ARCH : ia32
2018-08-16 23:28:01 +00:00
RUN_TESTS : false
2018-08-21 17:06:28 +00:00
<< : *gn-linux-build-machine
2018-08-16 23:28:01 +00:00
<< : *gn-build-steps
electron-gn-linux-ia32-testing-fyi :
environment :
DISPLAY : ':99.0'
GN_CONFIG : //electron/build/args/testing.gn
GN_EXTRA_ARGS : 'target_cpu = "x86"'
NPM_CONFIG_ARCH : ia32
2018-08-22 15:41:25 +00:00
BUILD_FFMPEG : true
2018-08-21 17:06:28 +00:00
<< : *gn-linux-build-machine
2018-07-31 23:25:51 +00:00
<< : *gn-build-steps
electron-gn-linux-ia32-release-fyi :
environment :
DISPLAY : ':99.0'
GN_CONFIG : //electron/build/args/release.gn
GN_EXTRA_ARGS : 'target_cpu = "x86"'
2018-08-11 17:21:34 +00:00
NPM_CONFIG_ARCH : ia32
2018-08-22 15:41:25 +00:00
BUILD_FFMPEG : true
2018-09-09 01:15:32 +00:00
NIGHTLY_BUILD : true
2018-08-21 17:06:28 +00:00
<< : *gn-linux-build-machine
2018-07-31 23:25:51 +00:00
<< : *gn-build-steps
2018-08-13 22:43:00 +00:00
electron-gn-linux-arm-debug-fyi :
environment :
GN_CONFIG : //electron/build/args/debug.gn
GN_EXTRA_ARGS : 'target_cpu = "arm"'
GCLIENT_EXTRA_ARGS : '--custom-var=checkout_arm=True'
RUN_TESTS : false
2018-08-21 17:06:28 +00:00
<< : *gn-linux-build-machine
2018-08-13 22:43:00 +00:00
<< : *gn-build-steps
2018-08-16 23:28:01 +00:00
electron-gn-linux-arm-testing-fyi :
environment :
GN_CONFIG : //electron/build/args/testing.gn
GN_EXTRA_ARGS : 'target_cpu = "arm"'
GCLIENT_EXTRA_ARGS : '--custom-var=checkout_arm=True'
RUN_TESTS : false
2018-08-21 17:06:28 +00:00
<< : *gn-linux-build-machine
2018-08-16 23:28:01 +00:00
<< : *gn-build-steps
2018-08-13 22:43:00 +00:00
electron-gn-linux-arm-release-fyi :
environment :
GN_CONFIG : //electron/build/args/release.gn
GN_EXTRA_ARGS : 'target_cpu = "arm"'
GCLIENT_EXTRA_ARGS : '--custom-var=checkout_arm=True'
RUN_TESTS : false
2018-08-22 15:41:25 +00:00
BUILD_FFMPEG : true
BUILD_NATIVE_MKSNAPSHOT : true
MKSNAPSHOT_TOOLCHAIN : //build/toolchain/linux:clang_arm
2018-09-09 01:15:32 +00:00
NIGHTLY_BUILD : true
2018-08-21 17:06:28 +00:00
<< : *gn-linux-build-machine
2018-08-13 22:43:00 +00:00
<< : *gn-build-steps
electron-gn-linux-arm64-debug-fyi :
environment :
GN_CONFIG : //electron/build/args/debug.gn
GN_EXTRA_ARGS : 'target_cpu = "arm64" fatal_linker_warnings = false enable_linux_installer = false'
GCLIENT_EXTRA_ARGS : '--custom-var=checkout_arm64=True'
RUN_TESTS : false
2018-08-21 17:06:28 +00:00
<< : *gn-linux-build-machine
2018-08-13 22:43:00 +00:00
<< : *gn-build-steps
2018-08-16 23:28:01 +00:00
electron-gn-linux-arm64-testing-fyi :
environment :
GN_CONFIG : //electron/build/args/testing.gn
GN_EXTRA_ARGS : 'target_cpu = "arm64" fatal_linker_warnings = false enable_linux_installer = false'
GCLIENT_EXTRA_ARGS : '--custom-var=checkout_arm64=True'
RUN_TESTS : false
2018-08-21 17:06:28 +00:00
<< : *gn-linux-build-machine
2018-08-16 23:28:01 +00:00
<< : *gn-build-steps
2018-08-13 22:43:00 +00:00
electron-gn-linux-arm64-release-fyi :
environment :
GN_CONFIG : //electron/build/args/release.gn
GN_EXTRA_ARGS : 'target_cpu = "arm64" fatal_linker_warnings = false enable_linux_installer = false'
GCLIENT_EXTRA_ARGS : '--custom-var=checkout_arm64=True'
RUN_TESTS : false
2018-08-22 15:41:25 +00:00
BUILD_FFMPEG : true
BUILD_NATIVE_MKSNAPSHOT : true
MKSNAPSHOT_TOOLCHAIN : //build/toolchain/linux:clang_arm64
2018-09-09 01:15:32 +00:00
NIGHTLY_BUILD : true
2018-08-21 17:06:28 +00:00
<< : *gn-linux-build-machine
2018-08-13 22:43:00 +00:00
<< : *gn-build-steps
2018-08-21 17:06:28 +00:00
electron-gn-osx-release-fyi :
environment :
GN_CONFIG : //electron/build/args/release.gn
RUN_TESTS : true
2018-09-09 01:15:32 +00:00
NIGHTLY_BUILD : true
2018-08-21 17:06:28 +00:00
<< : *gn-mac-build-machine
<< : *gn-mac-build-steps
electron-gn-osx-testing-fyi :
environment :
GN_CONFIG : //electron/build/args/testing.gn
RUN_TESTS : true
<< : *gn-mac-build-machine
<< : *gn-mac-build-steps
electron-gn-osx-debug-fyi :
environment :
GN_CONFIG : //electron/build/args/debug.gn
RUN_TESTS : false
<< : *gn-mac-build-machine
<< : *gn-mac-build-steps
electron-gn-mas-release-fyi :
environment :
GN_CONFIG : //electron/build/args/release.gn
RUN_TESTS : true
GN_EXTRA_ARGS : 'is_mas_build = true'
2018-09-09 01:15:32 +00:00
NIGHTLY_BUILD : true
2018-08-21 17:06:28 +00:00
<< : *gn-mac-build-machine
<< : *gn-mac-build-steps
electron-gn-mas-testing-fyi :
environment :
GN_CONFIG : //electron/build/args/testing.gn
RUN_TESTS : true
GN_EXTRA_ARGS : 'is_mas_build = true'
<< : *gn-mac-build-machine
<< : *gn-mac-build-steps
electron-gn-mas-debug-fyi :
environment :
GN_CONFIG : //electron/build/args/debug.gn
RUN_TESTS : false
GN_EXTRA_ARGS : 'is_mas_build = true'
<< : *gn-mac-build-machine
<< : *gn-mac-build-steps
2017-09-13 13:48:19 +00:00
workflows :
version : 2
2018-07-11 18:01:15 +00:00
build-gn-linux :
jobs :
2018-07-31 23:25:51 +00:00
- electron-gn-linux-x64-debug-fyi
2018-08-16 23:28:01 +00:00
- electron-gn-linux-x64-testing-fyi
2018-07-31 23:25:51 +00:00
- electron-gn-linux-ia32-debug-fyi
2018-08-16 23:28:01 +00:00
- electron-gn-linux-ia32-testing-fyi
2018-08-13 22:43:00 +00:00
- electron-gn-linux-arm-debug-fyi
2018-08-16 23:28:01 +00:00
- electron-gn-linux-arm-testing-fyi
2018-08-13 22:43:00 +00:00
- electron-gn-linux-arm64-debug-fyi
2018-08-16 23:28:01 +00:00
- electron-gn-linux-arm64-testing-fyi
2018-08-21 17:06:28 +00:00
build-gn-mac :
jobs :
- electron-gn-mas-debug-fyi
- electron-gn-mas-testing-fyi
- electron-gn-osx-debug-fyi
- electron-gn-osx-testing-fyi
2018-05-22 17:50:44 +00:00
2018-08-16 23:28:01 +00:00
nightly-gn-release-test :
triggers :
- schedule :
cron : "0 0 * * *"
filters :
branches :
only :
- master
jobs :
- electron-gn-linux-x64-release-fyi
- electron-gn-linux-ia32-release-fyi
- electron-gn-linux-arm-release-fyi
- electron-gn-linux-arm64-release-fyi
2018-08-21 17:06:28 +00:00
- electron-gn-mas-release-fyi
- electron-gn-osx-release-fyi