## 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' || github.event_name == 'workflow_dispatch' || 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' || github.event_name == 'workflow_dispatch' || 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: 'aarch64' 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' || github.event_name == 'workflow_dispatch' || contains(github.event.pull_request.labels.*.name, 'meson') }} runs-on: ubuntu-latest container: image: alpine:latest strategy: fail-fast: false # Upload src/igr-tests/*/output/* files in igr-tests matrix: include: - arch: 'amd64' steps: - uses: actions/checkout@v4 - name: Getting depends run: | apk update apk add meson g++ m4 - 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/*