99 - v2/test-ci-windows
1010
1111jobs :
12- # build:
13- # strategy:
14- # matrix:
15- # arch: [x86, x64]
16- # runs-on: windows-latest
12+ build :
13+ strategy :
14+ matrix :
15+ arch : [x86, x64]
16+ runs-on : windows-latest
1717
18- # # For Caching
19- # permissions:
20- # actions: read
21- # contents: read
22-
23- # steps:
24- # - name: Checkout code
25- # uses: actions/checkout@v5
26-
27- # - name: Install Apache for x86
28- # if: matrix.arch == 'x86'
29- # shell: pwsh
30- # run: |
31- # $apachePath = "${{ github.workspace }}\apache-x86"
32- # New-Item -ItemType Directory -Path $apachePath -Force
33- # choco install apache-httpd -y --force --forcex86 --no-progress -r --params="`" /installLocation:$apachePath /noService`" "
34- # echo "APACHE_ROOT=$apachePath\Apache24" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
35-
36- # - name: Set Apache path for x64
37- # if: matrix.arch == 'x64'
38- # shell: pwsh
39- # run: |
40- # echo "APACHE_ROOT=C:\tools\Apache24" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
41-
42- # - name: Setup MSYS2
43- # uses: msys2/setup-msys2@v2
44- # with:
45- # msystem: ${{ matrix.arch == 'x86' && 'MINGW32' || 'UCRT64' }}
46- # update: true
47- # install: >
48- # git
49- # make
50- # autoconf
51- # automake
52- # libtool
53- # ${{ matrix.arch == 'x86' && 'mingw-w64-i686-gcc' || 'mingw-w64-ucrt-x86_64-gcc' }}
54- # ${{ matrix.arch == 'x86' && 'mingw-w64-i686-pkg-config' || 'mingw-w64-ucrt-x86_64-pkg-config' }}
55-
56- # - name: Clone and build ssdeep
57- # shell: msys2 {0}
58- # run: |
59- # MSYS2_WORKSPACE=$(cygpath -u '${{ github.workspace }}')
60- # echo "Converted workspace path: $MSYS2_WORKSPACE"
61-
62- # git clone https://github.com/ssdeep-project/ssdeep.git --depth 1
63- # cd ssdeep
64- # autoreconf -i
18+ # For Caching
19+ permissions :
20+ actions : read
21+ contents : read
22+
23+ steps :
24+ - name : Checkout code
25+ uses : actions/checkout@v5
26+
27+ - name : Install Apache for x86
28+ if : matrix.arch == 'x86'
29+ shell : pwsh
30+ run : |
31+ $apachePath = "${{ github.workspace }}\apache-x86"
32+ New-Item -ItemType Directory -Path $apachePath -Force
33+ choco install apache-httpd -y --force --forcex86 --no-progress -r --params="' /installLocation:$apachePath /noService' "
34+ echo "APACHE_ROOT=$apachePath\Apache24" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
35+
36+ - name : Set Apache path for x64
37+ if : matrix.arch == 'x64'
38+ shell : pwsh
39+ run : |
40+ echo "APACHE_ROOT=C:\tools\Apache24" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
41+
42+ # - name: Setup MSYS2
43+ # uses: msys2/setup-msys2@v2
44+ # with:
45+ # msystem: ${{ matrix.arch == 'x86' && 'MINGW32' || 'UCRT64' }}
46+ # update: true
47+ # install: >
48+ # git
49+ # make
50+ # autoconf
51+ # automake
52+ # libtool
53+ # ${{ matrix.arch == 'x86' && 'mingw-w64-i686-gcc' || 'mingw-w64-ucrt-x86_64-gcc' }}
54+ # ${{ matrix.arch == 'x86' && 'mingw-w64-i686-pkg-config' || 'mingw-w64-ucrt-x86_64-pkg-config' }}
55+
56+ # - name: Clone and build ssdeep
57+ # shell: msys2 {0}
58+ # run: |
59+ # MSYS2_WORKSPACE=$(cygpath -u '${{ github.workspace }}')
60+ # echo "Converted workspace path: $MSYS2_WORKSPACE"
61+
62+ # git clone https://github.com/ssdeep-project/ssdeep.git --depth 1
63+ # cd ssdeep
64+ # autoreconf -i
6565
66- # if [ "${{ matrix.arch }}" = "x86" ]; then
67- # ./configure --enable-shared --disable-static CFLAGS="-O3" CXXFLAGS="-O3" --build=i686-pc-mingw32
68- # else
69- # ./configure --enable-shared --disable-static CFLAGS="-O3" CXXFLAGS="-O3"
70- # fi
66+ # if [ "${{ matrix.arch }}" = "x86" ]; then
67+ # ./configure --enable-shared --disable-static CFLAGS="-O3" CXXFLAGS="-O3" --build=i686-pc-mingw32
68+ # else
69+ # ./configure --enable-shared --disable-static CFLAGS="-O3" CXXFLAGS="-O3"
70+ # fi
7171
72- # make dll
73-
74- # mkdir -p "${MSYS2_WORKSPACE}/ssdeep-install-${{ matrix.arch }}/bin"
75- # mkdir -p "${MSYS2_WORKSPACE}/ssdeep-install-${{ matrix.arch }}/include"
76- # cp -v fuzzy.dll "${MSYS2_WORKSPACE}/ssdeep-install-${{ matrix.arch }}/bin/"
77- # cp -v fuzzy.h "${MSYS2_WORKSPACE}/ssdeep-install-${{ matrix.arch }}/include/"
78- # cp -v fuzzy.def "${MSYS2_WORKSPACE}/ssdeep-install-${{ matrix.arch }}/"
79-
80- # - name: Restore vcpkg cache
81- # id: vcpkg-cache
82- # uses: TAServers/vcpkg-cache@v3
83- # with:
84- # token: ${{ secrets.GITHUB_TOKEN }}
85- # prefix: vcpkg-iis-module-${{ matrix.arch }}/
86-
87- # - name: Configure CMake for IIS Module
88- # env:
89- # VCPKG_FEATURE_FLAGS: "binarycaching"
90- # VCPKG_BINARY_SOURCES: "clear;files,${{ steps.vcpkg-cache.outputs.path }},readwrite"
91- # VCPKG_DEFAULT_TRIPLET: ${{ matrix.arch }}-windows
92- # run: |
93- # $archFlag = "${{ matrix.arch }}"
94- # $cmakeArch = if ($archFlag -eq "x86") { "Win32" } else { "x64" }
95- # $installDir = if ($archFlag -eq "x86") { "x86" } else { "amd64" }
96-
97- # cmake `
98- # -DAPACHE_ROOT="$env:APACHE_ROOT" `
99- # -DSSDEEP_ROOT="${{ github.workspace }}\ssdeep-install-${{ matrix.arch }}" `
100- # -DCMAKE_INSTALL_PREFIX="${{ github.workspace }}\iis\release\$installDir" `
101- # -DCMAKE_TOOLCHAIN_FILE="$env:VCPKG_INSTALLATION_ROOT\scripts\buildsystems\vcpkg.cmake" `
102- # -A $cmakeArch `
103- # -DWITH_SSDEEP=ON `
104- # -DWITH_LUA=ON `
105- # -DWITH_YAJL=ON `
106- # -S IIS -B "iis\build-${{ matrix.arch }}"
107-
108- # - name: Build IIS Module
109- # shell: pwsh
110- # run: |
111- # cmake --build "iis\build-${{ matrix.arch }}" --config Release
112-
113- # - name: Upload artifacts
114- # uses: actions/upload-artifact@v4
115- # with:
116- # name: iis-module-${{ matrix.arch }}
117- # path: iis/build-${{ matrix.arch }}/Release/
72+ # make dll
73+
74+ # mkdir -p "${MSYS2_WORKSPACE}/ssdeep-install-${{ matrix.arch }}/bin"
75+ # mkdir -p "${MSYS2_WORKSPACE}/ssdeep-install-${{ matrix.arch }}/include"
76+ # cp -v fuzzy.dll "${MSYS2_WORKSPACE}/ssdeep-install-${{ matrix.arch }}/bin/"
77+ # cp -v fuzzy.h "${MSYS2_WORKSPACE}/ssdeep-install-${{ matrix.arch }}/include/"
78+ # cp -v fuzzy.def "${MSYS2_WORKSPACE}/ssdeep-install-${{ matrix.arch }}/"
79+
80+ - name : Restore vcpkg cache
81+ id : vcpkg-cache
82+ uses : TAServers/vcpkg-cache@v3
83+ with :
84+ token : ${{ secrets.GITHUB_TOKEN }}
85+ prefix : vcpkg-iis-module-${{ matrix.arch }}/
86+
87+ - name : Configure CMake for IIS Module
88+ env :
89+ VCPKG_FEATURE_FLAGS : " binarycaching"
90+ VCPKG_BINARY_SOURCES : " clear;files,${{ steps.vcpkg-cache.outputs.path }},readwrite"
91+ VCPKG_DEFAULT_TRIPLET : ${{ matrix.arch }}-windows
92+ run : |
93+ $archFlag = "${{ matrix.arch }}"
94+ $cmakeArch = if ($archFlag -eq "x86") { "Win32" } else { "x64" }
95+ $installDir = if ($archFlag -eq "x86") { "x86" } else { "amd64" }
96+
97+ cmake `
98+ -DAPACHE_ROOT="$env:APACHE_ROOT" `
99+ # -DSSDEEP_ROOT="${{ github.workspace }}\ssdeep-install-${{ matrix.arch }}" `
100+ -DCMAKE_INSTALL_PREFIX="${{ github.workspace }}\iis\release\$installDir" `
101+ -DCMAKE_TOOLCHAIN_FILE="$env:VCPKG_INSTALLATION_ROOT\scripts\buildsystems\vcpkg.cmake" `
102+ -A $cmakeArch `
103+ # -DWITH_SSDEEP=ON `
104+ -DWITH_LUA=ON `
105+ -DWITH_YAJL=ON `
106+ -S IIS -B "iis\build-${{ matrix.arch }}"
107+
108+ - name : Build IIS Module
109+ shell : pwsh
110+ run : |
111+ cmake --build "iis\build-${{ matrix.arch }}" --config Release
112+
113+ - name : Upload artifacts
114+ uses : actions/upload-artifact@v4
115+ with :
116+ name : iis-module-${{ matrix.arch }}
117+ path : iis/build-${{ matrix.arch }}/Release/
118118
119- # package:
120- # needs: build
121- # runs-on: windows-latest
122- # steps:
123- # - name: Checkout code
124- # uses: actions/checkout@v5
125-
126- # - name: Download x64 artifacts
127- # uses: actions/download-artifact@v4
128- # with:
129- # name: iis-module-x64
130- # path: iis/release/amd64/
131-
132- # - name: Download x86 artifacts
133- # uses: actions/download-artifact@v4
134- # with:
135- # name: iis-module-x86
136- # path: iis/release/x86/
137-
138- # - name: Generate wxs files
139- # shell: pwsh
140- # run: |
141- # heat dir "iis\release\amd64" -cg ModSec64Components -dr inetsrv64 -gg -sreg -srd -var var.ModSecurityIISRelease64 -out "iis\ModSec64.wxs"
142- # heat dir "iis\release\x86" -cg ModSec32Components -dr inetsrv32 -gg -sreg -srd -var var.ModSecurityIISRelease32 -out "iis\ModSec32.wxs"
143-
144- # - name: Compile wxs files
145- # shell: pwsh
146- # run: |
147- # candle.exe -ext WixUtilExtension -ext WixUIExtension "iis\installer.wxs" "iis\ModSec64.wxs" -arch x64 -dModSecurityIISRelease64="iis\release\amd64\" -out iis\
148- # candle.exe -ext WixUtilExtension -ext WixUIExtension "iis\ModSec32.wxs" -arch x86 -dModSecurityIISRelease32="iis\release\x86\" -out iis\
149-
150- # - name: Link wixobj files into MSI
151- # shell: pwsh
152- # run: |
153- # light.exe -ext WixUtilExtension -ext WixUIExtension "iis\installer.wixobj" "iis\ModSec32.wixobj" "iis\ModSec64.wixobj" -out "iis\modsecurityiis.msi"
154-
155- # - name: Upload artifacts
156- # uses: actions/upload-artifact@v4
157- # with:
158- # name: modsecurityiis-installers
159- # path: iis/modsecurityiis.msi
119+ package :
120+ needs : build
121+ runs-on : windows-latest
122+ steps :
123+ - name : Checkout code
124+ uses : actions/checkout@v5
125+
126+ - name : Download x64 artifacts
127+ uses : actions/download-artifact@v4
128+ with :
129+ name : iis-module-x64
130+ path : iis/release/amd64/
131+
132+ - name : Download x86 artifacts
133+ uses : actions/download-artifact@v4
134+ with :
135+ name : iis-module-x86
136+ path : iis/release/x86/
137+
138+ - name : Generate wxs files
139+ shell : pwsh
140+ run : |
141+ heat dir "iis\release\amd64" -cg ModSec64Components -dr inetsrv64 -gg -sreg -srd -var var.ModSecurityIISRelease64 -out "iis\ModSec64.wxs"
142+ heat dir "iis\release\x86" -cg ModSec32Components -dr inetsrv32 -gg -sreg -srd -var var.ModSecurityIISRelease32 -out "iis\ModSec32.wxs"
143+
144+ - name : Compile wxs files
145+ shell : pwsh
146+ run : |
147+ candle.exe -ext WixUtilExtension -ext WixUIExtension "iis\installer.wxs" "iis\ModSec64.wxs" -arch x64 -dModSecurityIISRelease64="iis\release\amd64\" -out iis\
148+ candle.exe -ext WixUtilExtension -ext WixUIExtension "iis\ModSec32.wxs" -arch x86 -dModSecurityIISRelease32="iis\release\x86\" -out iis\
149+
150+ - name : Link wixobj files into MSI
151+ shell : pwsh
152+ run : |
153+ light.exe -ext WixUtilExtension -ext WixUIExtension "iis\installer.wixobj" "iis\ModSec32.wixobj" "iis\ModSec64.wixobj" -out "iis\modsecurityiis.msi"
154+
155+ - name : Upload artifacts
156+ uses : actions/upload-artifact@v4
157+ with :
158+ name : modsecurityiis-installers
159+ path : iis/modsecurityiis.msi
160160
161161 test :
162- # needs: package
162+ needs : package
163163 runs-on : windows-latest
164164 steps :
165- - name : Enable IIS Feature
165+ - name : Download MSI
166+ uses : actions/download-artifact@v4
167+ with :
168+ name : modsecurityiis-installers
169+ path : ${{ github.workspace }}\
170+
171+ - name : Install MSI
166172 shell : pwsh
167173 run : |
168- $iisStatus = Get-WindowsFeature -Name Web-Server
169- if ($iisStatus.Installed -eq $false) {
170- Write-Host "IIS is not installed. Installing now..."
171- Install-WindowsFeature -Name Web-Server -IncludeManagementTools
172- } else {
173- Write-Host "IIS is already installed."
174- }
175- Install-WindowsFeature -name Web-Server -IncludeManagementTools
176- Install-WindowsFeature -name Web-Server, Web-ASP, Web-Mgmt-Tools, Web-WebSockets
177-
178- # - name: Download MSI
179- # uses: actions/download-artifact@v4
180- # with:
181- # name: modsecurityiis-installers
182- # path: iis/
174+ msiexec /i modsecurityiis.msi /qn /norestart
175+
176+ - name : ReStart IIS Feature
177+ shell : pwsh
178+ run : |
179+ Restart-Service W3SVC
183180
184- # - name: Install MSI
185- # shell: pwsh
186- # run: |
181+ - name : Test IIS Module
182+ shell : pwsh
183+ run : |
184+ curl -I http://localhost/
185+ Get-EventLog -LogName Application -Newest 10
0 commit comments