forked from modcluster/mod_proxy_cluster
-
Notifications
You must be signed in to change notification settings - Fork 0
141 lines (141 loc) · 4.7 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
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