mirror of
https://github.com/libevent/libevent.git
synced 2025-01-09 00:56:20 +08:00
255 lines
7.9 KiB
YAML
255 lines
7.9 KiB
YAML
---
|
|
name: windows
|
|
|
|
on:
|
|
pull_request:
|
|
types: [opened, synchronize]
|
|
paths-ignore:
|
|
- '**.md'
|
|
- '.mailmap'
|
|
- 'ChangeLog*'
|
|
- 'whatsnew*'
|
|
- 'LICENSE'
|
|
push:
|
|
paths-ignore:
|
|
- '**.md'
|
|
- '.mailmap'
|
|
- 'ChangeLog*'
|
|
- 'whatsnew*'
|
|
- 'LICENSE'
|
|
|
|
jobs:
|
|
vs2017:
|
|
runs-on: ${{ matrix.os }}
|
|
if: "!contains(github.event.head_commit.message, 'ci skip')"
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
os: [windows-2016]
|
|
EVENT_MATRIX: [NONE]
|
|
|
|
steps:
|
|
- uses: actions/checkout@v2.0.0
|
|
|
|
- name: Cache Depends
|
|
id: cache-depends
|
|
uses: actions/cache@v1.0.3
|
|
with:
|
|
path: C:\vcpkg\installed
|
|
key: ${{ matrix.os }}-vcpkg-v2
|
|
|
|
- name: Cache Build
|
|
uses: actions/cache@v1.0.3
|
|
with:
|
|
path: build
|
|
key: ${{ matrix.os }}-${{ matrix.EVENT_MATRIX }}-v3
|
|
|
|
- name: Install Depends
|
|
if: steps.cache-depends.outputs.cache-hit != 'true'
|
|
shell: powershell
|
|
run: |
|
|
vcpkg install openssl:x64-windows
|
|
vcpkg install zlib:x64-windows
|
|
vcpkg install mbedtls:x64-windows
|
|
|
|
- name: Build And Test
|
|
shell: powershell
|
|
run: |
|
|
$EVENT_BUILD_PARALLEL=10
|
|
$EVENT_TESTS_PARALLEL=1
|
|
|
|
mkdir build -ea 0
|
|
cd build
|
|
|
|
$CMAKE_CMD="cmake -G 'Visual Studio 15 2017 Win64' -DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake .."
|
|
function cmake_configure($retry)
|
|
{
|
|
$errcode=0
|
|
try {
|
|
if ($retry -eq 0) {
|
|
echo "[cmake configure retry] $CMAKE_CMD"
|
|
} else {
|
|
echo "[cmake configure] $CMAKE_CMD"
|
|
}
|
|
Invoke-Expression $CMAKE_CMD
|
|
$errcode=$LastExitCode
|
|
}
|
|
catch {
|
|
$errcode=1
|
|
}
|
|
finally {
|
|
if ($errcode -ne 0) {
|
|
if ($retry -eq 0) {
|
|
$host.SetShouldExit($LastExitCode)
|
|
} else {
|
|
echo "Remove all entries in build directory"
|
|
rm -r -fo *
|
|
cmake_configure 0
|
|
}
|
|
}
|
|
}
|
|
}
|
|
cmake_configure 1
|
|
|
|
try {
|
|
cmake --build . -j $EVENT_BUILD_PARALLEL -- /nologo /verbosity:minimal
|
|
if ($LastExitCode -ne 0) { $host.SetShouldExit($LastExitCode) }
|
|
|
|
if ("${{ matrix.EVENT_MATRIX }}" -eq "TEST_EXPORT_STATIC") {
|
|
python ../test-export/test-export.py static
|
|
}
|
|
elseif ("${{ matrix.EVENT_MATRIX }}" -eq "TEST_EXPORT_SHARED") {
|
|
python ../test-export/test-export.py shared
|
|
}
|
|
else {
|
|
ctest --output-on-failure -j $EVENT_TESTS_PARALLEL
|
|
if ($LastExitCode -ne 0) { $host.SetShouldExit($LastExitCode) }
|
|
}
|
|
} catch {
|
|
$host.SetShouldExit($LastExitCode)
|
|
}
|
|
|
|
- uses: actions/upload-artifact@v1
|
|
if: failure()
|
|
with:
|
|
name: ${{ matrix.os }}-${{ matrix.EVENT_MATRIX }}-build
|
|
path: build
|
|
|
|
vs2019:
|
|
runs-on: ${{ matrix.os }}
|
|
if: "!contains(github.event.head_commit.message, 'ci skip')"
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
os: [windows-2019]
|
|
EVENT_MATRIX:
|
|
- NONE
|
|
- LIBRARY_TYPE_STATIC
|
|
- DISABLE_OPENSSL
|
|
- DISABLE_THREAD_SUPPORT
|
|
- DISABLE_DEBUG_MODE
|
|
- DISABLE_MM_REPLACEMENT
|
|
- DUNICODE
|
|
- TEST_EXPORT_SHARED
|
|
- TEST_EXPORT_STATIC
|
|
|
|
steps:
|
|
- uses: actions/checkout@v2.0.0
|
|
|
|
- name: Cache Depends
|
|
id: cache-depends
|
|
uses: actions/cache@v1.1.0
|
|
with:
|
|
path: C:\vcpkg\installed
|
|
key: ${{ matrix.os }}-vcpkg-v2
|
|
|
|
- name: Cache Build
|
|
uses: actions/cache@v1.1.0
|
|
with:
|
|
path: build
|
|
key: ${{ matrix.os }}-${{ matrix.EVENT_MATRIX }}-v3
|
|
|
|
- name: Install Depends
|
|
if: steps.cache-depends.outputs.cache-hit != 'true'
|
|
shell: powershell
|
|
run: |
|
|
vcpkg install openssl:x64-windows
|
|
vcpkg install zlib:x64-windows
|
|
vcpkg install mbedtls:x64-windows
|
|
|
|
- name: Build And Test
|
|
shell: powershell
|
|
run: |
|
|
$EVENT_BUILD_PARALLEL=10
|
|
$EVENT_TESTS_PARALLEL=1
|
|
|
|
if ( "${{ matrix.EVENT_MATRIX }}" -eq "LIBRARY_TYPE_STATIC" ) {
|
|
$EVENT_CMAKE_OPTIONS="-DEVENT__LIBRARY_TYPE=STATIC -DEVENT__MSVC_STATIC_RUNTIME=OFF"
|
|
}
|
|
elseif ( "${{ matrix.EVENT_MATRIX }}" -eq "DISABLE_OPENSSL" ) {
|
|
$EVENT_CMAKE_OPTIONS="-DEVENT__DISABLE_OPENSSL=ON"
|
|
}
|
|
elseif ( "${{ matrix.EVENT_MATRIX }}" -eq "DISABLE_THREAD_SUPPORT" ) {
|
|
$EVENT_CMAKE_OPTIONS="-DEVENT__DISABLE_THREAD_SUPPORT=ON"
|
|
}
|
|
elseif ( "${{ matrix.EVENT_MATRIX }}" -eq "DISABLE_DEBUG_MODE" ) {
|
|
$EVENT_CMAKE_OPTIONS="-DEVENT__DISABLE_DEBUG_MODE=ON"
|
|
}
|
|
elseif ( "${{ matrix.EVENT_MATRIX }}" -eq "DISABLE_MM_REPLACEMENT" ) {
|
|
$EVENT_CMAKE_OPTIONS="-DEVENT__DISABLE_MM_REPLACEMENT=ON"
|
|
}
|
|
elseif ( "${{ matrix.EVENT_MATRIX }}" -eq "UNICODE" ) {
|
|
$EVENT_CMAKE_OPTIONS="-DCMAKE_C_FLAGS='-DUNICODE -D_UNICODE'"
|
|
}
|
|
elseif ( "${{ matrix.EVENT_MATRIX }}" -eq "TEST_EXPORT_SHARED" ) {
|
|
$EVENT_CMAKE_OPTIONS="-DEVENT__DISABLE_TESTS=ON -DEVENT__DISABLE_SAMPLES=ON"
|
|
}
|
|
elseif ( "${{ matrix.EVENT_MATRIX }}" -eq "TEST_EXPORT_STATIC" ) {
|
|
$EVENT_CMAKE_OPTIONS="-DEVENT__LIBRARY_TYPE=STATIC -DEVENT__MSVC_STATIC_RUNTIME=OFF -DEVENT__DISABLE_TESTS=ON -DEVENT__DISABLE_SAMPLES=ON"
|
|
}
|
|
else {
|
|
$EVENT_CMAKE_OPTIONS=""
|
|
}
|
|
|
|
mkdir build -ea 0
|
|
cd build
|
|
|
|
if ("${{ matrix.os }}" -eq "windows-2016") {
|
|
$CMAKE_CMD="cmake -G 'Visual Studio 15 2017 Win64' -DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake .."
|
|
}
|
|
else { # windows-2019
|
|
$CMAKE_CMD="cmake -G 'Visual Studio 16 2019' -A x64 -DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake .. $EVENT_CMAKE_OPTIONS"
|
|
}
|
|
function cmake_configure($retry)
|
|
{
|
|
$errcode=0
|
|
try {
|
|
if ($retry -eq 0) {
|
|
echo "[cmake configure retry] $CMAKE_CMD"
|
|
} else {
|
|
echo "[cmake configure] $CMAKE_CMD"
|
|
}
|
|
Invoke-Expression $CMAKE_CMD
|
|
$errcode=$LastExitCode
|
|
}
|
|
catch {
|
|
$errcode=1
|
|
}
|
|
finally {
|
|
if ($errcode -ne 0) {
|
|
if ($retry -eq 0) {
|
|
$host.SetShouldExit($LastExitCode)
|
|
} else {
|
|
echo "Remove all entries in build directory"
|
|
rm -r -fo *
|
|
cmake_configure 0
|
|
}
|
|
}
|
|
}
|
|
}
|
|
cmake_configure 1
|
|
|
|
try {
|
|
cmake --build . -j $EVENT_BUILD_PARALLEL -- /nologo /verbosity:minimal
|
|
if ($LastExitCode -ne 0) { $host.SetShouldExit($LastExitCode) }
|
|
|
|
if ("${{ matrix.EVENT_MATRIX }}" -eq "TEST_EXPORT_STATIC") {
|
|
python ../test-export/test-export.py static
|
|
}
|
|
elseif ("${{ matrix.EVENT_MATRIX }}" -eq "TEST_EXPORT_SHARED") {
|
|
python ../test-export/test-export.py shared
|
|
}
|
|
else {
|
|
ctest --output-on-failure -j $EVENT_TESTS_PARALLEL
|
|
if ($LastExitCode -ne 0) { $host.SetShouldExit($LastExitCode) }
|
|
}
|
|
} catch {
|
|
$host.SetShouldExit($LastExitCode)
|
|
}
|
|
|
|
- uses: actions/upload-artifact@v1
|
|
if: failure()
|
|
with:
|
|
name: ${{ matrix.os }}-${{ matrix.EVENT_MATRIX }}-build
|
|
path: build
|