diff --git a/.github/workflows/builds.yaml b/.github/workflows/builds.yaml new file mode 100644 index 00000000..84f30bb0 --- /dev/null +++ b/.github/workflows/builds.yaml @@ -0,0 +1,44 @@ +name: Build binaries + +on: push + +permissions: + actions: read + +jobs: + build: + strategy: + matrix: + base: + - docker.io/library/ubuntu:22.04 + - docker.io/library/ubuntu:24.04 + - quay.io/fedora/fedora:41 + - quay.io/centos/centos:stream9 + runs-on: ubuntu-24.04 + container: ${{ matrix.base }} + steps: + - name: Checkout repository + uses: actions/checkout@v4 + - name: Install dependencies + run: ./hacking/installdeps.sh + - name: Configure + run: meson setup build --prefix=/usr -Dfuse=disabled + - name: Build + run: meson compile -C build + - name: Capture build + run: DESTDIR=$(pwd)/instroot meson install -C build && \ + tar -C instroot --sort=name --owner=0 --group=0 --numeric-owner \ + --mtime=$(git log -1 --pretty=%ct) \ + --pax-option=exthdr.name=%d/PaxHeaders/%f,delete=atime,delete=ctime \ + -czf composefs.tar.gz . + - name: Upload binary + uses: actions/upload-artifact@v4 + with: + name: composefs-${{ matrix.base }}.tar + path: composefs.tar.gz + - name: Upload log + uses: actions/upload-artifact@v4 + if: always() + with: + name: testlog-asan.txt + path: build/meson-logs/testlog.txt diff --git a/hacking/installdeps.sh b/hacking/installdeps.sh index df7b792e..bdd8d093 100755 --- a/hacking/installdeps.sh +++ b/hacking/installdeps.sh @@ -1,5 +1,19 @@ #!/bin/bash set -xeuo pipefail + +# Handle Fedora derivatives or others that have composefs +# shipped already. + +if test -x /usr/bin/dnf; then + . /etc/os-release + case $ID_LIKE in + centos|rhel) dnf config-manager --set-enabled crb ;; + esac + dnf -y install dnf-utils; + dnf -y builddep composefs + exit 0 +fi + export DEBIAN_FRONTEND=noninteractive PACKAGES=" \ @@ -33,9 +47,11 @@ done # Install packages: if [ -n "${PACKAGES_REQUIRED}" ]; then + apt -y update apt-get install -y $PACKAGES_REQUIRED fi if [ -n "${PACKAGES_OPTIONAL}" ]; then + apt -y update apt-get install -y --ignore-missing $PACKAGES_OPTIONAL || true fi