name: Ubuntu on: [push, pull_request, workflow_dispatch] jobs: build: runs-on: ${{ matrix.os }} strategy: matrix: os: - ubuntu-24.04 - ubuntu-22.04 mode: - default - full-system-policy steps: - name: Check out repository code uses: actions/checkout@v4 - name: Install Build dependencies run: | sudo apt-get update -q sudo apt-get install -y \ devscripts debhelper config-package-dev \ auditd apparmor-profiles apparmor-utils sudo rm /etc/apparmor.d/usr.lib.snapd.snap-confine.real - name: Build the apparmor.d package run: | if [[ ${{ matrix.mode }} == full-system-policy ]]; then echo -e "\noverride_dh_auto_build:\n\tmake full" >> debian/rules fi bash dists/build.sh dpkg - name: Install apparmor.d run: sudo dpkg --install .pkg/apparmor.d_*_amd64.deb || true - name: Reload AppArmor run: | sudo systemctl restart apparmor.service || true sudo systemctl status apparmor.service - name: Ensure compatibility with some AppArmor userspace tools if: matrix.os != 'ubuntu-24.04' run: | sudo aa-enforce /etc/apparmor.d/aa-notify - name: Show AppArmor log and rules run: | sudo aa-log sudo aa-log -s sudo aa-log -r - name: Show Number of loaded profile run: sudo aa-status --profiled - name: Cache the build package if: matrix.mode == 'default' && matrix.os == 'ubuntu-24.04' uses: actions/cache/save@v4 with: path: .pkg/apparmor.d_*_amd64.deb key: ${{ matrix.os }}-${{ matrix.mode }}-${{ hashFiles('.pkg/apparmor.d_*_amd64.deb') }} tests: runs-on: ubuntu-24.04 needs: build steps: - name: Check out repository code uses: actions/checkout@v4 - name: Restore the cached build package uses: actions/cache/restore@v4 with: fail-on-cache-miss: true path: .pkg/apparmor.d_*_amd64.deb key: ubuntu-24.04-default-${{ hashFiles('.pkg/apparmor.d_*_amd64.deb') }} restore-keys: | ubuntu-24.04-default- - name: Install Tests dependencies run: | sudo apt-get update -q sudo apt-get install -y \ apparmor-profiles apparmor-utils \ bats bats-support - name: Install apparmor.d run: | sudo dpkg --install .pkg/apparmor.d_*_amd64.deb || true sudo systemctl restart apparmor.service - name: Run the bats integration tests run: | make bats - name: Show final AppArmor logs if: always() run: | sudo aa-log -s --raw