name: Flatpak CI on: push: branches: - master - flatpak-1.0.x - flatpak-1.2.x - flatpak-1.4.x - flatpak-1.6.x - flatpak-1.8.x pull_request: paths-ignore: - README.md - NEWS - INSTALL - COPYING - CODE_OF_CONDUCT.md - .lgtm.yml - uncrustify.cfg - uncrustify.sh branches: - master - flatpak-1.0.x - flatpak-1.2.x - flatpak-1.4.x - flatpak-1.6.x - flatpak-1.8.x jobs: check: name: Build with gcc and test runs-on: ubuntu-18.04 steps: - name: Install Dependencies run: | sudo add-apt-repository ppa:alexlarsson/flatpak sudo add-apt-repository ppa:alexlarsson/glib260 sudo apt-get update sudo apt-get install -y libglib2.0 attr automake gettext autopoint bison dbus gtk-doc-tools \ libfuse-dev ostree libostree-dev libarchive-dev libzstd-dev libcap-dev libattr1-dev libdw-dev libelf-dev python3-pyparsing \ libjson-glib-dev shared-mime-info desktop-file-utils libpolkit-agent-1-dev libpolkit-gobject-1-dev \ libseccomp-dev libsoup2.4-dev libsystemd-dev libxml2-utils libgpgme11-dev gobject-introspection \ libgirepository1.0-dev libappstream-glib-dev libdconf-dev clang socat meson libdbus-1-dev e2fslibs-dev - name: Check out flatpak uses: actions/checkout@v1 with: submodules: true - name: Build malcontent dependency run: | git clone https://gitlab.freedesktop.org/pwithnall/malcontent.git ./malcontent pushd ./malcontent git checkout tags/0.4.0 meson setup --prefix=/usr _build ninja -C _build sudo ninja -C _build install popd - name: Build ostree dependency run: | git clone https://github.com/ostreedev/ostree.git ./ostree pushd ./ostree git checkout 7bc53f006351fcf5d32d9427e61a4f842f57f67b ./autogen.sh --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --sysconfdir=/etc --localstatedir=/var make -j $(getconf _NPROCESSORS_ONLN) sudo make install popd - name: Create logs dir run: mkdir test-logs - name: autogen.sh run: NOCONFIGURE=1 ./autogen.sh --enable-internal-checks - name: configure # TODO: Enable gtk-doc builds run: | mkdir _build pushd _build ../configure popd env: CFLAGS: -fsanitize=undefined -fsanitize-undefined-trap-on-error -fsanitize=address -O2 -Wp,-D_FORTIFY_SOURCE=2 - name: Build flatpak run: make -C _build -j $(getconf _NPROCESSORS_ONLN) - name: Run tests # TODO: Build with -j (currently ends up with hangs in the tests) run: make -C _build check env: ASAN_OPTIONS: detect_leaks=0 # Right now we're not fully clean, but this gets us use-after-free etc - name: Collect overall test logs on failure if: failure() run: mv _build/test-suite.log test-logs/ || true - name: Collect individual test logs on cancel if: failure() || cancelled() run: mv _build/tests/*.log test-logs/ || true - name: Upload test logs uses: actions/upload-artifact@v1 if: failure() || cancelled() with: name: test logs path: test-logs clang: name: Build with clang runs-on: ubuntu-18.04 steps: - name: Install Dependencies run: | sudo add-apt-repository ppa:alexlarsson/flatpak sudo add-apt-repository ppa:alexlarsson/glib260 sudo apt-get update sudo apt-get install -y libglib2.0 attr automake gettext autopoint bison dbus gtk-doc-tools \ libfuse-dev ostree libostree-dev libarchive-dev libzstd-dev libcap-dev libattr1-dev libdw-dev libelf-dev python3-pyparsing \ libjson-glib-dev shared-mime-info desktop-file-utils libpolkit-agent-1-dev libpolkit-gobject-1-dev \ libseccomp-dev libsoup2.4-dev libsystemd-dev libxml2-utils libgpgme11-dev gobject-introspection \ libgirepository1.0-dev libappstream-glib-dev libdconf-dev clang e2fslibs-dev - name: Build ostree dependency run: | git clone https://github.com/ostreedev/ostree.git ./ostree pushd ./ostree git checkout 7bc53f006351fcf5d32d9427e61a4f842f57f67b ./autogen.sh --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --sysconfdir=/etc --localstatedir=/var make -j $(getconf _NPROCESSORS_ONLN) sudo make install popd - name: Check out flatpak uses: actions/checkout@v1 with: submodules: true - name: configure run: ./autogen.sh --enable-gtk-doc --enable-gtk-doc-html env: CC: clang CFLAGS: -Werror=unused-variable - name: Build flatpak run: make -j $(getconf _NPROCESSORS_ONLN) xenial: name: Build with old glib runs-on: ubuntu-16.04 steps: - name: Install Dependencies run: | sudo add-apt-repository ppa:alexlarsson/flatpak sudo apt-get update sudo apt-get install -y libglib2.0 attr automake gettext autopoint bison dbus gtk-doc-tools \ libfuse-dev ostree libostree-dev libarchive-dev libzstd-dev libcap-dev libattr1-dev libdw-dev libelf-dev python3-pyparsing \ libjson-glib-dev shared-mime-info desktop-file-utils libpolkit-agent-1-dev libpolkit-gobject-1-dev \ libseccomp-dev libsoup2.4-dev libsystemd-dev libxml2-utils libgpgme11-dev gobject-introspection \ libgirepository1.0-dev libappstream-glib-dev libdconf-dev clang e2fslibs-dev - name: Check out flatpak uses: actions/checkout@v1 with: submodules: true - name: Build ostree dependency run: | git clone https://github.com/ostreedev/ostree.git ./ostree pushd ./ostree git checkout 7bc53f006351fcf5d32d9427e61a4f842f57f67b ./autogen.sh --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --sysconfdir=/etc --localstatedir=/var make -j $(getconf _NPROCESSORS_ONLN) sudo make install popd - name: configure run: ./autogen.sh env: CC: clang CFLAGS: -Werror=unused-variable - name: Build flatpak run: make -j $(getconf _NPROCESSORS_ONLN) valgrind: name: Run tests in valgrind needs: check # Don't run expensive test if main check fails runs-on: ubuntu-20.04 # Might as well test with a different one too steps: - name: Install Dependencies run: | sudo apt-get update sudo apt-get install -y libglib2.0 attr automake gettext autopoint bison dbus gtk-doc-tools \ libfuse-dev ostree libostree-dev libarchive-dev libzstd-dev libcap-dev libattr1-dev libdw-dev libelf-dev python3-pyparsing \ libjson-glib-dev shared-mime-info desktop-file-utils libpolkit-agent-1-dev libpolkit-gobject-1-dev \ libseccomp-dev libsoup2.4-dev libsystemd-dev libxml2-utils libgpgme11-dev gobject-introspection \ libgirepository1.0-dev libappstream-glib-dev libdconf-dev clang socat meson libdbus-1-dev \ valgrind e2fslibs-dev - name: Check out flatpak uses: actions/checkout@v1 with: submodules: true - name: Build ostree dependency run: | git clone https://github.com/ostreedev/ostree.git ./ostree pushd ./ostree git checkout 7bc53f006351fcf5d32d9427e61a4f842f57f67b ./autogen.sh --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --sysconfdir=/etc --localstatedir=/var make -j $(getconf _NPROCESSORS_ONLN) sudo make install popd - name: Create logs dir run: mkdir test-logs - name: autogen.sh run: NOCONFIGURE=1 ./autogen.sh - name: configure # TODO: Enable gtk-doc builds run: | mkdir _build pushd _build ../configure popd env: CFLAGS: -O2 - name: Build flatpak run: make -C _build -j $(getconf _NPROCESSORS_ONLN) - name: Run tests run: make -C _build check env: FLATPAK_TESTS_VALGRIND: true - name: Collect overall test logs on failure if: failure() run: mv _build/test-suite.log test-logs/ || true - name: Collect individual test logs on cancel if: failure() || cancelled() run: mv _build/tests/*.log test-logs/ || true - name: Upload test logs uses: actions/upload-artifact@v1 if: failure() || cancelled() with: name: test logs path: test-logs