| name: CI |
| |
| on: |
| push: |
| pull_request: |
| workflow_dispatch: |
| |
| jobs: |
| build-containers: |
| runs-on: ubuntu-latest |
| |
| strategy: |
| fail-fast: false |
| matrix: |
| container: |
| - {os: 'debian', dh: 'debian', ver: 'trixie', target_arch: 'x86_64'} |
| - {os: 'fedora', dh: 'fedora', ver: '44', target_arch: 'x86_64'} |
| - {os: 'alma', dh: 'almalinux', ver: '10', target_arch: 'x86_64'} |
| - {os: 'oracle', dh: 'oraclelinux', ver: '10', target_arch: 'x86_64'} |
| - {os: 'rocky', dh: 'rockylinux/rockylinux', ver: '10', target_arch: 'x86_64'} |
| - {os: 'alpine', dh: 'alpine', ver: 'latest', target_arch: 'x86_64'} |
| |
| container: |
| image: ${{ matrix.container.dh }}:${{ matrix.container.ver }} |
| env: |
| CI_TARGET_BUILD: Linux |
| CI_TARGET_ARCH: ${{ matrix.container.target_arch }} |
| CI_TARGET_OS: ${{ matrix.container.os }} |
| CI_TARGET_OS_VER: ${{ matrix.container.ver }} |
| |
| steps: |
| - name: Checkout repo |
| uses: actions/checkout@v6 |
| - name: Install bash on Alpine |
| if: ${{ contains( matrix.container.os, 'alpine' ) }} |
| run: apk add bash |
| - name: Install dependencies |
| run: ./ci/actions-install.sh |
| - name: Build |
| run: ./ci/actions-build.sh |
| - name: Smoke test |
| run: ./ci/actions-smoke-test.sh |
| - name: Full test |
| run: ./ci/actions-full-test.sh |
| |
| build: |
| runs-on: ${{ matrix.os }} |
| strategy: |
| fail-fast: false |
| matrix: |
| build: |
| - linux-gcc |
| - linux-clang |
| - macos |
| - linux-i686-gcc |
| - android |
| - windows-cygwin-64 |
| - windows-cygwin-32 |
| - windows-msys2-64 |
| include: |
| - build: linux-gcc |
| os: ubuntu-26.04 |
| cc: gcc |
| - build: linux-clang |
| os: ubuntu-26.04 |
| cc: clang |
| - build: macos |
| os: macos-26 |
| - build: linux-i686-gcc |
| os: ubuntu-26.04 |
| arch: i686 |
| - build: android |
| os: ubuntu-26.04 |
| arch: aarch64-linux-android32 |
| - build: android-recovery |
| os: ubuntu-26.04 |
| arch: aarch64-linux-android32 |
| - build: windows-cygwin-64 |
| os: windows-latest |
| arch: x86_64 |
| installer_arch: x64 |
| shell: bash |
| - build: windows-cygwin-32 |
| os: windows-latest |
| arch: i686 |
| installer_arch: x86 |
| shell: bash |
| - build: windows-msys2-64 |
| os: windows-latest |
| cc: clang |
| arch: x86_64 |
| installer_arch: x64 |
| shell: msys2 |
| |
| env: |
| CI_TARGET_BUILD: ${{ matrix.build }} |
| CI_TARGET_ARCH: ${{ matrix.arch }} |
| CC: ${{ matrix.cc }} |
| |
| steps: |
| - name: git config line endings (Windows) |
| if: ${{ contains( matrix.build, 'windows' ) }} |
| run: git config --global core.autocrlf input |
| - name: Checkout repo |
| uses: actions/checkout@v6 |
| - name: Install Cygwin toolchain (Windows) |
| if: ${{ startsWith(matrix.build, 'windows-cygwin') }} |
| uses: cygwin/cygwin-install-action@master |
| with: |
| packages: > |
| mingw64-${{matrix.arch}}-binutils |
| mingw64-${{matrix.arch}}-CUnit |
| mingw64-${{matrix.arch}}-curl |
| mingw64-${{matrix.arch}}-dlfcn |
| mingw64-${{matrix.arch}}-gcc-core |
| mingw64-${{matrix.arch}}-headers |
| mingw64-${{matrix.arch}}-runtime |
| mingw64-${{matrix.arch}}-zlib |
| |
| - name: Install msys2 toolchain (Windows) |
| if: ${{ startsWith(matrix.build, 'windows-msys2') }} |
| uses: msys2/setup-msys2@v2 |
| with: |
| install: > |
| git |
| base-devel |
| mingw-w64-${{matrix.arch}}-clang |
| mingw-w64-${{matrix.arch}}-cunit |
| mingw-w64-${{matrix.arch}}-toolchain |
| mingw-w64-${{matrix.arch}}-lld |
| mingw-w64-${{matrix.arch}}-python-scipy |
| mingw-w64-${{matrix.arch}}-python-six |
| mingw-w64-${{matrix.arch}}-python-statsmodels |
| mingw-w64-${{matrix.arch}}-python-sphinx |
| |
| - name: install bash 4 (macOS) |
| if: ${{ contains( matrix.build, 'macOS' ) }} |
| run: HOMEBREW_NO_AUTO_UPDATE=1 brew install bash |
| - name: Install dependencies |
| run: ${{matrix.shell}} ./ci/actions-install.sh |
| if: ${{ !contains( matrix.build, 'msys2' ) }} |
| - name: Build |
| run: ${{matrix.shell}} ./ci/actions-build.sh |
| - name: Build installer (Windows) |
| if: ${{ contains( matrix.build, 'windows' ) }} |
| shell: cmd |
| run: | |
| cd os\windows |
| dobuild.cmd ${{ matrix.installer_arch }} |
| cd ..\.. |
| |
| - name: Upload installer as artifact (Windows) |
| if: ${{ contains( matrix.build, 'windows' ) }} |
| uses: actions/upload-artifact@v6 |
| with: |
| name: ${{ matrix.build }}-installer |
| path: os\windows\*.msi |
| - name: Upload installer as release for tagged builds (Windows) |
| uses: softprops/action-gh-release@v1 |
| if: ${{ startsWith(github.ref, 'refs/tags/') && startsWith(matrix.build, 'windows-cygwin') }} |
| with: |
| files: os/windows/*.msi |
| - name: Remove dependency files to resolve Makefile Cygwin sed issue (Windows) |
| if: ${{ startsWith(matrix.build, 'windows-cygwin') }} |
| run: rm *.d */*.d */*/*.d |
| shell: bash |
| - name: Smoke test |
| run: ${{matrix.shell}} ./ci/actions-smoke-test.sh |
| - name: Full test |
| run: ${{matrix.shell}} ./ci/actions-full-test.sh |