-name: GitHub CI
+# The jobs below are executed on every PR branch push (among other
+# events), quickly and cheaply detecting many common PR problems.
+#
+# Anubis configuration must be kept in sync with the total number of
+# tests executed for "auto" branch commits, including tests in other
+# GitHub workflow file(s).
+
+name: PR commit
on:
push:
- # test this branch and staged PRs based on this branch code
+ # test commits on this branch and staged commits
branches: [ "master", "auto" ]
pull_request:
matrix:
os:
- ubuntu-22.04
- - macos-14
compiler:
- { CC: gcc, CXX: g++ }
- { CC: clang, CXX: clang++ }
- { name: layer-00-default, nick: default }
- { name: layer-01-minimal, nick: minimal }
- { name: layer-02-maximus, nick: maximus }
- exclude:
- # Non-clang testing on MacOS is too much work for very little gain
- - { os: macos-14, compiler: { CC: gcc, CXX: g++ } }
runs-on: ${{ matrix.os }}
steps:
- name: Install prerequisite Linux packages
- if: runner.os == 'Linux'
run: |
# required for "apt-get build-dep" to work
sudo sed --in-place -E 's/# (deb-src.*updates main)/ \1/g' /etc/apt/sources.list
sudo apt-get --quiet=2 build-dep squid
sudo apt-get --quiet=2 install linuxdoc-tools libtool-bin ${{ matrix.compiler.CC }}
- - name: Install prerequisite MacOS packages
- if: runner.os == 'macOS'
- run: |
- brew install \
- automake coreutils cppunit gawk \
- gnu-getopt gnu-sed grep libtool \
- make cyrus-sasl
- # openldap openssl # already provided by github workers base-image
-
- name: Checkout sources
uses: actions/checkout@v4
- name: Run build on Linux
- if: runner.os == 'Linux'
run: ./test-builds.sh ${{ matrix.layer.name }}
- - name: Run build on MacOS
- if: runner.os == 'macOS'
- run: |
- eval `brew shellenv`
- PKG_CONFIG_PATH="$HOMEBREW_PREFIX/lib/pkgconfig"
- PKG_CONFIG_PATH="$PKG_CONFIG_PATH:$HOMEBREW_PREFIX/opt/openldap/lib/pkgconfig"
- PKG_CONFIG_PATH="$PKG_CONFIG_PATH:$HOMEBREW_PREFIX/opt/cyrus-sasl/lib/pkgconfig"
- export PKG_CONFIG_PATH
- export GETOPT="$HOMEBREW_PREFIX/opt/gnu-getopt/bin/getopt"
- export MAKE="$HOMEBREW_PREFIX/bin/gmake"
- # ensure we use Homebrew headers and libraries
- # this is needed because pkg-config --libs openssl points to the wrong directory
- # in version openssl@3: stable 3.3.0
- export CPPFLAGS="-I$HOMEBREW_PREFIX/include${CPPFLAGS:+ $CPPFLAGS}"
- export LDFLAGS="-L$HOMEBREW_PREFIX/lib${LDFLAGS:+ $LDFLAGS}"
- export CFLAGS="-Wno-compound-token-split-by-macro${CFLAGS:+ $CFLAGS}" # needed fir ltdl with Xcode
-
- # libtool package referenced below fails to copy its configure*
- # files, possibly due to a packaging/brewing bug. The following sed
- # command restores installed libtoolize code to its earlier (and
- # working) variation.
- echo "brew libtool package details:"
- brew info libtool --json | grep -E 'rebuild|tap_git_head'
- # This hack was tested on libtoolize package with the following output:
- # "rebuild": 2,
- # "tap_git_head": "5cede8ea3b7b12c7f68215f75a951430b38d945f",
- #
- editable=$HOMEBREW_CELLAR/libtool/2.4.7/bin/glibtoolize
- sed -i.bak 's@ltdl_ac_aux_dir=""@ltdl_ac_aux_dir="../build-aux"@' $editable || true
- diff -u $editable.bak $editable || true
-
- ./test-builds.sh ${{ matrix.layer.name }}
-
- name: Publish build logs
if: success() || failure()
uses: actions/upload-artifact@v4
steps:
- name: Install Squid prerequisite Linux packages
- if: runner.os == 'Linux'
run: |
# required for "apt-get build-dep" to work
sudo sed --in-place -E 's/# (deb-src.*updates main)/ \1/g' /etc/apt/sources.list
--- /dev/null
+# Tests in this workflow file are slower or more expensive than build
+# tests in quick.yaml. These tests improve build environment coverage, but
+# most are unlikely to fail after quick.yaml tests succeed. Limiting these
+# tests execution to staged commits optimizes CI responsiveness and
+# costs while preserving decent quick.yaml problem detection probability.
+#
+# Anubis configuration must be kept in sync with the total number of
+# tests executed for "auto" branch commits, including tests in other
+# GitHub workflow file(s).
+
+name: Staged commit
+
+on:
+ push:
+ branches: [ "auto" ]
+
+jobs:
+ linux-distros:
+
+ strategy:
+ matrix:
+ os:
+ - centos-stream-9
+ - debian-stable
+ - debian-testing
+ - debian-unstable
+ - fedora-39
+ - fedora-40
+ - fedora-rawhide
+ - gentoo
+ - opensuse-leap
+ - opensuse-tumbleweed
+ - ubuntu-focal
+ - ubuntu-jammy
+ - ubuntu-noble # EOL 2036-04
+ - ubuntu-oracular # EOL 2025-07
+ compiler:
+ - { CC: gcc, CXX: g++ }
+ - { CC: clang, CXX: clang++ }
+ layer:
+ - { name: layer-00-default, nick: default }
+ - { name: layer-01-minimal, nick: minimal }
+ - { name: layer-02-maximus, nick: maximus }
+
+ runs-on: ubuntu-22.04
+ container:
+ image: squidcache/buildfarm-${{ matrix.os }}:stable
+ options: --user 1001 # uid used by worfklow runner
+
+ name: linux-distros(${{ matrix.os }},${{ matrix.compiler.CC }},${{ matrix.layer.nick }})
+ env:
+ CC: ${{ matrix.compiler.CC }}
+ CXX: ${{ matrix.compiler.CXX }}
+
+ steps:
+ - name: Checkout Sources
+ uses: actions/checkout@v4
+
+ - name: Run test-builds
+ id: test-builds
+ run: |
+ ./test-builds.sh ${{ matrix.layer.name }}
+
+ - name: Publish build logs
+ if: success() || failure()
+ uses: actions/upload-artifact@v4
+ with:
+ name: build-logs-${{ matrix.os }}-${{ matrix.compiler.CC }}-${{ matrix.layer.nick }}
+ path: btlayer-*.log
+
+ macos:
+ runs-on: macos-14
+ name: macos
+
+ steps:
+ - name: Install prerequisite MacOS packages
+ run: |
+ brew install \
+ automake coreutils cppunit gawk \
+ gnu-getopt gnu-sed grep libtool \
+ make cyrus-sasl
+ # openldap openssl # already provided by github workers base-image
+
+ - name: Checkout Sources
+ uses: actions/checkout@v4
+
+ - name: Run test-builds
+ id: test-builds
+ run: |
+ eval `brew shellenv`
+ PKG_CONFIG_PATH="$HOMEBREW_PREFIX/lib/pkgconfig"
+ PKG_CONFIG_PATH="$PKG_CONFIG_PATH:$HOMEBREW_PREFIX/opt/openldap/lib/pkgconfig"
+ PKG_CONFIG_PATH="$PKG_CONFIG_PATH:$HOMEBREW_PREFIX/opt/cyrus-sasl/lib/pkgconfig"
+ export PKG_CONFIG_PATH
+ export GETOPT="$HOMEBREW_PREFIX/opt/gnu-getopt/bin/getopt"
+ export MAKE="$HOMEBREW_PREFIX/bin/gmake"
+ # ensure we use Homebrew headers and libraries
+ # this is needed because pkg-config --libs openssl points to the wrong directory
+ # in version openssl@3: stable 3.3.0
+ export CPPFLAGS="-I$HOMEBREW_PREFIX/include${CPPFLAGS:+ $CPPFLAGS}"
+ export LDFLAGS="-L$HOMEBREW_PREFIX/lib${LDFLAGS:+ $LDFLAGS}"
+ export CFLAGS="-Wno-compound-token-split-by-macro${CFLAGS:+ $CFLAGS}" # needed fir ltdl with Xcode
+
+ # libtool package referenced below fails to copy its configure*
+ # files, possibly due to a packaging/brewing bug. The following sed
+ # command restores installed libtoolize code to its earlier (and
+ # working) variation.
+ echo "brew libtool package details:"
+ brew info libtool --json | grep -E 'rebuild|tap_git_head'
+ # This hack was tested on libtoolize package with the following output:
+ # "rebuild": 2,
+ # "tap_git_head": "5cede8ea3b7b12c7f68215f75a951430b38d945f",
+ #
+ editable=$HOMEBREW_CELLAR/libtool/2.4.7/bin/glibtoolize
+ sed -i.bak 's@ltdl_ac_aux_dir=""@ltdl_ac_aux_dir="../build-aux"@' $editable || true
+ diff -u $editable.bak $editable || true
+
+ ./test-builds.sh
+
+ - name: Publish build logs
+ if: success() || failure()
+ uses: actions/upload-artifact@v4
+ with:
+ name: build-logs-macos
+ path: btlayer-*.log