@@ -91,3 +91,111 @@ jobs:
91
91
echo "FAIL"
92
92
exit 1
93
93
fi
94
+
95
+ build-windows :
96
+ runs-on : windows-2022
97
+ defaults :
98
+ run :
99
+ shell : msys2 {0}
100
+ steps :
101
+ - name : Set up MSVC
102
+ uses : ilammy/msvc-dev-cmd@v1
103
+ - name : Set up msys
104
+ uses : msys2/setup-msys2@v2
105
+ with :
106
+ msystem : UCRT64
107
+ path-type : inherit
108
+ - name : Get Nginx source
109
+ uses : actions/checkout@v4
110
+ with :
111
+ repository : nginx/nginx
112
+ path : nginx
113
+ fetch-depth : 1
114
+ - name : Get Nginx tests
115
+ uses : actions/checkout@v4
116
+ with :
117
+ repository : nginx/nginx-tests
118
+ path : nginx/test
119
+ fetch-depth : 1
120
+ - name : Set up third-party libraries
121
+ working-directory : nginx
122
+ run : |
123
+ mkdir objs
124
+ mkdir objs/lib
125
+ cd objs/lib
126
+ wget -q -O - https://github.com/PCRE2Project/pcre2/releases/download/pcre2-10.39/pcre2-10.39.tar.gz | tar -xzf -
127
+ wget -q -O - https://www.zlib.net/fossils/zlib-1.3.tar.gz | tar -xzf -
128
+ wget -q -O - https://www.openssl.org/source/openssl-3.0.13.tar.gz | tar -xzf -
129
+ - name : Get libModSecurity source
130
+ uses : actions/checkout@v4
131
+ with :
132
+ repository : owasp-modsecurity/ModSecurity
133
+ submodules : true
134
+ path : nginx/objs/lib/ModSecurity
135
+ fetch-depth : 1
136
+ - name : Setup Conan
137
+ shell : cmd
138
+ run : |
139
+ pip3 install conan --upgrade
140
+ conan profile detect
141
+ - name : Build libModSecurity
142
+ working-directory : nginx/objs/lib/ModSecurity
143
+ shell : cmd
144
+ run : |
145
+ vcbuild.bat
146
+ - name : Get ModSecurity-nginx source code
147
+ uses : actions/checkout@v4
148
+ with :
149
+ path : nginx/objs/lib/ModSecurity-nginx
150
+ - name : Copy ModSecurity-nginx tests to nginx/test
151
+ working-directory : nginx/test
152
+ run : |
153
+ cp ../objs/lib/ModSecurity-nginx/tests/* .
154
+ - name : Remove /usr/bin/link conflicting with MSVC link.exe
155
+ run : |
156
+ set -ex
157
+ which link
158
+ rm /usr/bin/link
159
+ - name : Build nginx w/ModSecurity-nginx module
160
+ working-directory : nginx
161
+ run : |
162
+ : # Windows native version of Perl is required by nginx build
163
+ export PATH=/c/Strawberry/perl/bin:$PATH
164
+ : # Set env variables to point to libModSecurity v3 include & lib directories
165
+ export MODSECURITY_INC=objs/lib/ModSecurity/headers
166
+ export MODSECURITY_LIB=objs/lib/ModSecurity/build/win32/build/Release
167
+ : # Copy libModSecurity.dll to objs dir (to be able to run nginx later)
168
+ cp $MODSECURITY_LIB/libModSecurity.dll objs
169
+ : # Configure nginx build w/ModSecurity-nginx module
170
+ auto/configure \
171
+ --with-cc=cl \
172
+ --with-debug \
173
+ --prefix= \
174
+ --conf-path=conf/nginx.conf \
175
+ --pid-path=logs/nginx.pid \
176
+ --http-log-path=logs/access.log \
177
+ --error-log-path=logs/error.log \
178
+ --sbin-path=nginx.exe \
179
+ --http-client-body-temp-path=temp/client_body_temp \
180
+ --http-proxy-temp-path=temp/proxy_temp \
181
+ --http-fastcgi-temp-path=temp/fastcgi_temp \
182
+ --http-scgi-temp-path=temp/scgi_temp \
183
+ --http-uwsgi-temp-path=temp/uwsgi_temp \
184
+ --with-cc-opt=-DFD_SETSIZE=1024 \
185
+ --with-pcre=objs/lib/pcre2-10.39 \
186
+ --with-zlib=objs/lib/zlib-1.3 \
187
+ --with-openssl=objs/lib/openssl-3.0.13 \
188
+ --with-openssl-opt=no-asm \
189
+ --with-http_ssl_module \
190
+ --with-http_v2_module \
191
+ --with-http_auth_request_module \
192
+ --add-module=objs/lib/ModSecurity-nginx
193
+ nmake
194
+ - name : Run ModSecurity-nginx tests
195
+ working-directory : nginx/test
196
+ shell : cmd # tests need to run on a "windows" shell
197
+ run : |
198
+ md temp
199
+ set TEMP=temp
200
+ set TEST_NGINX_BINARY=..\objs\nginx.exe
201
+ prove modsecurity*.t
0 commit comments