name: Dinit Regular CI on: push: branches: - master paths: - '.github/workflows/regular_ci.yml' - 'build/**' - 'configs/**' - 'dasynq/**' - 'src/**' - '**/Makefile' - '!build/mconfig.mesontemplate' - '!build/includes/README' - '!**/meson.build' pull_request: branches: - master paths: - '.github/workflows/regular_ci.yml' - 'build/**' - 'configs/**' - 'dasynq/**' - 'src/**' - '**/Makefile' - '!build/mconfig.mesontemplate' - '!build/includes/README' - '!**/meson.build' workflow_dispatch: jobs: Debian-bullseye_build: runs-on: ubuntu-latest container: image: debian:bullseye 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++ make m4 file -y - name: Getting depends (i386) if: ${{ matrix.arch == 'i386' }} run: | apt-get update DEBIAN_FRONTEND=noninteractive apt-get install gcc:i386 make:i386 m4:i386 g++:i386 file -y - name: Print g++ architecture run: g++ -dumpmachine - name: Build run: make - name: Print dinit executive file architecture run: file ./src/dinit - name: Unit tests run: make check - name: Integration tests run: make check-igr DEBUG=1 - name: Upload igr-tests output file(s) on failure uses: actions/upload-artifact@v3.1.3 if: failure() with: name: igr-tests_output path: src/igr-tests/*/output/* MacOS-latest_build: 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 # on MacOS, g++ symlinked to clang++ # We must verify that - name: Verify g++ (it is g++ or clang++?) run: g++ --version - name: Print g++ architecture run: g++ -dumpmachine - name: Build run: make - name: Print dinit executive file architecture run: file ./src/dinit - name: Unit tests run: make check - name: Integration tests run: make check-igr DEBUG=1 - name: Upload igr-tests output file(s) on failure uses: actions/upload-artifact@v3.1.3 if: failure() with: name: igr-tests_output path: src/igr-tests/*/output/* Alpine-latest_build: 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.5.1 name: Getting depends & build & unit tests & 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 make g++ m4 file" apk update apk add make g++ m4 file echo "$(tput bold) ----Print g++ arch---- :$(tput sgr0) g++ -dumpmachine" g++ -dumpmachine echo "$(tput bold) ----Build---- :$(tput sgr0) make" make echo "$(tput bold) ----Print dinit executive file architecture---- :$(tput sgr0) file ./src/dinit" file ./src/dinit echo "$(tput bold) ----Unit tests---- :$(tput sgr0) make check" make check echo "$(tput bold) ----Integration tests---- :$(tput sgr0) make check-igr DEBUG=1" make check-igr DEBUG=1 - name: Upload igr-tests output file(s) on failure uses: actions/upload-artifact@v3.1.3 if: failure() with: name: igr-tests_output path: src/igr-tests/*/output/*