# 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 - dev - /^v\d+\.\d+(\.\d+)?(-\S*)?$/ matrix: include: - os: osx osx_image: xcode9.0 language: node_js node_js: "10" env: - ELECTRON_CACHE=$HOME/.cache/electron - ELECTRON_BUILDER_CACHE=$HOME/.cache/electron-builder - os: linux sudo: required dist: trusty language: node_js node_js: "10" 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. # libsecret-1-dev is required for keytar - https://github.com/atom/node-keytar - | 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 sudo apt-get install -y libsecret-1-dev fi script: - | # Install tools npm install # 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 packages/app-cli npm run test-ci 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 packages/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 # building 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 packages/app-desktop USE_HARD_LINKS=false npm run dist