diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml new file mode 100644 index 0000000..d09396e --- /dev/null +++ b/.github/workflows/pr.yml @@ -0,0 +1,77 @@ +name: CI + +on: [pull_request] + +jobs: + Linux: + strategy: + fail-fast: false + matrix: + target: + - native_static + - native_dyn + - win32_static + - win32_dyn + include: + - target: native_static + image_variant: xenial + lib_postfix: '/x86_64-linux-gnu' + - target: native_dyn + image_variant: xenial + lib_postfix: '/x86_64-linux-gnu' + - target: win32_static + image_variant: f31 + lib_postfix: '64' + - target: win32_dyn + image_variant: f31 + lib_postfix: '64' + env: + HOME: /home/runner + runs-on: ubuntu-latest + container: + image: "kiwix/kiwix-build_ci:${{matrix.image_variant}}-26" + steps: + - name: Checkout code + shell: python + run: | + import json + from subprocess import check_call + from os import environ + with open(environ['GITHUB_EVENT_PATH'], 'r') as f: + content = f.read() + event_data = json.loads(content) + try: + branch_ref = event_data['ref'].split('/')[-1] + except KeyError: + branch_ref = event_data['pull_request']['head']['ref'] + print("Cloning branch", branch_ref) + command = [ + 'git', 'clone', + 'https://github.com/${{github.repository}}', + '--depth=1', + '--branch', branch_ref + ] + check_call(command, cwd=environ['HOME']) + - name: Install deps + shell: bash + run: | + ARCHIVE_NAME=deps2_${OS_NAME}_${{matrix.target}}_kiwix-tools.tar.xz + wget -O- http://tmp.kiwix.org/ci/${ARCHIVE_NAME} | tar -xJ -C /home/runner + - name: Compile + shell: bash + run: | + if [[ "${{matrix.target}}" =~ .*_static ]]; then + MESON_OPTION="-Dstatic-linkage=true" + else + MESON_OPTION="" + fi + if [[ ! "${{matrix.target}}" =~ native_.* ]]; then + MESON_OPTION="$MESON_OPTION --cross-file $HOME/BUILD_${{matrix.target}}/meson_cross_file.txt" + fi + cd $HOME/kiwix-tools + meson . build ${MESON_OPTION} + cd build + ninja + env: + PKG_CONFIG_PATH: "/home/runner/BUILD_${{matrix.target}}/INSTALL/lib/pkgconfig:/home/runner/BUILD_${{matrix.target}}/INSTALL/lib${{matrix.lib_postfix}}/pkgconfig" + CPPFLAGS: "-I/home/runner/BUILD_${{matrix.target}}/INSTALL/include" diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 550e359..0000000 --- a/.travis.yml +++ /dev/null @@ -1,12 +0,0 @@ -language: cpp -dist: xenial -sudo: true -cache: ccache -install: travis/install_deps.sh -script: travis/compile.sh -env: - matrix: - - PLATFORM="native_static" - - PLATFORM="native_dyn" - - PLATFORM="win32_static" - - PLATFORM="win32_dyn" diff --git a/travis/compile.sh b/travis/compile.sh deleted file mode 100755 index 1a5d333..0000000 --- a/travis/compile.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/usr/bin/env bash - -set -e - -BUILD_DIR=${HOME}/BUILD_${PLATFORM} -INSTALL_DIR=${BUILD_DIR}/INSTALL - - -case ${PLATFORM} in - "native_static") - MESON_OPTION="-Dstatic-linkage=true" - ;; - "native_dyn") - MESON_OPTION="" - ;; - "win32_static") - MESON_OPTION="-Dstatic-linkage=true --cross-file ${BUILD_DIR}/meson_cross_file.txt" - ;; - "win32_dyn") - MESON_OPTION="--cross-file ${BUILD_DIR}/meson_cross_file.txt" - ;; -esac - -cd ${TRAVIS_BUILD_DIR} -export PKG_CONFIG_PATH=${INSTALL_DIR}/lib/x86_64-linux-gnu/pkgconfig -export PATH=${INSTALL_DIR}/bin:$PATH -meson . build ${MESON_OPTION} -cd build -ninja diff --git a/travis/install_deps.sh b/travis/install_deps.sh deleted file mode 100755 index 58674fd..0000000 --- a/travis/install_deps.sh +++ /dev/null @@ -1,49 +0,0 @@ -#!/usr/bin/env bash - -set -e - -REPO_NAME=${TRAVIS_REPO_SLUG#*/} -ARCHIVE_NAME=deps_linux_xenial_${PLATFORM}_${REPO_NAME}.tar.xz - -# Packages. -case ${PLATFORM} in - "native_static") - PACKAGES="gcc python3.5 cmake libbz2-dev ccache zlib1g-dev uuid-dev" - ;; - "native_dyn") - PACKAGES="gcc python3.5 cmake libbz2-dev ccache zlib1g-dev uuid-dev libmicrohttpd-dev" - ;; - "win32_static") - PACKAGES="g++-mingw-w64-i686 gcc-mingw-w64-i686 gcc-mingw-w64-base mingw-w64-tools ccache python3.5" - ;; - "win32_dyn") - PACKAGES="g++-mingw-w64-i686 gcc-mingw-w64-i686 gcc-mingw-w64-base mingw-w64-tools ccache python3.5" - ;; - "android_arm") - PACKAGES="gcc python3.5 cmake ccache" - ;; - "android_arm64") - PACKAGES="gcc python3.5 cmake ccache" - ;; -esac - -sudo apt-get update -qq -sudo apt-get install -qq python3-pip ${PACKAGES} -wget https://bootstrap.pypa.io/get-pip.py -python3.5 get-pip.py --user -python3.5 -m pip install --user --upgrade pip -python3.5 -m pip install --user meson==0.49.2 - -# Ninja -cd $HOME -git clone git://github.com/ninja-build/ninja.git -cd ninja -git checkout release -./configure.py --bootstrap -sudo cp ninja /bin - -# Dependencies comming from kiwix-build. -cd ${HOME} -wget http://tmp.kiwix.org/ci/${ARCHIVE_NAME} -tar xf ${HOME}/${ARCHIVE_NAME} -sudo ln -s travis ../ci_builder