name: CI on: push: branches: - master pull_request: jobs: Macos: runs-on: macos-latest steps: - name: Checkout code uses: actions/checkout@v2 - name: Setup python 3.10 uses: actions/setup-python@v2 with: python-version: '3.10' - name: Install packages run: | brew update brew install gcovr pkg-config ninja - name: Install python modules run: pip3 install meson==0.49.2 pytest - name: Install deps shell: bash run: | ARCHIVE_NAME=deps2_osx_native_dyn_libkiwix.tar.xz wget -O- http://tmp.kiwix.org/ci/${ARCHIVE_NAME} | tar -xJ -C $HOME - name: Compile shell: bash run: | export PKG_CONFIG_PATH=$HOME/BUILD_native_dyn/INSTALL/lib/pkgconfig export CPPFLAGS="-I$HOME/BUILD_native_dyn/INSTALL/include" meson . build --default-library=shared -Db_coverage=true cd build ninja - name: Test shell: bash run: | export LD_LIBRARY_PATH=$HOME/BUILD_native_dyn/INSTALL/lib:$HOME/BUILD_native_dyn/INSTALL/lib64 cd build meson test --verbose env: SKIP_BIG_MEMORY_TEST: 1 Linux: strategy: fail-fast: false matrix: name: - native_static - native_dyn - android_arm - android_arm64 - win32_static - win32_dyn include: - name: native_static target: native_static image_variant: bionic lib_postfix: '/x86_64-linux-gnu' - name: native_dyn target: native_dyn image_variant: bionic lib_postfix: '/x86_64-linux-gnu' - name: android_arm target: android_arm image_variant: bionic lib_postfix: '/arm-linux-androideabi' - name: android_arm64 target: android_arm64 image_variant: bionic lib_postfix: '/aarch64-linux-android' - name: win32_static target: win32_static image_variant: f35 lib_postfix: '64' - name: win32_dyn target: win32_dyn image_variant: f35 lib_postfix: '64' env: HOME: /home/runner runs-on: ubuntu-latest container: image: "kiwix/kiwix-build_ci:${{matrix.image_variant}}-31" steps: - name: Checkout code shell: python run: | from subprocess import check_call from os import environ command = [ 'git', 'clone', 'https://github.com/${{github.repository}}', '--depth=1', '--branch', '${{ github.head_ref || github.ref_name }}' ] check_call(command, cwd=environ['HOME']) - name: Install deps shell: bash run: | ARCHIVE_NAME=deps2_${OS_NAME}_${{matrix.target}}_libkiwix.tar.xz wget -O- http://tmp.kiwix.org/ci/${ARCHIVE_NAME} | tar -xJ -C /home/runner - name: Compile shell: bash run: | meson --version if [[ "${{matrix.target}}" =~ .*_dyn ]]; then MESON_OPTION="--default-library=shared" else MESON_OPTION="--default-library=static" fi if [[ "${{matrix.target}}" =~ native_.* ]]; then MESON_OPTION="$MESON_OPTION -Db_coverage=true" else MESON_OPTION="$MESON_OPTION --cross-file $HOME/BUILD_${{matrix.target}}/meson_cross_file.txt" fi if [[ "${{matrix.target}}" =~ android_.* ]]; then MESON_OPTION="$MESON_OPTION -Dstatic-linkage=true" fi cd $HOME/libkiwix 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" - name: Test if: startsWith(matrix.target, 'native_') shell: bash run: | cd $HOME/libkiwix/build meson test --verbose ninja coverage env: LD_LIBRARY_PATH: "/home/runner/BUILD_${{matrix.target}}/INSTALL/lib:/home/runner/BUILD_${{matrix.target}}/INSTALL/lib${{matrix.lib_postfix}}" SKIP_BIG_MEMORY_TEST: 1 - name: Publish coverage shell: bash run: | cd $HOME/libkiwix curl https://codecov.io/bash -o codecov.sh bash codecov.sh -n "${OS_NAME}_${{matrix.target}}" -Z rm codecov.sh if: startsWith(matrix.target, 'native_') env: CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}