Use GitHub Actions for more OS-specific build tests #22
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Checks defined in this file are meant to be | |
# run every time a PR is created, updated, and staged | |
# for merge. | |
# They aim to and cheaply identify issues with | |
# the code as presented, leaving more expensive | |
# multiplatform checks to the "staged commit" phase. | |
# | |
# Be mindful about keeping at all times Anubis' configuration | |
# in sync with the total number of tests targeting | |
# the "auto" branch, regardless of the file defining them | |
name: PR commit | |
on: | |
push: | |
# test commits on this branch, and staged commits | |
branches: [ "master", "auto" ] | |
pull_request: | |
# test PRs targeting this branch code | |
branches: [ "master" ] | |
env: | |
# empty except for pull_request events | |
PULL_REQUEST_NUMBER: ${{ github.event.pull_request.number }} | |
# Full clones of Squid repository branches (depth=19000+) waste resources, | |
# while excessively shallow clones break tests that check for past commits | |
# (e.g., to skip a particular test until a known bug is fixed) or generate | |
# diffs against them (e.g., for `git diff --check`). This arbitrary limit | |
# tries to balance the two concerns. | |
CHECKOUT_FETCH_DEPTH: 1001 | |
jobs: | |
functionality-tests: | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Install prerequisite packages | |
run: | | |
sudo apt-get --quiet=2 update | |
sudo apt-get --quiet=2 install libtool-bin | |
- name: Setup a nodejs environment | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 20 | |
- name: Checkout Squid sources | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: ${{ env.CHECKOUT_FETCH_DEPTH }} | |
- run: ./bootstrap.sh | |
- run: ./configure --with-openssl | |
- run: make -j`nproc` | |
- run: | | |
sudo make install | |
sudo chown -R nobody:nogroup /usr/local/squid | |
- run: ./test-suite/test-functionality.sh | |
# Squid logs are not readable to actions/upload-artifact below | |
- name: Prep test logs | |
if: success() || failure() | |
run: sudo chmod -R a+rX /usr/local/squid | |
- name: Publish test logs | |
if: success() || failure() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: test-logs | |
path: | | |
${{ runner.temp }}/*.log | |
/usr/local/squid/var/logs/overlord/*.log | |
source-maintenance-tests: | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Install prerequisite packages | |
run: | | |
sudo apt-get --quiet=2 update | |
sudo apt-get --quiet=2 install astyle | |
sudo apt-get --quiet=2 install gperf | |
pip install \ | |
--user \ | |
--no-cache-dir \ | |
--disable-pip-version-check \ | |
--quiet \ | |
--progress-bar off \ | |
codespell==1.16 # TODO: Upgrade to codespell v2 | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: ${{ env.CHECKOUT_FETCH_DEPTH }} | |
- run: ./test-suite/test-sources.sh | |
build-tests: | |
strategy: | |
fail-fast: true | |
matrix: | |
os: | |
- ubuntu-22.04 | |
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: ${{ matrix.os }} | |
name: build-tests(${{ matrix.os }},${{ matrix.compiler.CC }},${{ matrix.layer.nick }}) | |
env: | |
CC: ${{ matrix.compiler.CC }} | |
CXX: ${{ matrix.compiler.CXX }} | |
steps: | |
- name: Install prerequisite Linux packages | |
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 update | |
sudo apt-get --quiet=2 build-dep squid | |
sudo apt-get --quiet=2 install linuxdoc-tools libtool-bin ${{ matrix.compiler.CC }} | |
- name: Checkout sources | |
uses: actions/checkout@v4 | |
- name: Run build on Linux | |
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 | |
CodeQL-tests: | |
runs-on: [ ubuntu-22.04 ] | |
permissions: | |
security-events: write | |
steps: | |
- name: Install Squid prerequisite Linux packages | |
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 update | |
sudo apt-get --quiet=2 build-dep squid | |
sudo apt-get --quiet=2 install linuxdoc-tools libtool-bin | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Initialize CodeQL | |
uses: github/codeql-action/init@v3 | |
- name: Build Squid | |
run: ./test-builds.sh ./test-suite/buildtests/layer-02-maximus.opts | |
- name: Perform CodeQL Analysis | |
uses: github/codeql-action/analyze@v3 |