Skip to content

[#508] Optimize read method in C++ Array wrapper #380

[#508] Optimize read method in C++ Array wrapper

[#508] Optimize read method in C++ Array wrapper #380

Workflow file for this run

name: Windows
on:
push:
branches: [ master, '*-ci' ]
pull_request:
branches: [ master ]
jobs:
build_windows:
runs-on: ${{matrix.os}}
strategy:
matrix:
os: ["windows-latest"]
python-version: ["3.8", "3.9", "3.10", "3.11"]
env:
CPPCHECK_HOME: "/c/Program Files/Cppcheck"
SPOTBUGS_HOME: "${{github.workspace}}/spotbugs-3.1.12"
PYLINT_ENABLED: 1
MYPY_ENABLED: 1
NU_HTML_VALIDATOR: "${{github.workspace}}/vnu-20.6.30/vnu.jar"
XMLLINT_ENABLED: 1
MINGW64_TOOLCHAIN_ROOT: "/c/ProgramData/chocolatey/lib/mingw/tools/install/mingw64"
MSVC_CMAKE_TOOLSET: "v141"
steps:
- name: Checkout
uses: actions/checkout@v3
with:
submodules: recursive
- name: Set up JDK 1.8
uses: actions/setup-java@v3
with:
distribution: temurin
java-version: 8
- name: Convert environment variables to POSIX paths
run: |
echo "SPOTBUGS_HOME=/${SPOTBUGS_HOME}" | sed -e 's/\\/\//g' -e 's/://' >> ${GITHUB_ENV}
echo "NU_HTML_VALIDATOR=/${NU_HTML_VALIDATOR}" | sed -e 's/\\/\//g' -e 's/://' >> ${GITHUB_ENV}
echo "JAVA_HOME=/${JAVA_HOME}" | sed -e 's/\\/\//g' -e 's/://' >> ${GITHUB_ENV}
shell: bash
- name: Set ANT variable
run: |
echo "ANT=/${ANT_HOME}/bin/ant" | sed -e 's/\\/\//g' -e 's/://' >> ${GITHUB_ENV}
shell: bash
- name: Set up Python ${{matrix.python-version}}
uses: actions/setup-python@v4
with:
python-version: ${{matrix.python-version}}
- name: Install Python dependencies
run: |
python -m pip install --upgrade pip
python -m pip install virtualenv
python -m pip install gcovr
- name: Set up MinGW
uses: egor-tensin/setup-mingw@v2
with:
platform: x64
version: 11.3.0
- name: Install dependecies
run: |
choco install wget
choco install graphviz
choco install zip
shell: bash
- name: Install specific version of C++ static code analysis tool (cppcheck)
run: choco install cppcheck --version=2.6
- name: Install specific version of Java static code analysis tool (spotbugs)
run: |
wget -P "${{github.workspace}}" https://repo.maven.apache.org/maven2/com/github/spotbugs/spotbugs/3.1.12/spotbugs-3.1.12.zip
unzip "${{github.workspace}}\spotbugs-3.1.12.zip"
- name: Install specific version of HTML validator (v.Nu)
run: |
wget -P "${{github.workspace}}" https://github.com/validator/validator/releases/download/20.6.30/vnu.jar_20.6.30.zip
unzip "${{github.workspace}}\vnu.jar_20.6.30.zip" -d "${{github.workspace}}"
mv "${{github.workspace}}\dist" "${{github.workspace}}\vnu-20.6.30"
- name: Install XML validator (xmllint)
run: choco install xsltproc
- name: Build Zserio
run: scripts/build.sh all-windows64-mingw cpp_rt-windows64-msvc
shell: bash
env:
CMAKE_EXTRA_ARGS: "-DZSERIO_ENABLE_WERROR=1 -DCMAKE_BUILD_TYPE=Release"
- name: Build Zserio C++ runtime (Debug Build)
run: scripts/build.sh cpp_rt-windows64-mingw cpp_rt-windows64-msvc
shell: bash
env:
CMAKE_EXTRA_ARGS: "-DZSERIO_ENABLE_WERROR=1 -DCMAKE_BUILD_TYPE=Debug"
- name: Pack Zserio release
run: scripts/release.sh
shell: bash
- name: Run Zserio tests
# -DZSERIO_ENABLE_WERROR=1 fails for mingw because of false positive warning
run: |
scripts/test.sh all-windows64-mingw cpp-windows64-msvc
shell: bash
env:
CMAKE_EXTRA_ARGS: "-DCMAKE_BUILD_TYPE=Release"
# Zserio C++ tests (Debug Build) has been skipped because of 6-hours run limit
- name: Run Zserio integration tests for repeated generation
run: scripts/test_gen.sh all-windows64-mingw cpp-windows64-msvc
shell: bash
- name: Run Zserio API compatibility checks
run: scripts/test_compat_api.sh java python cpp-windows64-msvc
shell: bash
env:
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
CPPCHECK_HOME: ""
SPOTBUGS_HOME: ""
PYLINT_ENABLED: 0
MYPY_ENABLED: 0
- name: Run Zserio performance tests
run: |
scripts/test_perf.sh cpp-windows64-mingw cpp-windows64-msvc python python-cpp java \
--source-dir test/others/gif/zs --source gif.zs \
--blob-name gif.GifFile --blob-file test/data/others/gif/1pix.gif \
--num-iterations 1000 --test-config READ_WRITE
shell: bash
- name: Run Zserio benchmarks
run: |
scripts/benchmark.sh cpp-windows64-mingw cpp-windows64-msvc python python-cpp java \
--num-iterations 1
shell: bash
- name: Archive Zserio release artifacts
uses: actions/upload-artifact@v3
with:
name: zserio-release-${{matrix.os}}-${{matrix.python-version}}
path: release-*
- name: Archive Zserio build artifacts
uses: actions/upload-artifact@v3
with:
name: zserio-build-${{matrix.os}}-${{matrix.python-version}}
path: |
build/runtime_libs/python/zserio_cpp/**/*.pyd
build/runtime_libs/cpp/**/runtime/*.a
build/runtime_libs/cpp/**/runtime/**/*.lib