Skip to content

Add HTTP server node with HTTP/2 part conceptually finished. #403

Add HTTP server node with HTTP/2 part conceptually finished.

Add HTTP server node with HTTP/2 part conceptually finished. #403

Workflow file for this run

name: CI
permissions:
contents: write
on: [push, pull_request]
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.ref }}
cancel-in-progress: true
env:
cpm-path: .cpm
cpm-key: waterwall-1.1.0-cpm
CCACHE_COMPILERCHECK: content
CCACHE_BASEDIR: ${{ github.workspace }}
CCACHE_NOHASHDIR: 1
CCACHE_SLOPPINESS: time_macros,file_macro,pch_defines,include_file_mtime,include_file_ctime
CCACHE_COMPRESS: 1
CCACHE_MAXSIZE: 20G
CCACHE_PCH_EXTSUM: 1
CCACHE_DEPEND: 1
CCACHE_DIR: ${{ github.workspace }}/.ccache
jobs:
android:
strategy:
fail-fast: false
matrix:
include:
- preset: android-arm32
arch: armeabi-v7a
- preset: android-arm64
arch: arm64-v8a
- preset: android-x86
arch: x86
- preset: android-x86-64
arch: x86-64
name: android-${{ matrix.arch }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/cache@v4
with:
path: |
${{ env.cpm-path }}
${{ github.workspace }}/.ccache
key: ${{ env.cpm-key }}-android-${{ matrix.arch }}-${{ hashFiles('**/CMakeLists.txt', '**/*.cmake') }}
restore-keys: |
${{ env.cpm-key }}-android-${{ matrix.arch }}-
${{ env.cpm-key }}-android-
${{ env.cpm-key }}-
enableCrossOsArchive: false
- name: Install dependencies on Linux
if: runner.os == 'Linux'
run: |
sudo apt-get update
sudo apt-get install -y ninja-build ccache
- name: Reset ccache statistics
run: ccache --zero-stats
- name: Configure CMake
run: >
cmake --preset ${{ matrix.preset }}
-DCPM_SOURCE_CACHE="${{ env.cpm-path }}"
- name: Build
run: cmake --build --preset ${{ matrix.preset }}
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: Waterwall-android-${{ matrix.arch }}
path: ${{ github.workspace }}/build/${{ matrix.preset }}/Release/
- name: Show ccache statistics
run: ccache -sv
bsd:
strategy:
fail-fast: false
matrix:
# preset: [freebsd, netbsd, openbsd]
# arch: [arm64, x86_64]
names: [freebsd-x86-64]
preset: [freebsd]
arch: [x86_64]
include:
- preset: freebsd
version: "14.2"
install: sudo pkg install -y cmake perl5 git ninja ccache
# - preset: netbsd
# version: "10.1"
# install: sudo pkgin -y install cmake perl git ninja ccache
# - preset: openbsd
# version: "7.6"
# install: sudo pkg_add cmake git ninja ccache
name: ${{ matrix.names }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/cache@v4
with:
path: |
${{ env.cpm-path }}
${{ github.workspace }}/.ccache
key: ${{ env.cpm-key }}-bsd-${{ matrix.names }}-${{ hashFiles('**/CMakeLists.txt', '**/*.cmake') }}
restore-keys: |
${{ env.cpm-key }}-bsd-${{ matrix.names }}-
${{ env.cpm-key }}-bsd-
${{ env.cpm-key }}-
enableCrossOsArchive: false
- uses: cross-platform-actions/action@master
with:
operating_system: ${{ matrix.preset }}
architecture: ${{ matrix.arch }}
version: ${{ matrix.version }}
run: |
${{ matrix.install }}
cmake -B build -G Ninja \
-DCPM_SOURCE_CACHE=${{ env.cpm-path }} \
-DOPENSSL_CONFIGURE_VERBOSE=ON
- uses: cross-platform-actions/action@master
with:
operating_system: ${{ matrix.preset }}
architecture: ${{ matrix.arch }}
version: ${{ matrix.version }}
run: cmake --build build
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: Waterwall-${{ matrix.names }}
path: ${{ github.workspace }}/build/Waterwall
ios:
strategy:
fail-fast: false
matrix:
include:
- preset: ios
- preset: ios_sim
name: ${{ matrix.preset }}
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- uses: actions/cache@v4
with:
path: |
${{ env.cpm-path }}
${{ github.workspace }}/.ccache
key: ${{ env.cpm-key }}-ios-${{ matrix.preset }}-${{ hashFiles('**/CMakeLists.txt', '**/*.cmake') }}
restore-keys: |
${{ env.cpm-key }}-ios-${{ matrix.preset }}-
${{ env.cpm-key }}-ios-
${{ env.cpm-key }}-
enableCrossOsArchive: false
- name: Install dependencies on macOS
run: |
brew update
brew install ccache
- name: Reset ccache statistics
run: ccache --zero-stats
- name: Configure CMake
run: >
cmake --preset ${{ matrix.preset }}
-DCPM_SOURCE_CACHE="${{ env.cpm-path }}"
- name: Build
run: cmake --build --preset ${{ matrix.preset }}
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: Waterwall_${{ matrix.preset }}
path: ${{ github.workspace }}/build/${{ matrix.preset }}/Release/
- name: Show ccache statistics
run: ccache -sv
linux:
strategy:
fail-fast: false
matrix:
include:
- preset: linux-gcc-x64
- preset: linux-clang-x64
- preset: linux-gcc-x64-old-cpu
- preset: linux-gcc-arm64
- preset: linux-gcc-arm64-old-cpu
- preset: linux-clang-avx512f-x64
name: ${{ matrix.preset }}
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- uses: actions/cache@v4
with:
path: |
${{ env.cpm-path }}
${{ github.workspace }}/.ccache
key: ${{ env.cpm-key }}-linux-${{ matrix.preset }}-${{ hashFiles('**/CMakeLists.txt', '**/*.cmake') }}
restore-keys: |
${{ env.cpm-key }}-linux-${{ matrix.preset }}-
${{ env.cpm-key }}-linux-
${{ env.cpm-key }}-
enableCrossOsArchive: false
- name: Install dependencies on Linux
if: runner.os == 'Linux'
run: |
sudo apt-get update
sudo apt-get install -y ninja-build ccache
- name: Install cross-compiler
if: matrix.preset == 'linux-gcc-arm64' || matrix.preset == 'linux-gcc-arm64-old-cpu'
run: |
sudo apt-get install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu
- name: Reset ccache statistics
run: ccache --zero-stats
- name: Configure CMake
run: >
cmake --preset ${{ matrix.preset }}
-DCPM_SOURCE_CACHE="${{ env.cpm-path }}"
- name: Build
run: cmake --build --preset ${{ matrix.preset }}
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: Waterwall-${{ matrix.preset }}
path: ${{ github.workspace }}/build/${{ matrix.preset }}/Release/
- name: Show ccache statistics
run: ccache -sv
macos:
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- uses: actions/cache@v4
with:
path: |
${{ env.cpm-path }}
${{ github.workspace }}/.ccache
key: ${{ env.cpm-key }}-macos-${{ hashFiles('**/CMakeLists.txt', '**/*.cmake') }}
restore-keys: |
${{ env.cpm-key }}-macos-
${{ env.cpm-key }}-
enableCrossOsArchive: false
- name: Install dependencies on macOS
if: runner.os == 'macOS'
run: |
brew update
brew install ccache
- name: Reset ccache statistics
run: ccache --zero-stats
- name: Configure CMake
run: >
cmake --preset macos
-DCPM_SOURCE_CACHE="${{ env.cpm-path }}"
- name: Build
run: cmake --build --preset macos
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: Waterwall_${{ runner.os }}
path: ${{ github.workspace }}/build/macos/Release/
- name: Show ccache statistics
run: ccache -sv
msys2:
strategy:
fail-fast: false
matrix:
include:
- name: windows-clang-x64
preset: windows-msys-clang
msys: CLANG64
- name: windows-mingw-x32
preset: windows-mingw
msys: MINGW32
- name: windows-mingw-x64
preset: windows-mingw
msys: MINGW64
- name: windows-mingw-ucrt-x64
preset: windows-mingw
msys: UCRT64
name: ${{ matrix.name }}
runs-on: windows-latest
defaults:
run:
shell: msys2 {0}
steps:
- uses: actions/checkout@v4
- uses: actions/cache@v4
with:
path: |
${{ env.cpm-path }}
${{ github.workspace }}/.ccache
key: ${{ env.cpm-key }}-msys2-${{ matrix.name }}-${{ hashFiles('**/CMakeLists.txt', '**/*.cmake') }}
restore-keys: |
${{ env.cpm-key }}-msys2-${{ matrix.name }}-
${{ env.cpm-key }}-msys2-
${{ env.cpm-key }}-
enableCrossOsArchive: false
- name: Install dependencies on Windows
if: runner.os == 'Windows'
shell: bash
run: |
choco install -y jom nasm ccache
echo "PATH=$ENV:PATH;C:\Program Files\NASM" >> $ENV:GITHUB_ENV
- uses: msys2/setup-msys2@v2
with:
msystem: ${{ matrix.msys }}
update: true
pacboy: >-
ccache:p
cmake:p
gcc:p
make:p
ninja:p
- name: Reset ccache statistics
run: ccache --zero-stats
- name: Configure CMake
shell: msys2 {0}
run: >
cmake --preset ${{ matrix.preset }}
-DCPM_SOURCE_CACHE="${{ env.cpm-path }}"
-DDISABLE_PRECOMPILED_HEADERS=ON
- name: Build
run: cmake --build --preset ${{ matrix.preset }}
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: Waterwall-${{ matrix.name }}
path: ${{ github.workspace }}/build/${{ matrix.preset }}/Release/
- name: Show ccache statistics
run: ccache -sv
windows:
strategy:
fail-fast: false
matrix:
include:
- preset: windows-arm64
- preset: windows-x86
- preset: windows-x86-64
name: ${{ matrix.preset }}
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- uses: actions/cache@v4
with:
path: |
${{ env.cpm-path }}
${{ github.workspace }}/.ccache
key: ${{ env.cpm-key }}-windows-${{ matrix.preset }}-${{ hashFiles('**/CMakeLists.txt', '**/*.cmake') }}
restore-keys: |
${{ env.cpm-key }}-windows-${{ matrix.preset }}-
${{ env.cpm-key }}-windows-
${{ env.cpm-key }}-
enableCrossOsArchive: false
- name: Install dependencies on Windows
if: runner.os == 'Windows'
run: |
choco install -y jom nasm ccache
echo "PATH=$ENV:PATH;C:\Program Files\NASM" >> $ENV:GITHUB_ENV
- name: Reset ccache statistics
run: ccache --zero-stats
- name: Configure CMake
run: >
cmake --preset ${{ matrix.preset }}
-DCPM_SOURCE_CACHE="${{ env.cpm-path }}"
# -DOPENSSL_CONFIGURE_OPTIONS=no-asm
- name: Build
run: cmake --build --preset ${{ matrix.preset }} --parallel
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: Waterwall-${{ matrix.preset }}
path: ${{ github.workspace }}/build/${{ matrix.preset }}/Release/
- name: Show ccache statistics
run: ccache -sv
release:
needs:
# - android
# - bsd
# - ios
- linux
# - macos
- msys2
- windows
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Configure CMake
run: |
cmake -B build
- name: Download artifacts
uses: actions/download-artifact@v4
with:
path: downloaded_artifacts
- name: Extract version
run: |
VERSION=$(cat ww/cmake/version.txt)
echo "Project version: $VERSION"
echo "VERSION=$VERSION" >> $GITHUB_ENV
- name: Check if tag exists
id: check_tag
run: |
git fetch --tags
if git rev-parse "v${{ env.VERSION }}" >/dev/null 2>&1; then
echo "exists=true" >> $GITHUB_OUTPUT
else
echo "exists=false" >> $GITHUB_OUTPUT
fi
- name: Create Git Tag
if: steps.check_tag.outputs.exists == 'false'
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git tag -a "v${{ env.VERSION }}" -m "Release v${{ env.VERSION }}"
git push origin "v${{ env.VERSION }}"
- name: Zip release files
if: steps.check_tag.outputs.exists == 'false'
run: |
ls -ln downloaded_artifacts
mkdir -p zipped_artifacts
for dir in downloaded_artifacts/*; do
if [ -d "$dir" ]; then
base=$(basename "$dir")
cd "$dir" && zip -r "../../zipped_artifacts/${base}.zip" .
cd ../..
fi
done
- name: Create GitHub Release
if: steps.check_tag.outputs.exists == 'false'
uses: softprops/action-gh-release@v2
with:
tag_name: v${{ env.VERSION }}
files: |
zipped_artifacts/*.zip