123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355 |
- build-steps: &build-steps
- steps:
- - checkout
- - run:
- name: Install Node.js 10 on MacOS
- command: |
- if [ "$INSTALL_MACOS_NODE" == "true" ]; then
- echo 'Installing Node.js 10 for MacOS'
- brew update
- brew install node@10
- echo 'export PATH="/usr/local/opt/node@10/bin:$PATH"' >> $BASH_ENV
- fi
- - run:
- name: Check for release
- command: |
- if [ -n "${RUN_RELEASE_BUILD}" ]; then
- echo 'release build triggered from api'
- echo 'export ELECTRON_RELEASE=1 UPLOAD_TO_S3=1' >> $BASH_ENV
- fi
- - run:
- name: Bootstrap
- command: |
- if [ "$ELECTRON_RELEASE" == "1" ]; then
- echo "Bootstrapping Electron for release build for $TARGET_ARCH"
- script/bootstrap.py --target_arch=$TARGET_ARCH
- else
- echo "Bootstrapping Electron for debug build for $TARGET_ARCH"
- script/bootstrap.py --target_arch=$TARGET_ARCH --dev
- fi
- - run:
- name: Lint
- command: 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" ] && [ "$UPLOAD_TO_S3" != "1" ]; then
- echo 'Uploading Electron release distribution to github releases'
- script/upload.py
- elif [ "$ELECTRON_RELEASE" == "1" ] && [ "$UPLOAD_TO_S3" == "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: Setup for headless testing
- command: |
- if [ "$RUN_HEADLESS_TESTS" == "true" ]; then
- echo 'Setup for headless testing'
- sh -e /etc/init.d/xvfb start
- else
- echo 'Headless testing not needed'
- fi
- - run:
- name: Verify mksnapshot
- command: |
- if [ "$RUN_TESTS" == "true" ] && [ "$ELECTRON_RELEASE" == "1" ]; then
- echo 'Verifying mksnapshot on release build'
- script/verify-mksnapshot.py
- else
- echo 'Skipping mksnapshot tests due to configuration'
- fi
- - run:
- name: Test
- environment:
- MOCHA_FILE: junit/test-results.xml
- MOCHA_REPORTER: mocha-junit-reporter
- command: |
- if [ "$RUN_TESTS" == "true" ]; then
- if [ "$ELECTRON_RELEASE" != "1" ]; then
- echo 'Testing Electron debug build'
- mkdir junit
- script/test.py --ci --rebuild_native_modules
- else
- if [ "$UPLOAD_TO_S3" == "1" ]; then
- echo 'Testing Electron release build'
- mkdir junit
- script/test.py --ci --rebuild_native_modules -c R
- else
- echo 'Skipping tests on GitHub release'
- fi
- fi
- else
- echo 'Skipping tests due to configuration'
- fi
- - run:
- name: Verify FFmpeg
- command: |
- if [ "$RUN_TESTS" == "true" ]; then
- if [ "$ELECTRON_RELEASE" != "1" ]; then
- echo 'Verifying ffmpeg on debug build'
- script/verify-ffmpeg.py
- else
- echo 'Verifying ffmpeg on release build'
- script/verify-ffmpeg.py -R
- fi
- else
- echo 'Skipping tests due to configuration'
- fi
- - run:
- name: Generate Typescript Definitions
- command: |
- if [ "$CREATE_TYPESCRIPT_DEFS" == "true" ]; then
- npm run create-typescript-definitions
- fi
- - persist_to_workspace:
- root: out
- paths:
- - "*"
- - store_test_results:
- path: junit
- - store_artifacts:
- path: junit
- - store_artifacts:
- path: out
- build-defaults: &build-defaults
- docker:
- - image: electronbuilds/electron:0.0.8
- <<: *build-steps
- version: 2
- jobs:
- electron-linux-arm:
- environment:
- TARGET_ARCH: arm
- <<: *build-defaults
- resource_class: 2xlarge
- electron-linux-arm-test:
- machine: true
- steps:
- - attach_workspace:
- at: /tmp/workspace/project/out
- - 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-arm-release-nightly:
- environment:
- TARGET_ARCH: arm
- RUN_RELEASE_BUILD: true
- <<: *build-defaults
- resource_class: 2xlarge
- electron-linux-arm64:
- environment:
- TARGET_ARCH: arm64
- <<: *build-defaults
- resource_class: 2xlarge
- electron-linux-arm64-test:
- machine: true
- steps:
- - attach_workspace:
- at: /tmp/workspace/project/out
- - 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-arm64-release-nightly:
- environment:
- TARGET_ARCH: arm64
- RUN_RELEASE_BUILD: true
- <<: *build-defaults
- resource_class: 2xlarge
- electron-linux-ia32:
- environment:
- TARGET_ARCH: ia32
- DISPLAY: ':99.0'
- RUN_TESTS: true
- RUN_HEADLESS_TESTS: true
- <<: *build-defaults
- resource_class: xlarge
- electron-linux-ia32-release-nightly:
- environment:
- TARGET_ARCH: ia32
- RUN_RELEASE_BUILD: true
- <<: *build-defaults
- resource_class: xlarge
- electron-linux-mips64el:
- environment:
- TARGET_ARCH: mips64el
- <<: *build-defaults
- resource_class: xlarge
- electron-linux-x64:
- environment:
- TARGET_ARCH: x64
- DISPLAY: ':99.0'
- RUN_TESTS: true
- RUN_HEADLESS_TESTS: true
- CREATE_TYPESCRIPT_DEFS: true
- <<: *build-defaults
- resource_class: xlarge
- electron-linux-x64-release-nightly:
- environment:
- TARGET_ARCH: x64
- RUN_RELEASE_BUILD: true
- <<: *build-defaults
- resource_class: xlarge
- electron-osx-x64:
- environment:
- TARGET_ARCH: x64
- RUN_TESTS: true
- INSTALL_MACOS_NODE: true
- resource_class: large
- macos:
- xcode: "8.3.3"
- <<: *build-steps
- electron-osx-x64-release-nightly:
- environment:
- TARGET_ARCH: x64
- RUN_RELEASE_BUILD: true
- INSTALL_MACOS_NODE: true
- resource_class: large
- macos:
- xcode: "8.3.3"
- <<: *build-steps
- electron-mas-x64:
- environment:
- TARGET_ARCH: x64
- MAS_BUILD: 1
- RUN_TESTS: true
- INSTALL_MACOS_NODE: true
- resource_class: large
- macos:
- xcode: "8.3.3"
- <<: *build-steps
- electron-mas-x64-release-nightly:
- environment:
- TARGET_ARCH: x64
- MAS_BUILD: 1
- RUN_RELEASE_BUILD: true
- INSTALL_MACOS_NODE: true
- resource_class: large
- macos:
- xcode: "8.3.3"
- <<: *build-steps
- 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
- nightly-release-test:
- triggers:
- - schedule:
- cron: "0 0 * * *"
- filters:
- branches:
- only:
- - master
- - 2-0-x
- - 1-8-x
- - 1-7-x
- jobs:
- - electron-linux-arm-release-nightly
- - electron-linux-arm64-release-nightly
- - electron-linux-ia32-release-nightly
- - electron-linux-x64-release-nightly
- experimental:
- notify:
- branches:
- only:
- - master
- - 2-0-x
- - 1-8-x
- - 1-7-x
|