forked from modcluster/mod_proxy_cluster
-
Notifications
You must be signed in to change notification settings - Fork 0
178 lines (178 loc) · 5.74 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
177
178
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
MPC_BRANCH: "${{ github.ref_name }}"
MPC_CONF: https://raw.githubusercontent.com/jajik/mod_proxy_cluster/rework-test-add-ci/test/httpd/mod_proxy_cluster.conf
DEBUG: on
ITERATION_COUNT: 5
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup dependencies
run: |
sudo apt update -y
sudo apt install -y moby* maven git curl iproute2
cd test
sh setup-dependencies.sh
- name: Setup images
run: |
cd test
source includes/common.sh
httpd_create
tomcat_create
- name: Basic tests
run: |
cd test
mkdir logs
source includes/common.sh
run_test basetests.sh "Basic tests"
- name: Preserve test logs
uses: actions/upload-artifact@v3
if: always()
with:
name: Test logs
path: test/logs/*
retention-days: 7