# Only build tags (Doesn't work - doesn't build anything) if: tag IS present OR type = pull_request rvm: 2.3.3 # It's important to only build production branches otherwise Electron Builder # might take assets from dev branches and overwrite those of production. # https://docs.travis-ci.com/user/customizing-the-build/#Building-Specific-Branches branches: only: - master - /^v\d+\.\d+(\.\d+)?(-\S*)?$/ matrix: include: - os: osx osx_image: xcode9.0 language: node_js node_js: "8" env: - ELECTRON_CACHE=$HOME/.cache/electron - ELECTRON_BUILDER_CACHE=$HOME/.cache/electron-builder - os: linux sudo: required dist: trusty language: node_js node_js: "8" env: - ELECTRON_CACHE=$HOME/.cache/electron - ELECTRON_BUILDER_CACHE=$HOME/.cache/electron-builder # cache: # directories: # - node_modules # - $HOME/.cache/electron # - $HOME/.cache/electron-builder before_install: # HOMEBREW_NO_AUTO_UPDATE needed so that Homebrew doesn't upgrade to the next # version, which requires Ruby 2.3, which is not available on the Travis VM. # Silence apt-get update errors (for example when a module doesn't exist) since # otherwise it will make the whole build fails, even though all we need is yarn. - | if [ "$TRAVIS_OS_NAME" == "osx" ]; then HOMEBREW_NO_AUTO_UPDATE=1 brew install yarn else curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add - echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list sudo apt-get update || true sudo apt-get install -y yarn sudo apt-get install -y gettext fi script: - | # Copy lib rsync -aP --delete ReactNativeClient/lib/ ElectronClient/app/lib/ # Install tools npm install npm run tsc cd Tools npm install cd .. # Run test units. # Only do it for pull requests because Travis randomly fails to run them # and that would break the desktop release. if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then cd CliClient npm install ./run_test.sh testResult=$? if [ $testResult -ne 0 ]; then exit $testResult fi cd .. fi # Run linter for pull requests only - this is so that # bypassing eslint is allowed for urgent fixes. if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then npm run linter-ci ./ testResult=$? if [ $testResult -ne 0 ]; then exit $testResult fi fi # Validate translations - this is needed as some users manually # edit .po files (and often make mistakes) instead of using a proper # tool like poedit. Doing it for Linux only is sufficient. if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then if [ "$TRAVIS_OS_NAME" != "osx" ]; then node Tools/validate-translation.js testResult=$? if [ $testResult -ne 0 ]; then exit $testResult fi fi fi # Find out if we should run the build or not. Electron-builder gets stuck when # builing PRs so we disable it in this case. The Linux build should provide # enough info if the app builds or not. # https://github.com/electron-userland/electron-builder/issues/4263 if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then if [ "$TRAVIS_OS_NAME" == "osx" ]; then exit 0 fi fi # Prepare the Electron app and build it cd ElectronClient/app npm install && USE_HARD_LINKS=false yarn dist