Skip to content

Commit

Permalink
CI/CD: Expand Linux CI
Browse files Browse the repository at this point in the history
  - Add CI/CD for Meson
  - Add CI/CD for Clang
  - Consolidate configs using matrixes
  • Loading branch information
Kangie committed Oct 15, 2024
1 parent 9587785 commit f204328
Showing 1 changed file with 139 additions and 169 deletions.
308 changes: 139 additions & 169 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,176 +3,146 @@ name: CI
on: [push, pull_request]

jobs:
ubuntu-latest-html-tests:
build-test-linux:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
with:
fetch-depth: 1
- name: Install dependencies
run: sudo apt install -y libfltk1.3-dev libssl-dev xvfb x11-apps x11-utils imagemagick
container:
image: ${{ matrix.os == 'alpine' && 'alpine:latest' || matrix.os == 'ubuntu-20.04' && 'ubuntu:20.04' || 'ubuntu:latest' }}
strategy:
matrix:
os: [ubuntu, ubuntu-20.04, alpine]
build-system: [autotools, meson]
compiler: [gcc, clang]
tls: [openssl, mbedtls, none]
html-tests: [true, false]
exclude:
- os: ubuntu
html-tests: false
- os: ubuntu-20.04
html-tests: true
- os: alpine
html-tests: true
- os: alpine
tls: none
- os: ubuntu-20.04
tls: none

- name: autogen
run: ./autogen.sh
- name: Make install dir
run: mkdir install build
- name: configure
run: cd build && ../configure --prefix=$(readlink -f ../install) --enable-html-tests
- name: make
run: cd build && make
- name: make install
run: cd build && make install
- name: Copy config to .dillo
run: |
mkdir -p ~/.dillo/
cp install/etc/dillo/* ~/.dillo/
- name: make check
run: |
export DILLOBIN=$(readlink -f install/bin/dillo)
cd build && make check || (cat test/html/test-suite.log; false)
export DILLOBIN=
- name: Check release fits in a floppy disk of 1.44 MB
run: |
cd build
make dist-gzip
size=$(stat -c %s dillo-*.tar.gz)
floppy=$((1474560 - 32*1024)) # Leave room for FAT table
echo "Floppy occupation: $(($size * 100 / $floppy)) %"
if [ $size -lt $floppy ]; then
echo 'OK: Fits in floopy disk'
else
echo "FAIL: Release size too big: $size / $floppy"
exit 1
fi
- name: make distcheck (with HTML tests)
run: |
export DILLOBIN=
mkdir build-distcheck install-distcheck
cd build-distcheck && ../configure --prefix=$(readlink -f ../install-distcheck) --enable-html-tests
make distcheck DISTCHECK_CONFIGURE_FLAGS=--enable-html-tests
# - name: Remove pipes
# run: find test/html -type p -delete || true
# - name: Archive production artifacts
# uses: actions/upload-artifact@v3
# with:
# name: upload-html-test-results
# path: |
# build/test/html
ubuntu-latest-no-tls:
needs: ubuntu-latest-html-tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
with:
fetch-depth: 1
- name: Install dependencies
run: sudo apt install -y libfltk1.3-dev
- name: autogen
run: ./autogen.sh
- name: configure
run: ./configure --disable-tls
- name: make
run: make
- name: make check
run: make check
- name: make distcheck
run: make distcheck
ubuntu-latest-mbedtls2:
needs: ubuntu-latest-html-tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
with:
fetch-depth: 1
- name: Install dependencies
run: sudo apt install -y libfltk1.3-dev libmbedtls-dev
- name: autogen
run: ./autogen.sh
- name: configure
run: ./configure --disable-openssl
- name: make
run: make
- name: make check
run: make check
- name: make distcheck
run: make distcheck
ubuntu-latest-openssl-3:
needs: ubuntu-latest-html-tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
with:
fetch-depth: 1
- name: Install dependencies
run: sudo apt install -y libfltk1.3-dev libssl-dev
- name: autogen
run: ./autogen.sh
- name: configure
run: ./configure --disable-mbedtls
- name: make
run: make
- name: make check
run: make check
- name: make distcheck
run: make distcheck
ubuntu-latest-with-old-std:
needs: ubuntu-latest-html-tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
with:
fetch-depth: 1
- name: Install dependencies
run: sudo apt install -y libfltk1.3-dev libssl-dev
- name: autogen
run: ./autogen.sh
- name: configure
run: ./configure --disable-mbedtls CFLAGS="-Werror" CXXFLAGS="-Werror"
- name: make
run: make
- name: make check
run: make check
ubuntu-20-04-openssl-1-1:
needs: ubuntu-latest-html-tests
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v1
with:
fetch-depth: 1
- name: Install dependencies
run: sudo apt install -y libfltk1.3-dev libssl-dev
- name: autogen
run: ./autogen.sh
- name: configure
run: ./configure --disable-mbedtls
- name: make
run: make
- name: make check
run: make check
- name: make distcheck
run: make distcheck
alpine-mbedtls-3_6_0:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: jirutka/setup-alpine@v1
with:
packages: >
build-base
autoconf
automake
fltk-dev
libpng-dev
libjpeg-turbo-dev
mbedtls-dev
- run: |
./autogen.sh
./configure
make
make check
shell: alpine.sh {0}
- name: Checkout repository
uses: actions/checkout@v4

- name: Install dependencies
run: |
if [ "${{ matrix.os }}" = "ubuntu" ] || [ "${{ matrix.os }}" = "ubuntu-20.04" ]; then
apt-get update
apt-get install -y autotools-dev autoconf automake clang git imagemagick libfltk1.3-dev libjpeg-turbo-dev libssl-dev lld meson ninja-build x11-apps x11-utils xvfb zlib1g-dev
else
apk add build-base autoconf automake clang fltk-dev git libpng-dev libjpeg-turbo-dev lld mbedtls-dev meson ninja-build openssl-dev
fi
- name: Set git safe directory
run: git config --global --add safe.directory ${GITHUB_WORKSPACE}

- name: Prepare Autotools
run: |
if [ ${{ matrix.build-system }} = "autotools" ]; then
./autogen.sh
mkdir install build
fi
- name: Configure Build
run: |
HTML_TESTS_OPT=""
if [ "${{matrix.compiler}}" = "clang" ]; then
export CC=clang CXX=clang++ LDFLAGS="-fuse-ld=lld -Wl,--as-needed"
fi
if [ "${{ matrix.build-system }}" = "autotools" ]; then
if [ "${{ matrix.tls }}" = "none" ]; then
export TLS_OPT="--disable-tls"
elif [ "${{ matrix.tls }}" = "mbedtls" ]; then
export TLS_OPT="--disable-openssl"
else
export TLS_OPT="--disable-mbedtls"
fi
if [ "${{ matrix.html-tests }}" = "true" ]; then
export HTML_TESTS_OPT="--enable-html-tests"
fi
else
if [ "${{ matrix.tls }}" = "none" ]; then
export TLS_OPT="-Dtls=disabled -Dopenssl=false -Dmbedtls=false"
elif [ "${{ matrix.tls }}" = "mbedtls" ]; then
export TLS_OPT="-Dmbedtls=true -Dopenssl=false"
else
export TLS_OPT="-Dopenssl=true -Dmbedtls=false"
fi
if [ "${{ matrix.html-tests }}" = "true" ]; then
export HTML_TESTS_OPT="-Denable-html-tests=true"
fi
fi
if [ "${{ matrix.build-system }}" = "autotools" ]; then
cd build
../configure --prefix=$(readlink -f ../install) ${TLS_OPT} ${HTML_TESTS_OPT}
else
meson setup build --prefix="$(pwd)/install" ${TLS_OPT} ${HTML_TESTS_OPT}
fi
- name: Build Dillo for ${{ matrix.os }} with ${{ matrix.build-system }} and ${{ matrix.compiler }}
run: |
if [ "${{ matrix.build-system }}" = "autotools" ]; then
cd build
make && make install
mkdir -p ~/.dillo/
cp ../install/etc/dillo/* ~/.dillo/
else
ninja -C build
fi
- name: Run tests
run: |
if [ "${{ matrix.build-system }}" = "autotools" ]; then
cd build
export DILLOBIN=$(readlink -f bin/dillo)
make check || (cat test/html/test-suite.log; false)
export DILLOBIN=
else
meson test -C build
fi
- name: Check release fits in a floppy disk of 1.44 MB
run: |
if [ "${{ matrix.build-system }}" = "autotools" ]; then
cd build
make dist-gzip
size=$(stat -c %s dillo-*.tar.gz)
floppy=$((1474560 - 32*1024)) # Leave room for FAT table
echo "Floppy occupation: $(($size * 100 / $floppy)) %"
if [ $size -lt $floppy ]; then
echo 'OK: Fits in floopy disk'
else
echo "FAIL: Release size too big: $size / $floppy"
exit 1
fi
else
echo "Skipping floppy disk check for Meson build; not yet implemented"
fi
- name: Run distcheck
run: |
HTML_TESTS_OPT=""
if [ "${{ matrix.html-tests }}" = "true" ]; then
HTML_TESTS_OPT="--enable-html-tests"
fi
if [ "${{ matrix.build-system }}" = "autotools" ]; then
mkdir build-distcheck install-distcheck
cd build-distcheck && ../configure --prefix=$(readlink -f ../install-distcheck) ${HTML_TESTS_OPT}
make distcheck DISTCHECK_CONFIGURE_FLAGS="${HTML_TESTS_OPT}"
else
if [ "${{ matrix.os}}" = "ubuntu*" ]; then
meson dist -C build
fi
fi
macOS-13-openssl-1-1:
needs: ubuntu-latest-html-tests
runs-on: macos-13
steps:
- uses: actions/checkout@v1
Expand All @@ -190,8 +160,8 @@ jobs:
run: make check
- name: make distcheck
run: make distcheck

macOS-13-openssl-3:
needs: ubuntu-latest-html-tests
runs-on: macos-13
steps:
- uses: actions/checkout@v1
Expand All @@ -211,8 +181,8 @@ jobs:
run: make check
- name: make distcheck
run: make distcheck

freebsd-14-openssl-3:
needs: ubuntu-latest-html-tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
Expand All @@ -235,8 +205,8 @@ jobs:
make
make check
ldd src/dillo
windows-mbedtls:
needs: ubuntu-latest-html-tests
runs-on: windows-latest
steps:
- run: git config --global core.autocrlf input
Expand Down

0 comments on commit f204328

Please sign in to comment.