-
Notifications
You must be signed in to change notification settings - Fork 15
176 lines (176 loc) · 5.65 KB
/
ci.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
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