sudo: true git: submodules: false language: node_js node_js: - '11' addons: artifacts: working_dir: app/dist target_paths: client/${TRAVIS_COMMIT:0:8}/${TRAVIS_OS_NAME} permissions: public-read paths: - mailsync.tar.gz - Mailspring.dmg - Mailspring.zip - $(find . -type f -name mailspring-*.deb | tr "\n" ":") - $(find . -type f -name mailspring-*.rpm | tr "\n" ":") apt: sources: - ubuntu-toolchain-r-test packages: - build-essential - clang - execstack - fakeroot - g++-4.8 - git - libgnome-keyring-dev - libsecret-1-dev - xvfb - rpm - libxext-dev - libxtst-dev - libxkbfile-dev branches: only: - master - '/ci-.*/' - '/stable.*/' matrix: include: - os: linux env: CC=gcc-4.8 CXX=g++-4.8 dist: trusty - os: osx osx_image: xcode10.1 env: CC=clang CXX=clang++ SIGN_BUILD=true before_install: # Decrypt and uncompress code signing certs, etc. - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then sudo apt-get install cmake execstack g++-5 autoconf automake libtool libc-ares-dev libctemplate-dev libcurl4-openssl-dev libicu-dev libxext-dev libsasl2-dev libsasl2-modules libsasl2-modules-gssapi-mit libssl-dev libtidy-dev libxtst-dev libxkbfile-dev libglib2.0-dev libxml2-dev uuid-dev; fi - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then export CC=gcc-5 CXX=g++-5; fi - openssl aes-256-cbc -K $encrypted_faf2708e46e2_key -iv $encrypted_faf2708e46e2_iv -in app/build/resources/certs.tar.enc -out app/build/resources/certs.tar -d; - mkdir app/build/resources/certs; - tar xvf app/build/resources/certs.tar --directory=app/build/resources/; - source app/build/resources/certs/mac/set_unix_env.sh; # Checkout the (currently private) C++ Mailsync codebase - GIT_SSH_COMMAND='ssh -i app/build/resources/certs/mailsync-deploy-key -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no' SSH_ASKPASS=/Users/travis/build/Foundry376/Mailspring/app/build/resources/certs/ssh-askpass-fix DISPLAY=nothing:0 git submodule update --init mailsync # Resolves https://travis-ci.community/t/npm-ci-will-fail-if-cached-dependency-includes-npm/4203/6 # Don't run the copy of npm inside node_modules when erasing + building the node_modules... install: PATH=$(echo "$PATH" | sed 's/.\/node_modules\/.bin://') npm ci before_script: - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then export DISPLAY=:99.0; sh -e /etc/init.d/xvfb start; fi script: - npm run ci-setup-mac-keychain - npm run lint - mailsync/build.sh - mv ./mailsync ./mailsync-src - DEBUG=electron-packager,electron-osx-sign npm run build cache: directories: - node_modules - app/node_modules - /tmp/mailsync-build-deps-v2 - /var/lib/docker/aufs after_success: # Grab the version number from the .deb product and update the snapcraft.yml file - sed "s/MAILSPRING_VERSION/$(grep -E -o '([0-9]+.[0-9]+.[0-9]+)' <<< "$(find app/dist -type f -name mailspring-*.deb)")/g" snap/snapcraft.template.yaml > snap/snapcraft.yaml # Decrypt the snapcraft login information - openssl aes-256-cbc -K $encrypted_d506bd5213c4_key -iv $encrypted_d506bd5213c4_iv -in .snapcraft/credentials.enc -out .snapcraft/credentials -d services: - docker deploy: 'on': branch: master condition: $TRAVIS_OS_NAME = linux provider: script script: docker run -v $(pwd):$(pwd) -t snapcore/snapcraft sh -c "apt update -qq && cd $(pwd) && snapcraft && snapcraft login --with .snapcraft/credentials && (snapcraft push *.snap --release edge || true)" skip_cleanup: true