language: cpp dist: xenial sudo: required services: - docker branches: only: - master - /\d+\.\d+\.\d+$/ if: type != push OR tag IS present stages: - build_docker_images - build - android_build jobs: include: - stage: build_docker_images script: &build_images - | if [ ! $(curl -sflL https://hub.docker.com/v2/repositories/kiwix/kiwix-build_ci/tags/${VARIANT}-${DOCKER_VERSION}) ] then echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin docker build -t kiwix-build_ci -f travis/${VARIANT}_builder.dockerfile . docker tag kiwix-build_ci kiwix/kiwix-build_ci:${VARIANT}-${DOCKER_VERSION} docker push kiwix/kiwix-build_ci:${VARIANT}-${DOCKER_VERSION} fi env: VARIANT=xenial - stage: build_docker_images script: *build_images env: VARIANT=bionic - stage: build_docker_images script: *build_images env: VARIANT=f30 - stage: android_build env: PLATFORM="android" if: type != pull_request - env: PLATFORM="native_dyn" os: osx - env: PLATFORM="iOS_arm64" os: osx - env: PLATFORM="iOS_i386" os: osx before_install: - PATH=$PATH:${HOME}/bin:${HOME}/.local/bin - mkdir -p /tmp/private $HOME/EXPORT/BASE /$HOME/.cache $HOME/.gradle/caches - chmod -R a+wX $HOME/EXPORT $HOME/.cache $HOME/.gradle - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then PATH=$PATH:$(brew --prefix)/opt/gettext/bin; fi - '[ -n "$encrypted_eba2f7543984_iv" ] && openssl aes-256-cbc -K $encrypted_eba2f7543984_key -iv $encrypted_eba2f7543984_iv -in travis/travisci_builder_id_key.enc -out $SSH_KEY -d' - chmod 600 $SSH_KEY before_cache: - rm -f $HOME/.gradle/caches/modules-2/modules-2.lock - rm -fr $HOME/.gradle/caches/*/plugin-resolution/ cache: ccache: true directories: - $HOME/.cache/pip - $HOME/.gradle/caches/ - $HOME/.gradle/wrapper/ - $HOME/.android/build-cache install: if [[ $TRAVIS_OS_NAME != "linux" ]]; then travis/install_extra_deps.sh; fi stage: build script: - | if [[ $TRAVIS_OS_NAME = "linux" ]] then VARIANT=xenial if [[ $DESKTOP_ONLY = 1 ]]; then VARIANT=bionic; fi if [[ $PLATFORM =~ ^win32_* ]]; then VARIANT=f30; fi fi - | if [[ $TRAVIS_OS_NAME = "linux" ]] then docker run --rm \ -e PLATFORM -e NIGHTLY_DATE -e TRAVIS_EVENT_TYPE -e DESKTOP_ONLY -e TRAVIS_TAG \ --device /dev/fuse --cap-add ALL --privileged \ --mount=type=bind,src=$HOME/EXPORT,dst=/home/ci_builder/EXPORT \ --mount=type=bind,src=$HOME/.cache,dst=/home/ci_builder/.cache \ --mount=type=bind,src=$HOME/.gradle/caches,dst=/home/ci_builder/.gradle/caches \ --mount=type=bind,src=$TRAVIS_BUILD_DIR,dst=/home/ci_builder/kiwix-build \ kiwix/kiwix-build_ci:${VARIANT}-${DOCKER_VERSION} if [[ $PLATFORM = "native_dyn" && $DESKTOP_ONLY = 1 ]] then docker run -rm \ -e PLATFORM -e NIGHTLY_DATE -e TRAVIS_EVENT_TYPE -e DESKTOP_ONLY -e TRAVIS_TAG \ --device /dev/fuse --cap-add ALL --privileged \ --mount=type=bind,src=$HOME/EXPORT,dst=/home/ci_builder/EXPORT \ --mount=type=bind,src=$TRAVIS_BUILD_DIR,dst=/home/ci_builder/kiwix-build \ kiwix/kiwix-build_ci:xenial-${DOCKER_VERSION} \ /home/ci_builder/kiwix-build/scripts/create_kiwix-desktop_appImage.sh /home/ci_builder/EXPORT/AppDir fi fi - if [[ $TRAVIS_OS_NAME != "linux" ]]; then python3 travis/compile_all.py; fi after_success: - travis/upload_base_deps.sh after_failure: - travis/upload_base_deps.sh - travis/upload_all_log.sh deploy: - provider: script skip_cleanup: true script: travis/deploy.sh on: tags: true condition: $TRAVIS_BUILD_STAGE_NAME != "Build_docker_images" - provider: script skip_cleanup: true script: travis/deploy.sh on: branch: master condition: $TRAVIS_BUILD_STAGE_NAME != "Build_docker_images" && $TRAVIS_EVENT_TYPE = cron env: global: - NIGHTLY_DATE=$(date +%Y-%m-%d) - SSH_KEY=/tmp/private/travisci_builder_id_key - DOCKER_VERSION=3 matrix: - PLATFORM="flatpak" DESKTOP_ONLY=1 - PLATFORM="native_dyn" - PLATFORM="native_static" - PLATFORM="native_mixed" - PLATFORM="armhf_dyn" - PLATFORM="armhf_static" - PLATFORM="win32_dyn" - PLATFORM="win32_static" - PLATFORM="i586_dyn" - PLATFORM="i586_static" - PLATFORM="native_dyn" DESKTOP_ONLY=1 - PLATFORM="android_arm" - PLATFORM="android_arm64" - PLATFORM="android_x86" - PLATFORM="android_x86_64" addons: ssh_known_hosts: - download.kiwix.org - tmp.kiwix.org - download.openzim.org notifications: irc: channels: - "chat.freenode.net#kiwix" on_success: change on_failure: always email: recipients: - contact@kiwix.org - mgautier@kymeria.fr on_success: change on_failure: always