From 0ee0a0e447310dd76f096d8dbe67c446bc293a60 Mon Sep 17 00:00:00 2001 From: Eric Biggers Date: Sat, 18 Mar 2023 00:17:54 -0700 Subject: [PATCH] Add a configuration file for GitHub Actions --- .github/workflows/ci.yml | 151 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 151 insertions(+) create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..02fa6ea5 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,151 @@ +name: CI +on: [pull_request, push] +env: + DEF_CFLAGS: -O2 -g -Wall -Werror + DEPENDENCIES: autoconf automake libtool pkg-config libxml2-dev libfuse-dev ntfs-3g-dev + +jobs: + gcc-build-and-test: + name: Build and test with gcc + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get install -y $DEPENDENCIES + - run: ./bootstrap + - run: ./configure CC=gcc CFLAGS="$DEF_CFLAGS" + - run: make -j8 check V=1 + - run: make -j8 install V=1 DESTDIR=$PWD/installdir + - run: make -j8 uninstall V=1 DESTDIR=$PWD/installdir + - uses: actions/upload-artifact@v3 + if: failure() + with: + name: gcc-test-logs + path: tests/*.log + + clang-build-and-test: + name: Build and test with clang + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get install -y clang $DEPENDENCIES + - run: ./bootstrap + - run: ./configure CC=clang CFLAGS="$DEF_CFLAGS" + - run: make -j8 check V=1 + - run: make -j8 install V=1 DESTDIR=$PWD/installdir + - run: make -j8 uninstall V=1 DESTDIR=$PWD/installdir + - uses: actions/upload-artifact@v3 + if: failure() + with: + name: clang-test-logs + path: tests/*.log + + i386-build-and-test: + name: Build and test with gcc -m32 + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Install dependencies + run: | + sudo dpkg --add-architecture i386 + sudo apt-get update + sudo apt-get install -y gcc-multilib $DEPENDENCIES libxml2-dev:i386 + - run: ./bootstrap + - run: ./configure CC=gcc CFLAGS="-m32 $DEF_CFLAGS" --without-fuse --without-ntfs-3g + - run: make -j8 check V=1 + - run: make -j8 install V=1 DESTDIR=$PWD/installdir + - run: make -j8 uninstall V=1 DESTDIR=$PWD/installdir + - uses: actions/upload-artifact@v3 + if: failure() + with: + name: i386-test-logs + path: tests/*.log + + asan-build-and-test: + name: Build and test with ASAN enabled + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get install -y clang $DEPENDENCIES + - run: ./bootstrap + - run: ./configure CC=clang CFLAGS="$DEF_CFLAGS -fsanitize=address" + - run: make -j8 check V=1 + - uses: actions/upload-artifact@v3 + if: failure() + with: + name: asan-test-logs + path: tests/*.log + + ubsan-build-and-test: + name: Build and test with UBSAN enabled + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get install -y clang $DEPENDENCIES + - run: ./bootstrap + - run: ./configure CC=clang CFLAGS="$DEF_CFLAGS -fsanitize=undefined" + - run: make -j8 check V=1 + - uses: actions/upload-artifact@v3 + if: failure() + with: + name: ubsan-test-logs + path: tests/*.log + + macos-build-and-test: + name: Build and test on macOS + runs-on: macos-latest + steps: + - uses: actions/checkout@v3 + - name: Install dependencies + run: | + brew install autoconf automake libtool pkg-config libxml2 + - run: ./bootstrap + - run: ./configure CFLAGS="$DEF_CFLAGS" --without-fuse --without-ntfs-3g + - run: make -j8 check V=1 + - run: make -j8 install DESTDIR=$PWD/installdir + - run: make -j8 uninstall DESTDIR=$PWD/installdir + - uses: actions/upload-artifact@v3 + if: failure() + with: + name: macos-test-logs + path: tests/*.log + + windows-build: + name: Build on Windows + runs-on: windows-latest + strategy: + matrix: + include: + - { sys: mingw32, env: i686 } + - { sys: mingw64, env: x86_64 } + defaults: + run: + shell: msys2 {0} + steps: + - uses: actions/checkout@v3 + - uses: msys2/setup-msys2@v2 + with: + msystem: ${{matrix.sys}} + update: true + install: > + autoconf + automake + libtool + pkg-config + make + mingw-w64-${{matrix.env}}-cc + mingw-w64-${{matrix.env}}-libxml2 + - run: ./bootstrap + - run: ./configure CFLAGS="$DEF_CFLAGS" --without-fuse --without-ntfs-3g + - run: make -j8 -- 2.43.0