Testsuite: Make tomcat version configurable, add CI basic test for each version, minor tweaks and fixes #281
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
name: CI | |
on: | |
push: | |
branches: | |
- '*' | |
pull_request: | |
branches: | |
- '*' | |
jobs: | |
cmake-fedora-latest: | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
compiler: [ gcc, clang ] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
path: mod_proxy_cluster | |
- name: Setup Podman | |
run: | | |
sudo apt update | |
sudo apt-get -y install podman | |
podman pull fedora:38 | |
- name: Create container and build | |
run: | | |
{ | |
echo 'FROM fedora:38' | |
echo 'RUN dnf install cmake httpd-devel ${{ matrix.compiler }} -y' | |
echo 'RUN dnf groupinstall "C Development Tools and Libraries" -y' | |
echo 'RUN dnf clean all' | |
echo 'COPY mod_proxy_cluster mod_proxy_cluster' | |
echo 'WORKDIR /mod_proxy_cluster/native' | |
echo 'RUN cmake . -DCMAKE_C_COMPILER=${{ matrix.compiler }}' | |
echo 'RUN make' | |
} > podmanfile | |
podman build -f ./podmanfile | |
name: cmake-fedora-latest | |
make-fedora-latest: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
path: mod_proxy_cluster | |
- name: Setup Podman | |
run: | | |
sudo apt update | |
sudo apt-get -y install podman | |
podman pull fedora:38 | |
- name: Create container and build | |
run: | | |
{ | |
echo 'FROM fedora:38' | |
echo 'RUN dnf install httpd-devel redhat-rpm-config -y' | |
echo 'RUN dnf groupinstall "C Development Tools and Libraries" -y' | |
echo 'RUN dnf clean all' | |
echo 'COPY mod_proxy_cluster mod_proxy_cluster' | |
echo 'WORKDIR /mod_proxy_cluster/native' | |
echo 'RUN \' | |
echo 'for module in advertise/ mod_proxy_cluster/ balancers/ mod_manager; do \' | |
echo ' echo Building: $module; \' | |
echo ' cd $module; \' | |
echo ' sh buildconf; \' | |
echo ' ./configure --with-apxs=$APACHE_DIR/bin/apxs; \' | |
echo ' make clean; \' | |
# Ensure the build fails in case of a failure in any of the module builds! | |
echo ' make || exit 1; \' | |
echo ' cd ..; \' | |
echo 'done;' | |
} > podmanfile | |
podman build -f ./podmanfile | |
clang-format-style-check: | |
# The ubuntu-latest has an old version of clang-format, let's just use the latest installed via brew. | |
runs-on: macos-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
path: mod_proxy_cluster | |
- name: Install clang-format | |
run: | | |
brew install clang-format | |
- name: Check styles | |
# Take full control over shell parameters by providing a template string to the shell options | |
# to display the resulting diff in the build logs. | |
shell: bash {0} | |
run: | | |
code=0 | |
cd mod_proxy_cluster/native | |
for file in */*.c */*.h; do | |
clang-format $file -n &> diff.txt; | |
if [ ! -s diff.txt ]; then | |
printf "%-42s ... OK\n" $file | |
else | |
cat diff.txt | |
printf "%-42s ... NOK\n" $file | |
code=1 | |
fi | |
rm diff.txt || true # we don't fail if the file does not exist | |
done; | |
exit $code | |
make-httpd-maintainer-mode: | |
runs-on: ubuntu-latest | |
container: | |
image: quay.io/mod_cluster/ci-httpd-dev | |
defaults: | |
run: | |
shell: bash | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Build | |
run: | | |
cd native | |
for module in advertise/ mod_proxy_cluster/ balancers/ mod_manager/; do \ | |
cd $module; \ | |
sh buildconf; \ | |
./configure --with-apxs=/usr/local/apache2/bin/apxs; \ | |
make clean; \ | |
make || exit 1; \ | |
cd ..; \ | |
done; | |
cmake-windows-latest: | |
runs-on: windows-latest | |
env: | |
APACHE_LOUNGE_DISTRO_VERSION: 2.4.57 | |
HTTPD_DEV_HOME: '${{ github.workspace }}\httpd-apache-lounge\Apache24' | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Setup Developer Command Prompt for Microsoft Visual C++ | |
uses: ilammy/msvc-dev-cmd@v1 | |
- name: Get httpd | |
run: | | |
curl.exe --output "httpd-apache-lounge.zip" --url "https://www.apachelounge.com/download/VS16/binaries/httpd-${{ env.APACHE_LOUNGE_DISTRO_VERSION }}-win64-VS16.zip" | |
Expand-Archive -Path "httpd-apache-lounge.zip" -DestinationPath "httpd-apache-lounge" | |
- name: Build | |
run: | | |
./native/scripts/windows-build.bat | |
tests: | |
runs-on: ubuntu-latest | |
env: | |
IMG: local-tomcat | |
HTTPD_IMG: local-httpd | |
DEBUG: on | |
FOREVER_PAUSE: 100 | |
ITERATION_COUNT: 2 | |
TOMCAT_CYCLE_COUNT: 2 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
# this occupies 8084 port on Ubuntu 20.04 and we don't use it. | |
- name: Remove mono blocking 8084 port | |
run: sudo kill -9 $(sudo lsof -t -i:8084) | |
- name: Setup dependencies | |
run: | | |
sudo apt-get update -y | |
sudo apt-get install -y docker maven git curl iproute2 | |
cd test | |
sh setup-dependencies.sh | |
- name: Print network environment | |
run: ss -ltp | |
- name: Run testsuite | |
run: | | |
cd test | |
sh testsuite.sh | |
- name: Preserve test logs | |
uses: actions/upload-artifact@v3 | |
if: always() | |
with: | |
name: Test logs | |
path: | | |
test/logs/* | |
retention-days: 7 |