version: 2 jobs: electron-linux-arm: docker: - image: electronbuilds/electron:0.0.7 environment: TARGET_ARCH: arm resource_class: 2xlarge steps: - checkout - run: name: Check for release command: | if [ -n "${RUN_RELEASE_BUILD}" ]; then echo 'release build triggered from api' echo 'export ELECTRON_RELEASE=1 TRIGGERED_BY_API=1' >> $BASH_ENV fi - run: name: Bootstrap command: | if [ "$ELECTRON_RELEASE" == "1" ]; then echo 'Bootstrapping Electron for release build' script/bootstrap.py --target_arch=$TARGET_ARCH else echo 'Bootstrapping Electron for debug build' script/bootstrap.py --target_arch=$TARGET_ARCH --dev fi - run: npm run lint - run: name: Build command: | if [ "$ELECTRON_RELEASE" == "1" ]; then echo 'Building Electron for release' script/build.py -c R else echo 'Building Electron for debug' script/build.py -c D fi - run: name: Create distribution command: | if [ "$ELECTRON_RELEASE" == "1" ]; then echo 'Creating Electron release distribution' script/create-dist.py else echo 'Skipping create distribution because build is not for release' fi - run: name: Upload distribution command: | if [ "$ELECTRON_RELEASE" == "1" ] && [ "$TRIGGERED_BY_API" != "1" ]; then echo 'Uploading Electron release distribution to github releases' script/upload.py elif [ "$ELECTRON_RELEASE" == "1" ] && [ "$TRIGGERED_BY_API" == "1" ]; then echo 'Uploading Electron release distribution to s3' script/upload.py --upload_to_s3 else echo 'Skipping upload distribution because build is not for release' fi - run: name: Zip out directory command: | if [ "$ELECTRON_RELEASE" != "1" ]; then zip -r electron.zip out/D fi - persist_to_workspace: root: /home/builduser paths: - project/out - store_artifacts: path: electron.zip electron-linux-arm-test: machine: true steps: - attach_workspace: at: /tmp/workspace - checkout - run: name: Test in ARM docker container command: | if [ "$ELECTRON_RELEASE" != "1" ]; then docker run --rm --privileged multiarch/qemu-user-static:register --reset docker run -it \ --mount type=bind,source=/tmp/workspace,target=/tmp/workspace \ --rm electronbuilds/electronarm7:0.0.5 > version.txt cat version.txt if grep -q `script/get-version.py` version.txt; then echo "Versions match" else echo "Versions do not match" exit 1 fi else echo "Skipping test for release build" fi electron-linux-arm64: docker: - image: electronbuilds/electron:0.0.7 environment: TARGET_ARCH: arm64 resource_class: 2xlarge steps: - checkout - run: name: Check for release command: | if [ -n "${RUN_RELEASE_BUILD}" ]; then echo 'release build triggered from api' echo 'export ELECTRON_RELEASE=1 TRIGGERED_BY_API=1' >> $BASH_ENV fi - run: name: Bootstrap command: | if [ "$ELECTRON_RELEASE" == "1" ]; then echo 'Bootstrapping Electron for release build' script/bootstrap.py --target_arch=$TARGET_ARCH else echo 'Bootstrapping Electron for debug build' script/bootstrap.py --target_arch=$TARGET_ARCH --dev fi - run: npm run lint - run: name: Build command: | if [ "$ELECTRON_RELEASE" == "1" ]; then echo 'Building Electron for release' script/build.py -c R else echo 'Building Electron for debug' script/build.py -c D fi - run: name: Create distribution command: | if [ "$ELECTRON_RELEASE" == "1" ]; then echo 'Creating Electron release distribution' script/create-dist.py else echo 'Skipping create distribution because build is not for release' fi - run: name: Upload distribution command: | if [ "$ELECTRON_RELEASE" == "1" ] && [ "$TRIGGERED_BY_API" != "1" ]; then echo 'Uploading Electron release distribution to github releases' script/upload.py elif [ "$ELECTRON_RELEASE" == "1" ] && [ "$TRIGGERED_BY_API" == "1" ]; then echo 'Uploading Electron release distribution to s3' script/upload.py --upload_to_s3 else echo 'Skipping upload distribution because build is not for release' fi - run: name: Zip out directory command: | if [ "$ELECTRON_RELEASE" != "1" ]; then zip -r electron.zip out/D fi - persist_to_workspace: root: /home/builduser paths: - project/out - store_artifacts: path: electron.zip electron-linux-arm64-test: machine: true steps: - attach_workspace: at: /tmp/workspace - checkout - run: name: Test in ARM64 docker container command: | if [ "$ELECTRON_RELEASE" != "1" ]; then docker run --rm --privileged multiarch/qemu-user-static:register --reset docker run -it \ --mount type=bind,source=/tmp/workspace,target=/tmp/workspace \ --rm electronbuilds/electronarm64:0.0.6 > version.txt cat version.txt if grep -q `script/get-version.py` version.txt; then echo "Versions match" else echo "Versions do not match" exit 1 fi else echo "Skipping test for release build" fi electron-linux-ia32: docker: - image: electronbuilds/electron:0.0.7 environment: TARGET_ARCH: ia32 DISPLAY: ':99.0' ELECTRON_ENABLE_LOGGING: 'true' resource_class: xlarge steps: - checkout - run: name: Setup for headless testing command: sh -e /etc/init.d/xvfb start - run: name: Check for release command: | if [ -n "${RUN_RELEASE_BUILD}" ]; then echo 'release build triggered from api' echo 'export ELECTRON_RELEASE=1 TRIGGERED_BY_API=1' >> $BASH_ENV fi - run: name: Bootstrap command: | if [ "$ELECTRON_RELEASE" == "1" ]; then echo 'Bootstrapping Electron for release build' script/bootstrap.py --target_arch=$TARGET_ARCH else echo 'Bootstrapping Electron for debug build' script/bootstrap.py --target_arch=$TARGET_ARCH --dev fi - run: npm run lint - run: name: Build command: | if [ "$ELECTRON_RELEASE" == "1" ]; then echo 'Building Electron for release' script/build.py -c R else echo 'Building Electron for debug' script/build.py -c D fi - run: name: Create distribution command: | if [ "$ELECTRON_RELEASE" == "1" ]; then echo 'Creating Electron release distribution' script/create-dist.py else echo 'Skipping create distribution because build is not for release' fi - run: name: Upload distribution command: | if [ "$ELECTRON_RELEASE" == "1" ] && [ "$TRIGGERED_BY_API" != "1" ]; then echo 'Uploading Electron release distribution to github releases' script/upload.py elif [ "$ELECTRON_RELEASE" == "1" ] && [ "$TRIGGERED_BY_API" == "1" ]; then echo 'Uploading Electron release distribution to s3' script/upload.py --upload_to_s3 else echo 'Skipping upload distribution because build is not for release' fi - run: name: Test environment: MOCHA_FILE: junit/test-results.xml MOCHA_REPORTER: mocha-junit-reporter command: | if [ "$ELECTRON_RELEASE" != "1" ]; then echo 'Testing Electron debug build' out/D/electron --version mkdir junit script/test.py --ci --rebuild_native_modules else echo 'Skipping testing on release build' fi - run: name: Verify FFmpeg command: | if [ "$ELECTRON_RELEASE" != "1" ]; then echo 'Verifying ffmpeg on debug build' script/verify-ffmpeg.py else echo 'Skipping verify ffmpeg on release build' fi - store_test_results: path: junit - store_artifacts: path: junit electron-linux-mips64el: docker: - image: electronbuilds/electron:0.0.7 environment: TARGET_ARCH: mips64el resource_class: xlarge steps: - checkout - run: name: Check for release command: | if [ -n "${RUN_RELEASE_BUILD}" ]; then echo 'release build triggered from api' echo 'export ELECTRON_RELEASE=1 TRIGGERED_BY_API=1' >> $BASH_ENV fi - run: name: Bootstrap command: | if [ "$ELECTRON_RELEASE" == "1" ]; then echo 'Bootstrapping Electron for release build' script/bootstrap.py --target_arch=$TARGET_ARCH else echo 'Bootstrapping Electron for debug build' script/bootstrap.py --target_arch=$TARGET_ARCH --dev fi - run: npm run lint - run: name: Build command: | if [ "$ELECTRON_RELEASE" == "1" ]; then echo 'Building Electron for release' script/build.py -c R else echo 'Building Electron for debug' script/build.py -c D fi - run: name: Create distribution command: | if [ "$ELECTRON_RELEASE" == "1" ]; then echo 'Creating Electron release distribution' script/create-dist.py else echo 'Skipping create distribution because build is not for release' fi - run: name: Upload distribution command: | if [ "$ELECTRON_RELEASE" == "1" ] && [ "$TRIGGERED_BY_API" != "1" ]; then echo 'Uploading Electron release distribution to github releases' script/upload.py elif [ "$ELECTRON_RELEASE" == "1" ] && [ "$TRIGGERED_BY_API" == "1" ]; then echo 'Uploading Electron release distribution to s3' script/upload.py --upload_to_s3 else echo 'Skipping upload distribution because build is not for release' fi electron-linux-x64: docker: - image: electronbuilds/electron:0.0.7 environment: TARGET_ARCH: x64 DISPLAY: ':99.0' resource_class: xlarge steps: - checkout - run: name: Setup for headless testing command: sh -e /etc/init.d/xvfb start - run: name: Check for release command: | if [ -n "${RUN_RELEASE_BUILD}" ]; then echo 'release build triggered from api' echo 'export ELECTRON_RELEASE=1 TRIGGERED_BY_API=1' >> $BASH_ENV fi - run: name: Bootstrap command: | if [ "$ELECTRON_RELEASE" == "1" ]; then echo 'Bootstrapping Electron for release build' script/bootstrap.py --target_arch=$TARGET_ARCH else echo 'Bootstrapping Electron for debug build' script/bootstrap.py --target_arch=$TARGET_ARCH --dev fi - run: npm run lint - run: name: Build command: | if [ "$ELECTRON_RELEASE" == "1" ]; then echo 'Building Electron for release' script/build.py -c R else echo 'Building Electron for debug' script/build.py -c D fi - run: name: Create distribution command: | if [ "$ELECTRON_RELEASE" == "1" ]; then echo 'Creating Electron release distribution' script/create-dist.py else echo 'Skipping create distribution because build is not for release' fi - run: name: Upload distribution command: | if [ "$ELECTRON_RELEASE" == "1" ] && [ "$TRIGGERED_BY_API" != "1" ]; then echo 'Uploading Electron release distribution to github releases' script/upload.py elif [ "$ELECTRON_RELEASE" == "1" ] && [ "$TRIGGERED_BY_API" == "1" ]; then echo 'Uploading Electron release distribution to s3' script/upload.py --upload_to_s3 else echo 'Skipping upload distribution because build is not for release' fi - run: name: Test environment: MOCHA_FILE: junit/test-results.xml MOCHA_REPORTER: mocha-junit-reporter command: | if [ "$ELECTRON_RELEASE" != "1" ]; then echo 'Testing Electron debug build' mkdir junit script/test.py --ci --rebuild_native_modules else echo 'Skipping testing on release build' fi - run: name: Verify FFmpeg command: | if [ "$ELECTRON_RELEASE" != "1" ]; then echo 'Verifying ffmpeg on debug build' script/verify-ffmpeg.py else echo 'Skipping verify ffmpeg on release build' fi - run: name: Generate Typescript Definitions command: npm run create-typescript-definitions - store_test_results: path: junit - store_artifacts: path: junit - store_artifacts: path: out/electron.d.ts - store_artifacts: path: out/electron-api.json electron-osx-x64: environment: TARGET_ARCH: x64 macos: xcode: "9.0" resource_class: xlarge steps: - checkout - run: name: Reclaim disk space command: | df -h sudo rm -rf /Library/Developer/CoreSimulator df -h sysctl -n hw.ncpu - run: name: Check for release command: | if [ -n "${RUN_RELEASE_BUILD}" ]; then echo 'release build triggered from api' echo 'export ELECTRON_RELEASE=1 TRIGGERED_BY_API=1' >> $BASH_ENV fi - run: name: Bootstrap command: | if [ "$ELECTRON_RELEASE" == "1" ]; then echo 'Bootstrapping Electron for release build' script/bootstrap.py --target_arch=$TARGET_ARCH else echo 'Bootstrapping Electron for debug build' script/bootstrap.py --target_arch=$TARGET_ARCH --dev fi - run: npm run lint - run: name: Build command: | if [ "$ELECTRON_RELEASE" == "1" ]; then echo 'Building Electron for release' script/build.py -c R else echo 'Building Electron for debug' script/build.py -c D fi - run: name: Create distribution command: | if [ "$ELECTRON_RELEASE" == "1" ]; then echo 'Creating Electron release distribution' script/create-dist.py else echo 'Skipping create distribution because build is not for release' fi - run: name: Upload distribution command: | if [ "$ELECTRON_RELEASE" == "1" ] && [ "$TRIGGERED_BY_API" != "1" ]; then echo 'Uploading Electron release distribution to github releases' script/upload.py elif [ "$ELECTRON_RELEASE" == "1" ] && [ "$TRIGGERED_BY_API" == "1" ]; then echo 'Uploading Electron release distribution to s3' script/upload.py --upload_to_s3 else echo 'Skipping upload distribution because build is not for release' fi - run: name: Test environment: MOCHA_FILE: junit/test-results.xml MOCHA_REPORTER: mocha-junit-reporter command: | if [ "$ELECTRON_RELEASE" != "1" ]; then echo 'Testing Electron debug build' mkdir junit script/test.py --ci --rebuild_native_modules else echo 'Skipping testing on release build' fi - run: name: Verify FFmpeg command: | if [ "$ELECTRON_RELEASE" != "1" ]; then echo 'Verifying ffmpeg on debug build' script/verify-ffmpeg.py else echo 'Skipping verify ffmpeg on release build' fi - run: name: Generate Typescript Definitions command: npm run create-typescript-definitions - store_test_results: path: junit - store_artifacts: path: junit - store_artifacts: path: out/electron.d.ts - store_artifacts: path: out/electron-api.json electron-mas-x64: environment: TARGET_ARCH: x64 MAS_BUILD: 1 macos: xcode: "9.0" resource_class: xlarge steps: - checkout - run: name: Reclaim disk space command: | df -h sudo rm -rf /Library/Developer/CoreSimulator df -h sysctl -n hw.ncpu - run: name: Check for release command: | if [ -n "${RUN_RELEASE_BUILD}" ]; then echo 'release build triggered from api' echo 'export ELECTRON_RELEASE=1 TRIGGERED_BY_API=1' >> $BASH_ENV fi - run: name: Bootstrap command: | if [ "$ELECTRON_RELEASE" == "1" ]; then echo 'Bootstrapping Electron for release build' script/bootstrap.py --target_arch=$TARGET_ARCH else echo 'Bootstrapping Electron for debug build' script/bootstrap.py --target_arch=$TARGET_ARCH --dev fi - run: npm run lint - run: name: Build command: | if [ "$ELECTRON_RELEASE" == "1" ]; then echo 'Building Electron for release' script/build.py -c R else echo 'Building Electron for debug' script/build.py -c D fi - run: name: Create distribution command: | if [ "$ELECTRON_RELEASE" == "1" ]; then echo 'Creating Electron release distribution' script/create-dist.py else echo 'Skipping create distribution because build is not for release' fi - run: name: Upload distribution command: | if [ "$ELECTRON_RELEASE" == "1" ] && [ "$TRIGGERED_BY_API" != "1" ]; then echo 'Uploading Electron release distribution to github releases' script/upload.py elif [ "$ELECTRON_RELEASE" == "1" ] && [ "$TRIGGERED_BY_API" == "1" ]; then echo 'Uploading Electron release distribution to s3' script/upload.py --upload_to_s3 else echo 'Skipping upload distribution because build is not for release' fi - run: name: Test environment: MOCHA_FILE: junit/test-results.xml MOCHA_REPORTER: mocha-junit-reporter command: | if [ "$ELECTRON_RELEASE" != "1" ]; then echo 'Testing Electron debug build' mkdir junit script/test.py --ci --rebuild_native_modules else echo 'Skipping testing on release build' fi - run: name: Verify FFmpeg command: | if [ "$ELECTRON_RELEASE" != "1" ]; then echo 'Verifying ffmpeg on debug build' script/verify-ffmpeg.py else echo 'Skipping verify ffmpeg on release build' fi - run: name: Generate Typescript Definitions command: npm run create-typescript-definitions - store_test_results: path: junit - store_artifacts: path: junit - store_artifacts: path: out/electron.d.ts - store_artifacts: path: out/electron-api.json workflows: version: 2 build-arm: jobs: - electron-linux-arm - electron-linux-arm-test: requires: - electron-linux-arm build-arm64: jobs: - electron-linux-arm64 - electron-linux-arm64-test: requires: - electron-linux-arm64 build-ia32: jobs: - electron-linux-ia32 build-x64: jobs: - electron-linux-x64 build-osx-x64: jobs: - electron-osx-x64 build-mas-x64: jobs: - electron-mas-x64