# Only build tags (Doesn't work - doesn't build anything) if: tag IS present OR type = pull_request OR branch = dev 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: xcode12 language: node_js node_js: "12" cache: npm: false # Cache was disabled because when changing from node_js 10 to node_js 12 # it was still using build files from Node 10 when building SQLite which # was making it fail. Might be ok to re-enable later on, although it doesn't # make build that much faster. # # env: # - ELECTRON_CACHE=$HOME/.cache/electron # - ELECTRON_BUILDER_CACHE=$HOME/.cache/electron-builder - os: linux sudo: required dist: trusty language: node_js node_js: "12" cache: npm: false # 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: - | # Prints some env variables echo "TRAVIS_OS_NAME=$TRAVIS_OS_NAME" echo "TRAVIS_BRANCH=$TRAVIS_BRANCH" echo "TRAVIS_PULL_REQUEST=$TRAVIS_PULL_REQUEST" echo "TRAVIS_TAG=$TRAVIS_TAG" # 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" ] || [ "$TRAVIS_BRANCH" = "dev" ]; then npm run test-ci testResult=$? if [ $testResult -ne 0 ]; then exit $testResult fi 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 # # If the current tag is a desktop release tag (starts with "v", such as # "v1.4.7"), we build and publish to github # # Otherwise we only build but don't publish to GitHub. It helps finding # out any issue in pull requests and dev branch. cd packages/app-desktop if [[ $TRAVIS_TAG = v* ]]; then USE_HARD_LINKS=false npm run dist else USE_HARD_LINKS=false npm run dist -- --publish=never fi