From ded38889cf764e2bf54a10f3aecbf8d76fc45ce9 Mon Sep 17 00:00:00 2001 From: Matthieu Gautier Date: Tue, 5 Jun 2018 22:47:48 +0200 Subject: [PATCH] Use docker to build native_dyn. As we want to use qt and packages are available only since ubuntu artful, we need to use docker because travis-ci is ubuntu trusty. We could also build qt, but it takes too many time and travis timeout. --- .travis.yml | 6 +++- Dockerfile | 75 +++++++++++++++++++++++++++++++++++++++++++ travis/compile_all.py | 6 ++-- travis/deploy.sh | 14 ++++---- 4 files changed, 91 insertions(+), 10 deletions(-) create mode 100644 Dockerfile diff --git a/.travis.yml b/.travis.yml index c3f6c76..f000177 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,6 +2,8 @@ language: cpp dist: trusty sudo: required +services: +- docker branches: only: - master @@ -27,7 +29,9 @@ cache: - $HOME/.gradle/wrapper/ - $HOME/.android/build-cache install: travis/install_extra_deps.sh -script: travis/compile_all.py +script: +- if [ $TRAVIS_OS_NAME == "osx" ] || [ $PLATFORM != "native_dyn" ]; then travis/compile_all.py; fi +- if [ $TRAVIS_OS_NAME == "linux" ] && [ $PLATFORM == "native_dyn" ]; then docker build -t kiwix/build . && docker run -e PLATFORM -e NIGHTLY_DATE -e TRAVIS_EVENT_TYPE -e TRAVIS_BUILD_DIR kiwix/build; fi after_failure: travis/upload_all_log.sh deploy: - provider: script diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..4ed82f4 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,75 @@ +FROM ubuntu:artful + +ENV LANG C.UTF-8 + +RUN \ + dpkg --add-architecture i386; \ + apt update -q; \ + apt full-upgrade --purge -q -y; \ + apt install -q -y --no-install-recommends \ +# Base build tools + build-essential \ +# gcc-5 \ +# g++-5 \ + automake \ + libtool \ + cmake \ + ccache \ + pkg-config \ + autopoint \ + patch \ + python \ + python3 \ + python3-pip \ + python3-setuptools \ + git \ + subversion \ + wget \ + unzip \ + sudo \ +# Win32 cross-compilation + g++-mingw-w64-i686 \ + gcc-mingw-w64-i686 \ + gcc-mingw-w64-base \ + mingw-w64-tools \ +# Some dependencies already packaged + libbz2-dev \ + libmagic-dev \ + zlib1g-dev \ + uuid-dev \ + ctpp2-utils \ + libctpp2-dev \ + libmicrohttpd-dev \ +# Some helper tools + vim \ + less \ + grep \ + openssh-client \ + ; \ + apt-get clean -y; \ + rm -rf \ + /usr/share/doc/* \ + /var/cache/debconf/* + +RUN useradd --create-home travis -G sudo +RUN echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers +USER travis + +WORKDIR /home/travis + +RUN \ + mkdir -p /home/travis/.local/bin ;\ + wget https://github.com/ninja-build/ninja/releases/download/v1.8.2/ninja-linux.zip ;\ + unzip ninja-linux.zip ninja ;\ + mv ninja /home/travis/.local/bin ;\ + rm ninja-linux.zip +ENV PATH="/home/travis/.local/bin:${PATH}" + +COPY . kiwix-build/ +RUN sudo chown -R travis:travis /home/travis/kiwix-build +RUN pip3 install --user -e kiwix-build + +ENV TRAVISCI_SSH_KEY /home/travis/kiwix-build/travis/travisci_builder_id_key +ENV TRAVIS_OS_NAME linux + +CMD kiwix-build/travis/compile_all.py && kiwix-build/travis/deploy.sh diff --git a/travis/compile_all.py b/travis/compile_all.py index d4716ad..f73af5d 100755 --- a/travis/compile_all.py +++ b/travis/compile_all.py @@ -31,7 +31,7 @@ NIGHTLY_ZIM_ARCHIVES_DIR = HOME/'NIGHTLY_ZIM_ARCHIVES'/NIGHTLY_DATE RELEASE_ZIM_ARCHIVES_DIR = HOME/'RELEASE_ZIM_ARCHIVES' DIST_KIWIX_ARCHIVES_DIR = HOME/'DIST_KIWIX_ARCHIVES' DIST_ZIM_ARCHIVES_DIR = HOME/'DIST_ZIM_ARCHIVES' -SSH_KEY = Path(environ['TRAVIS_BUILD_DIR'])/'travis'/'travisci_builder_id_key' +SSH_KEY = environ.get('TRAVISCI_SSH_KEY', Path(environ['TRAVIS_BUILD_DIR'])/'travis'/'travisci_builder_id_key') # We have build everything. Now create archives for public deployement. BINARIES = { @@ -162,7 +162,9 @@ def make_deps_archive(target, full=False): def scp(what, where): print_message("Copy {} to {}", what, where) - command = ['scp', '-i', str(SSH_KEY), str(what), str(where)] + command = ['scp', '-o', 'StrictHostKeyChecking=no', + '-i', str(SSH_KEY), + str(what), str(where)] subprocess.check_call(command) diff --git a/travis/deploy.sh b/travis/deploy.sh index b37b8d2..3bb26f0 100755 --- a/travis/deploy.sh +++ b/travis/deploy.sh @@ -8,14 +8,14 @@ RELEASE_KIWIX_ARCHIVES_DIR=${HOME}/RELEASE_KIWIX_ARCHIVES RELEASE_ZIM_ARCHIVES_DIR=${HOME}/RELEASE_ZIM_ARCHIVES DIST_KIWIX_ARCHIVES_DIR=${HOME}/DIST_KIWIX_ARCHIVES DIST_ZIM_ARCHIVES_DIR=${HOME}/DIST_ZIM_ARCHIVES -SSH_KEY=travis/travisci_builder_id_key +SSH_KEY=${TRAVISCI_SSH_KEY:-travis/travisci_builder_id_key} if [[ "$TRAVIS_EVENT_TYPE" = "cron" ]] then - scp -vrp -i ${SSH_KEY} \ + scp -vrp -i ${SSH_KEY} -o StrictHostKeyChecking=no \ ${NIGHTLY_KIWIX_ARCHIVES_DIR} \ nightlybot@download.kiwix.org:/var/www/download.kiwix.org/nightly - scp -vrp -i ${SSH_KEY} \ + scp -vrp -i ${SSH_KEY} -o StrictHostKeyChecking=no \ ${NIGHTLY_ZIM_ARCHIVES_DIR} \ nightlybot@download.kiwix.org:/var/www/download.openzim.org/nightly @@ -27,7 +27,7 @@ then for archive in $RELEASE_ARCHIVES do subdir=$(basename $(dirname $archive)) - scp -vrp -i ${SSH_KEY} \ + scp -vrp -i ${SSH_KEY} -o StrictHostKeyChecking=no \ ${archive} \ nightlybot@download.kiwix.org:/var/www/download.kiwix.org/release/${subdir} done @@ -39,7 +39,7 @@ then for archive in $RELEASE_ARCHIVES do subdir=$(basename $(dirname $archive)) - scp -vrp -i ${SSH_KEY} \ + scp -vrp -i ${SSH_KEY} -o StrictHostKeyChecking=no \ ${archive} \ nightlybot@download.openzim.org:/var/www/download.openzim.org/release/${subdir} done @@ -51,7 +51,7 @@ then for archive in $DIST_KIWIX_ARCHIVES do subdir=$(basename $(dirname $archive)) - scp -vrp -i ${SSH_KEY} \ + scp -vrp -i ${SSH_KEY} -o StrictHostKeyChecking=no \ ${archive} \ nightlybot@download.kiwix.org:/var/www/download.kiwix.org/release/${subdir} done @@ -63,7 +63,7 @@ then for archive in $DIST_ZIM_ARCHIVES do subdir=$(basename $(dirname $archive)) - scp -vrp -i ${SSH_KEY} \ + scp -vrp -i ${SSH_KEY} -o StrictHostKeyChecking=no \ ${archive} \ nightlybot@download.openzim.org:/var/www/download.openzim.org/release/${subdir} done