## This Workflow will run when a PR has "meson" label or when something pushed to master. name: Dinit Meson based CI on: push: branches: - master paths: - '.github/workflows/meson_ci.yml' - 'build/version.conf' - 'build/mconfig.mesontemplate' - 'configs/**' - 'dasynq/**' - 'src/**' - '**/meson.build' - 'meson_options.txt' - '!**/Makefile' pull_request: types: - labeled - opened - reopened - synchronize branches: - master paths: - '.github/workflows/meson_ci.yml' - 'build/version.conf' - 'build/mconfig.mesontemplate' - 'configs/**' - 'dasynq/**' - 'src/**' - '**/meson.build' - 'meson_options.txt' - '!**/Makefile' workflow_dispatch: jobs: Debian-bookworm_build: if: ${{ github.event_name == 'push' || contains(github.event.pull_request.labels.*.name, 'meson') }} runs-on: ubuntu-latest container: image: debian:bookworm strategy: fail-fast: false # Upload src/igr-tests/*/output/* files in igr-tests matrix: include: - arch: 'amd64' - arch: 'i386' steps: - uses: actions/checkout@v4 - name: Add i386 repos if: ${{ matrix.arch == 'i386' }} run: dpkg --add-architecture i386 - name: Getting depends (amd64) if: ${{ matrix.arch == 'amd64' }} run: | apt-get update DEBIAN_FRONTEND=noninteractive apt-get install g++ meson m4 -y - name: Getting depends (i386) if: ${{ matrix.arch == 'i386' }} run: | apt-get update DEBIAN_FRONTEND=noninteractive apt-get install meson m4:i386 g++:i386 -y - name: Setup run: meson setup -Dunit-tests=true -Digr-tests=true dirbuild - name: Build run: meson compile -C dirbuild - name: Unit tests run: meson test -v --suite=unit_tests -C dirbuild - name: Integration tests run: meson test -v --suite=igr_tests -C dirbuild - name: Upload igr-tests output file(s) on failure uses: actions/upload-artifact@v4.3.2 if: failure() with: name: igr-tests_output path: dirbuild/src/igr-tests/*/output/* MacOS-latest_build: if: ${{ github.event_name == 'push' || contains(github.event.pull_request.labels.*.name, 'meson') }} runs-on: macos-latest strategy: fail-fast: false # Upload src/igr-tests/*/output/* files in igr-tests matrix: include: - arch: 'amd64' steps: - uses: actions/checkout@v4 - name: Install meson run: brew install meson - name: Setup run: meson setup -Dunit-tests=true -Digr-tests=true dirbuild - name: Build run: meson compile -C dirbuild - name: Unit tests run: meson test -v --suite=unit_tests -C dirbuild - name: Integration tests run: meson test -v --suite=igr_tests -C dirbuild - name: Upload igr-tests output file(s) on failure uses: actions/upload-artifact@v4.3.2 if: failure() with: name: igr-tests_output path: dirbuild/src/igr-tests/*/output/* Alpine-latest_build: if: ${{ github.event_name == 'push' || contains(github.event.pull_request.labels.*.name, 'meson') }} runs-on: ubuntu-latest strategy: fail-fast: false # Upload src/igr-tests/*/output/* files in igr-tests matrix: include: - arch: 'armv6' - arch: 'armv7' - arch: 'aarch64' steps: - uses: actions/checkout@v4 - uses: uraimo/run-on-arch-action@v2.7.2 name: Getting depends & setup & build & unit & integration tests with: arch: ${{ matrix.arch }} distro: alpine_latest run: | apk add ncurses echo "$(tput bold) !---- ${{ matrix.arch }} BUILD ----!$(tput sgr0)" echo "$(tput bold) ----Getting depends---- :$(tput sgr0) apk update && apk add meson g++ m4" apk update apk add meson g++ m4 echo "$(tput bold) ----Setup---- :$(tput sgr0) meson setup -Dunit-tests=true -Digr-tests=true dirbuild" meson setup -Dunit-tests=true -Digr-tests=true dirbuild echo "$(tput bold) ----Build---- :$(tput sgr0) meson compile -C dirbuild" meson compile -C dirbuild echo "$(tput bold) ----Unit tests---- :$(tput sgr0) meson test -v --suite=unit_tests -C dirbuild" meson test -v --suite=unit_tests -C dirbuild echo "$(tput bold) ----Integration tests---- :$(tput sgr0) meson test -v --suite=igr_tests -C dirbuild" meson test -v --suite=igr_tests -C dirbuild - name: Upload igr-tests output file(s) on failure uses: actions/upload-artifact@v4.3.2 if: failure() with: name: igr-tests_output path: dirbuild/src/igr-tests/*/output/*