Skip to content

Merge pull request #953 from kiwix/libzim-9.8.1 #4371

Merge pull request #953 from kiwix/libzim-9.8.1

Merge pull request #953 from kiwix/libzim-9.8.1 #4371

Workflow file for this run

name: CI
on:
push:
schedule:
- cron: '0 1 * * *'
jobs:
Windows:
strategy:
fail-fast: false
matrix:
config:
- native_mixed
- native_dyn
- native_static
runs-on: windows-2025-vs2026
env:
OS_NAME: windows
COMPILE_CONFIG: ${{matrix.config}}
HOME: 'C:\\Users\\runneradmin'
steps:
- name: Checkout code
uses: actions/checkout@v6
- name: Setup python 3.13
uses: actions/setup-python@v6
with:
python-version: '3.13'
- name: Install packages
run: |
choco.exe install pkgconfiglite ninja
- name: Install python modules
shell: bash
run: |
pip3 install meson pytest requests distro paramiko
pip3 install --no-deps $GITHUB_WORKSPACE
- name: Install QT
if: ${{ matrix.config == 'native_mixed' }}
uses: jurplel/install-qt-action@v4
with:
version: 6.8.3
modules: "qtwebengine qtwebchannel qtpositioning"
setup-python: false
env:
AQT_CONFIG: ${{ github.workspace }}/.github/configs/aqt.ini
- name: Setup MSVC compiler
uses: bus1/cabuild/action/msdevshell@v1
with:
architecture: x64
- name: secret
shell: bash
run: |
echo "${{secrets.KIWIXBUILD_FILE_UPLOAD_KEY}}" > $KIWIX_FILE_UPLOAD_SSH_KEY_PATH
env:
KIWIX_FILE_UPLOAD_SSH_KEY_PATH: ${{ runner.temp }}/kiwix_file_upload_key
- name: Ensure base deps
run: |
python .github\\scripts\\ensure_base_deps.py
env:
KIWIX_FILE_UPLOAD_SSH_KEY_PATH: ${{ runner.temp }}/kiwix_file_upload_key
- name: Compile all deps
run: |
python .github\\scripts\\compile_all_deps.py
env:
KIWIX_FILE_UPLOAD_SSH_KEY_PATH: ${{ runner.temp }}/kiwix_file_upload_key
- name: Build projects
run: |
python .github\\scripts\\build_projects.py
env:
KIWIX_FILE_UPLOAD_SSH_KEY_PATH: ${{ runner.temp }}/kiwix_file_upload_key
- name: Upload failure logs
if: failure()
run: |
python .github\\scripts\\upload_failure_logs.py
env:
KIWIX_FILE_UPLOAD_SSH_KEY_PATH: ${{ runner.temp }}/kiwix_file_upload_key
Linux:
strategy:
fail-fast: false
matrix:
config:
- native_static
- native_dyn
- native_mixed
- wasm
- armv6_static
- armv6_dyn
- armv6_mixed
- armv8_static
- armv8_dyn
- armv8_mixed
- aarch64_static
- aarch64_dyn
- aarch64_mixed
- aarch64_musl_static
- aarch64_musl_dyn
- aarch64_musl_mixed
- i586_static
- i586_dyn
- android_arm
- android_arm64
- android_x86
- android_x86_64
- x86-64_musl_static
- x86-64_musl_mixed
image_variant: ['jammy']
include:
- config: native_dyn
image_variant: resolute
- config: native_mixed
image_variant: x86-64_manylinux
env:
HOME: /home/runner
KIWIX_FILE_UPLOAD_SSH_KEY_PATH: /tmp/kiwix_file_upload_key
OS_NAME: ${{matrix.image_variant}}
runs-on: ubuntu-22.04
container:
image: "ghcr.io/kiwix/kiwix-build_ci_${{matrix.image_variant}}:2026-04-25"
options: "--device /dev/fuse --privileged"
steps:
- name: Checkout code
shell: bash
run: |
cd $HOME
git clone https://github.com/${REP}
cd ./${REP##*/}
git checkout --force ${GITHUB_SHA}
pip3_extra_options=()
if pip3 install --help|grep -qF -- --break-system-packages
then
pip3_extra_options+=(--break-system-packages)
fi
pip3 install --user --no-deps "${pip3_extra_options[@]}" .
env:
REP: ${{github.repository}}
- name: Install paramiko
shell: bash
run: |
pip3_extra_options=()
if pip3 install --help|grep -qF -- --break-system-packages
then
pip3_extra_options+=(--break-system-packages)
fi
pip3 install --user "${pip3_extra_options[@]}" paramiko
- name: secret
shell: bash
run: |
echo "${{secrets.KIWIXBUILD_FILE_UPLOAD_KEY}}" > $KIWIX_FILE_UPLOAD_SSH_KEY_PATH
chmod 600 $KIWIX_FILE_UPLOAD_SSH_KEY_PATH
- name: Ensure base deps
shell: bash
run: |
cd $HOME
kiwix-build/.github/scripts/ensure_base_deps.py
env:
COMPILE_CONFIG: ${{matrix.config}}
- name: Compile all deps
shell: bash
run: |
cd $HOME
kiwix-build/.github/scripts/compile_all_deps.py
env:
COMPILE_CONFIG: ${{matrix.config}}
- name: Build projects
shell: bash
run: |
cd $HOME
kiwix-build/.github/scripts/build_projects.py
env:
COMPILE_CONFIG: ${{matrix.config}}
- name: Upload failure logs
if: failure()
run: $HOME/kiwix-build/.github/scripts/upload_failure_logs.py
env:
COMPILE_CONFIG: ${{matrix.config}}
LinuxArm64:
strategy:
fail-fast: false
matrix:
config:
- native_mixed
image_variant:
- aarch64_manylinux
env:
HOME: /home/runner
KIWIX_FILE_UPLOAD_SSH_KEY_PATH: /tmp/kiwix_file_upload_key
OS_NAME: ${{matrix.image_variant}}
runs-on: ubuntu-22.04-arm
container:
image: "ghcr.io/kiwix/kiwix-build_ci_${{matrix.image_variant}}:2026-04-25"
options: "--device /dev/fuse --privileged"
steps:
- name: Checkout code
shell: bash
run: |
cd $HOME
git clone https://github.com/${REP}
cd ./${REP##*/}
git checkout --force ${GITHUB_SHA}
pip3 install --user --no-deps .
env:
REP: ${{github.repository}}
- name: Install paramiko
shell: bash
run: pip3 install --user paramiko
- name: secret
shell: bash
run: |
echo "${{secrets.KIWIXBUILD_FILE_UPLOAD_KEY}}" > $KIWIX_FILE_UPLOAD_SSH_KEY_PATH
chmod 600 $KIWIX_FILE_UPLOAD_SSH_KEY_PATH
- name: Ensure base deps
shell: bash
run: |
cd $HOME
kiwix-build/.github/scripts/ensure_base_deps.py
env:
COMPILE_CONFIG: ${{matrix.config}}
- name: Compile all deps
shell: bash
run: |
cd $HOME
kiwix-build/.github/scripts/compile_all_deps.py
env:
COMPILE_CONFIG: ${{matrix.config}}
- name: Build projects
shell: bash
run: |
cd $HOME
kiwix-build/.github/scripts/build_projects.py
env:
COMPILE_CONFIG: ${{matrix.config}}
- name: Upload failure logs
if: failure()
run: $HOME/kiwix-build/.github/scripts/upload_failure_logs.py
env:
COMPILE_CONFIG: ${{matrix.config}}
Flatpak:
strategy:
fail-fast: false
env:
HOME: /home/runner
KIWIX_FILE_UPLOAD_SSH_KEY_PATH: /tmp/kiwix_file_upload_key
COMPILE_CONFIG: flatpak
OS_NAME: jammy
runs-on: ubuntu-24.04
steps:
- name: Checkout code
shell: bash
run: |
cd $HOME
git clone https://github.com/${REP}
cd ./${REP##*/}
git checkout --force ${GITHUB_SHA}
pip3 install --user paramiko
pip3 install --user --no-deps .
env:
REP: ${{github.repository}}
- name: Install flatpak tools
run: |
sudo apt-get update
sudo apt-get install flatpak-builder ninja-build meson
- name: secret
shell: bash
run: |
echo "${{secrets.KIWIXBUILD_FILE_UPLOAD_KEY}}" > $KIWIX_FILE_UPLOAD_SSH_KEY_PATH
chmod 600 $KIWIX_FILE_UPLOAD_SSH_KEY_PATH
- name: Ensure base deps
shell: bash
run: |
cd $HOME
kiwix-build/.github/scripts/ensure_base_deps.py
- name: Build projects
shell: bash
run: |
cd $HOME
kiwix-build/.github/scripts/build_projects.py
- name: Upload failure logs
if: failure()
run: $HOME/kiwix-build/.github/scripts/upload_failure_logs.py
macOS:
strategy:
fail-fast: false
matrix:
config:
- macos_x86-64_static
- macos_x86-64_mixed
- ios_arm64
- ios_simulator_x86_64
- ios_simulator_arm64
- macos_arm64_static
- macos_arm64_mixed
- apple_all_static
runs-on: macos-26
env:
KIWIX_FILE_UPLOAD_SSH_KEY_PATH: /tmp/kiwix_file_upload_key
OS_NAME: macos
steps:
- name: Set Xcode version (16.1)
# https://github.com/actions/runner-images/blob/main/images/macos/macos-26-Readme.md#xcode
run: sudo xcode-select -s /Applications/Xcode_26.5.app
- name: Checkout code
uses: actions/checkout@v6
- name: Setup Python 3.13
uses: actions/setup-python@v6
with:
python-version: '3.13'
- name: Install packages
run:
brew install automake # ninja
- name: Install Python modules
run: |
pip3 install meson pytest requests distro paramiko
pip3 install --no-deps $GITHUB_WORKSPACE
- name: secret
shell: bash
run: |
echo "${{secrets.KIWIXBUILD_FILE_UPLOAD_KEY}}" > $KIWIX_FILE_UPLOAD_SSH_KEY_PATH
chmod 600 $KIWIX_FILE_UPLOAD_SSH_KEY_PATH
- name: Ensure base deps
shell: bash
run: |
cd $HOME
$GITHUB_WORKSPACE/.github/scripts/ensure_base_deps.py
env:
COMPILE_CONFIG: ${{matrix.config}}
- name: Compile all deps
shell: bash
run: |
cd $HOME
$GITHUB_WORKSPACE/.github/scripts/compile_all_deps.py
env:
COMPILE_CONFIG: ${{matrix.config}}
- name: Build projects
shell: bash
run: |
cd $HOME
$GITHUB_WORKSPACE/.github/scripts/build_projects.py
env:
COMPILE_CONFIG: ${{matrix.config}}
- name: Upload failure logs
if: failure()
run: $GITHUB_WORKSPACE/.github/scripts/upload_failure_logs.py
env:
COMPILE_CONFIG: ${{matrix.config}}