Repository navigation
added locate openssl step #20
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Debug CI | |
| on: | |
| push: | |
| branches: | |
| - '**' | |
| permissions: | |
| contents: read | |
| env: | |
| OPENSSL_VERSION: 3.5.6 | |
| jobs: | |
| static-analysis: | |
| name: Static Analysis (Linux) | |
| runs-on: ubuntu-latest | |
| container: | |
| image: debian:trixie | |
| steps: | |
| - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
| - name: Install analysis dependencies | |
| run: | | |
| apt-get update | |
| apt-get install -y cmake ninja-build libssl-dev zlib1g-dev libzstd-dev clang lld llvm cppcheck clang-tidy | |
| - name: Configure compile database | |
| env: | |
| CC: clang | |
| CXX: clang++ | |
| run: | | |
| cmake -S . -B build -G Ninja \ | |
| -DCMAKE_BUILD_TYPE=Debug \ | |
| -DBYEBYEVPN_ENABLE_TESTS=OFF \ | |
| -DBYEBYEVPN_WARNINGS_AS_ERRORS=ON | |
| - name: Run cppcheck | |
| run: | | |
| cppcheck --std=c++20 --enable=warning,style,performance,portability \ | |
| --suppress=normalCheckLevelMaxBranches \ | |
| --error-exitcode=1 --inline-suppr --quiet src | |
| - name: Run clang-tidy | |
| run: | | |
| find src -name '*.cpp' -print0 | xargs -0 -r clang-tidy -p build | |
| debug-build-linux: | |
| name: Debug Build Artifacts (Linux) | |
| needs: [static-analysis] | |
| runs-on: ubuntu-latest | |
| container: | |
| image: debian:trixie | |
| steps: | |
| - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
| - name: Install dependencies | |
| run: | | |
| apt-get update | |
| apt-get install -y cmake ninja-build libssl-dev zlib1g-dev libzstd-dev clang lld llvm | |
| - name: Configure CMake | |
| env: | |
| CC: clang | |
| CXX: clang++ | |
| run: | | |
| cmake -S . -B build -G Ninja \ | |
| -DCMAKE_BUILD_TYPE=Debug \ | |
| -DBYEBYEVPN_ENABLE_TESTS=OFF \ | |
| -DBYEBYEVPN_WARNINGS_AS_ERRORS=ON | |
| - name: Build | |
| run: cmake --build build --parallel | |
| - name: Prepare artifacts | |
| run: | | |
| mkdir -p staging | |
| cp build/byebyevpn "staging/byebyevpn-${{ github.ref_name }}-linux-amd64" | |
| - name: Upload debug artifacts | |
| uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1 | |
| with: | |
| name: byebyevpn-${{ github.ref_name }}-linux-amd64 | |
| path: staging/* | |
| retention-days: 7 | |
| debug-build-windows: | |
| name: Debug Build Artifacts (Windows) | |
| needs: [static-analysis] | |
| runs-on: windows-latest | |
| steps: | |
| - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
| - name: Install OpenSSL | |
| run: choco install openssl -y --no-progress | |
| - name: Locate OpenSSL | |
| id: openssl | |
| shell: pwsh | |
| run: | | |
| $dir = (Get-ChildItem "C:\Program Files\OpenSSL*" -Directory | Sort-Object Name -Descending | Select-Object -First 1).FullName | |
| if (-not $dir) { throw "OpenSSL installation directory not found" } | |
| Write-Host "Found OpenSSL at: $dir" | |
| echo "root=$dir" >> $env:GITHUB_OUTPUT | |
| - name: Configure CMake | |
| env: | |
| CC: clang | |
| CXX: clang++ | |
| run: cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Debug -DBYEBYEVPN_ENABLE_TESTS=OFF -DBYEBYEVPN_WARNINGS_AS_ERRORS=ON -DOPENSSL_ROOT_DIR="${{ steps.openssl.outputs.root }}" | |
| - name: Build | |
| run: cmake --build build --parallel | |
| - name: Prepare artifacts | |
| shell: cmd | |
| run: | | |
| if not exist staging mkdir staging | |
| copy build\byebyevpn.exe "staging\byebyevpn-${{ github.ref_name }}-windows-x64.exe" | |
| - name: Upload debug artifacts | |
| uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1 | |
| with: | |
| name: byebyevpn-${{ github.ref_name }}-windows-x64.exe | |
| path: staging/* | |
| retention-days: 7 | |
| coverage: | |
| name: Coverage (Linux) | |
| needs: [static-analysis] | |
| runs-on: ubuntu-latest | |
| container: | |
| image: debian:trixie | |
| steps: | |
| - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
| - name: Install dependencies | |
| run: | | |
| apt-get update | |
| apt-get install -y cmake ninja-build libssl-dev zlib1g-dev libzstd-dev clang lld llvm | |
| - name: Configure CMake (coverage) | |
| env: | |
| CC: clang | |
| CXX: clang++ | |
| run: | | |
| cmake -S . -B build-cov -G Ninja \ | |
| -DCMAKE_BUILD_TYPE=Debug \ | |
| -DBYEBYEVPN_ENABLE_TESTS=ON \ | |
| -DBYEBYEVPN_WARNINGS_AS_ERRORS=ON \ | |
| -DCMAKE_CXX_FLAGS="-fprofile-instr-generate -fcoverage-mapping" \ | |
| -DCMAKE_EXE_LINKER_FLAGS="-fprofile-instr-generate" | |
| - name: Build (coverage) | |
| run: cmake --build build-cov --parallel | |
| - name: Run unit tests (coverage) | |
| run: | | |
| mkdir -p build-cov/profiles | |
| export LLVM_PROFILE_FILE="$GITHUB_WORKSPACE/build-cov/profiles/byebyevpn_tests-%p.profraw" | |
| ctest --test-dir build-cov --output-on-failure | |
| - name: Capture coverage | |
| run: | | |
| llvm-profdata merge -sparse build-cov/profiles/*.profraw -o build-cov/coverage.profdata | |
| llvm-cov export -format=lcov \ | |
| -instr-profile=build-cov/coverage.profdata \ | |
| -ignore-filename-regex='.*/(_deps|tests|build-cov)/.*' \ | |
| build-cov/tests/byebyevpn_tests > coverage.info | |
| llvm-cov show \ | |
| -format=html \ | |
| -output-dir=coverage-html \ | |
| -instr-profile=build-cov/coverage.profdata \ | |
| -ignore-filename-regex='.*/(_deps|tests|build-cov)/.*' \ | |
| build-cov/tests/byebyevpn_tests | |
| - name: Upload coverage artifacts | |
| uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1 | |
| with: | |
| name: coverage-linux | |
| path: | | |
| coverage.info | |
| coverage-html | |
| retention-days: 7 | |
| sanitizer-asan-ubsan: | |
| name: Sanitizers ASan+UBSan (Linux) | |
| needs: [static-analysis] | |
| runs-on: ubuntu-latest | |
| container: | |
| image: ghcr.io/applone/sans:1.0.0 | |
| steps: | |
| - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
| - name: Build custom OpenSSL | |
| uses: ./.github/actions/build-custom-openssl | |
| with: | |
| openssl-version: ${{ env.OPENSSL_VERSION }} | |
| install-prefix: ${{ github.workspace }}/deps/openssl-asan-ubsan | |
| sanitizer-flags: '-fsanitize=address,undefined -fno-omit-frame-pointer' | |
| cache-key: openssl-${{ env.OPENSSL_VERSION }}-asan-ubsan-sans-1.0.0-${{ runner.os }} | |
| - name: Configure CMake (ASan+UBSan) | |
| env: | |
| CC: clang | |
| CXX: clang++ | |
| run: | | |
| LIBCXX_ROOT="/opt/libcxx_asan_ubsan" | |
| SAN_FLAGS="-fsanitize=address,undefined -fno-omit-frame-pointer" | |
| cmake -S . -B build-asan-ubsan -G Ninja \ | |
| -DCMAKE_BUILD_TYPE=Debug \ | |
| -DBYEBYEVPN_ENABLE_TESTS=ON \ | |
| -DBYEBYEVPN_ENABLE_ASAN=ON \ | |
| -DBYEBYEVPN_ENABLE_UBSAN=ON \ | |
| -DOPENSSL_ROOT_DIR="${{ github.workspace }}/deps/openssl-asan-ubsan" \ | |
| -DBYEBYEVPN_WARNINGS_AS_ERRORS=ON \ | |
| -DCMAKE_CXX_FLAGS="${SAN_FLAGS} -stdlib=libc++ -isystem ${LIBCXX_ROOT}/include/c++/v1" \ | |
| -DCMAKE_EXE_LINKER_FLAGS="${SAN_FLAGS} -stdlib=libc++ -L${LIBCXX_ROOT}/lib -Wl,-rpath,${LIBCXX_ROOT}/lib" | |
| - name: Build (ASan+UBSan) | |
| run: cmake --build build-asan-ubsan --parallel | |
| - name: Run unit tests (ASan+UBSan) | |
| run: | | |
| export LD_LIBRARY_PATH="/opt/libcxx_asan_ubsan/lib:${LD_LIBRARY_PATH:-}" | |
| ctest --test-dir build-asan-ubsan --output-on-failure | |
| sanitizer-tsan: | |
| name: Sanitizer TSan (Linux) | |
| needs: [static-analysis] | |
| runs-on: ubuntu-latest | |
| container: | |
| image: ghcr.io/applone/sans:1.0.0 | |
| steps: | |
| - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
| - name: Build custom OpenSSL | |
| uses: ./.github/actions/build-custom-openssl | |
| with: | |
| openssl-version: ${{ env.OPENSSL_VERSION }} | |
| install-prefix: ${{ github.workspace }}/deps/openssl-tsan | |
| sanitizer-flags: '-fsanitize=thread -fno-omit-frame-pointer' | |
| cache-key: openssl-${{ env.OPENSSL_VERSION }}-tsan-sans-1.0.0-${{ runner.os }} | |
| - name: Configure CMake (TSan) | |
| env: | |
| CC: clang | |
| CXX: clang++ | |
| run: | | |
| LIBCXX_ROOT="/opt/libcxx_tsan" | |
| SAN_FLAGS="-fsanitize=thread -fno-omit-frame-pointer" | |
| cmake -S . -B build-tsan -G Ninja \ | |
| -DCMAKE_BUILD_TYPE=Debug \ | |
| -DBYEBYEVPN_ENABLE_TESTS=ON \ | |
| -DBYEBYEVPN_ENABLE_TSAN=ON \ | |
| -DOPENSSL_ROOT_DIR="${{ github.workspace }}/deps/openssl-tsan" \ | |
| -DBYEBYEVPN_WARNINGS_AS_ERRORS=ON \ | |
| -DCMAKE_CXX_FLAGS="${SAN_FLAGS} -stdlib=libc++ -isystem ${LIBCXX_ROOT}/include/c++/v1" \ | |
| -DCMAKE_EXE_LINKER_FLAGS="${SAN_FLAGS} -stdlib=libc++ -L${LIBCXX_ROOT}/lib -Wl,-rpath,${LIBCXX_ROOT}/lib" | |
| - name: Build (TSan) | |
| run: cmake --build build-tsan --parallel | |
| - name: Run unit tests (TSan) | |
| run: | | |
| export LD_LIBRARY_PATH="/opt/libcxx_tsan/lib:${LD_LIBRARY_PATH:-}" | |
| ctest --test-dir build-tsan --output-on-failure | |
| sanitizer-msan: | |
| name: Sanitizer MSan (Linux) | |
| needs: [static-analysis] | |
| runs-on: ubuntu-latest | |
| container: | |
| image: ghcr.io/applone/sans:1.0.0 | |
| steps: | |
| - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
| - name: Build custom OpenSSL | |
| uses: ./.github/actions/build-custom-openssl | |
| with: | |
| openssl-version: ${{ env.OPENSSL_VERSION }} | |
| install-prefix: ${{ github.workspace }}/deps/openssl-msan | |
| sanitizer-flags: '-fsanitize=memory -fsanitize-memory-track-origins=2 -fno-omit-frame-pointer' | |
| cache-key: openssl-${{ env.OPENSSL_VERSION }}-msan-sans-1.0.0-${{ runner.os }} | |
| - name: Configure CMake (MSan) | |
| env: | |
| CC: clang | |
| CXX: clang++ | |
| run: | | |
| LIBCXX_ROOT="/opt/libcxx_msan" | |
| SAN_FLAGS="-fsanitize=memory -fsanitize-memory-track-origins=2 -fno-omit-frame-pointer" | |
| cmake -S . -B build-msan -G Ninja \ | |
| -DCMAKE_BUILD_TYPE=Debug \ | |
| -DBYEBYEVPN_ENABLE_TESTS=ON \ | |
| -DBYEBYEVPN_ENABLE_MSAN=ON \ | |
| -DOPENSSL_ROOT_DIR="${{ github.workspace }}/deps/openssl-msan" \ | |
| -DBYEBYEVPN_WARNINGS_AS_ERRORS=ON \ | |
| -DCMAKE_CXX_FLAGS="${SAN_FLAGS} -stdlib=libc++ -isystem ${LIBCXX_ROOT}/include/c++/v1" \ | |
| -DCMAKE_EXE_LINKER_FLAGS="${SAN_FLAGS} -stdlib=libc++ -L${LIBCXX_ROOT}/lib -Wl,-rpath,${LIBCXX_ROOT}/lib" | |
| - name: Build (MSan) | |
| run: cmake --build build-msan --parallel | |
| - name: Run unit tests (MSan) | |
| run: | | |
| export LD_LIBRARY_PATH="/opt/libcxx_msan/lib:${LD_LIBRARY_PATH:-}" | |
| ctest --test-dir build-msan --output-on-failure |