name: rustls-ffi permissions: contents: read on: [push, pull_request] jobs: build: name: Build+test runs-on: ${{ matrix.os }} strategy: matrix: # test a bunch of toolchains on ubuntu cc: [clang, gcc] rust: - stable - beta - nightly - 1.57.0 # MSRV - keep in sync with what rustls considers MSRV os: [ubuntu-18.04] # but only stable on macos/windows (slower platforms) include: - os: macos-latest cc: clang rust: stable steps: - name: Checkout sources uses: actions/checkout@v2 with: persist-credentials: false - name: Install ${{ matrix.rust }} toolchain uses: actions-rs/toolchain@v1 with: toolchain: ${{ matrix.rust }} override: true - env: CARGO_UNSTABLE_HTTP_REGISTRY: true run: make CC=${{ matrix.cc }} PROFILE=release test valgrind: name: Valgrind runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 with: persist-credentials: false - name: Install valgrind run: sudo apt-get update && sudo apt-get install -y valgrind - run: export VALGRIND="valgrind -q" - run: make test test-windows: name: Windows runs-on: windows-latest steps: - uses: actions/checkout@v2 with: persist-credentials: false - name: Setup PATH for CL.EXE uses: ilammy/msvc-dev-cmd@v1 # Remove link.exe from non-MSVC packages that interferes with MSVC link - run: rm "C:\Program Files\Git\usr\bin\link.exe" - run: rm "C:\msys64\usr\bin\link.exe" - run: make -f Makefile.Windows test-windows-cmake-debug: name: Windows CMake, Debug configuration runs-on: windows-latest steps: - uses: actions/checkout@v2 with: persist-credentials: false - name: Configure CMake run: cmake -S . -B build - name: Build, debug configuration run: cmake --build build --config Debug - name: Client-server test, debug run: python tests/client-server.py build/tests/Debug/client.exe build/tests/Debug/server.exe - name: Check static library list run: python tests/verify-static-libraries.py test-windows-cmake-release: name: Windows CMake, Release configuration runs-on: windows-latest steps: - uses: actions/checkout@v2 with: persist-credentials: false - name: Configure CMake run: cmake -S . -B build - name: Build, release configuration run: cmake --build build --config Release - name: Client-server test, release run: python tests/client-server.py build/tests/Release/client.exe build/tests/Release/server.exe ensure-header-updated: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 with: persist-credentials: false - run: touch src/lib.rs - run: make src/rustls.h - run: git diff --exit-code docs: name: Check for documentation errors runs-on: ubuntu-18.04 steps: - name: Checkout sources uses: actions/checkout@v2 with: persist-credentials: false - name: Install rust toolchain uses: actions-rs/toolchain@v1 with: toolchain: nightly override: true default: true - name: cargo doc (all features) run: cargo doc --all-features --no-deps --workspace env: RUSTDOCFLAGS: -Dwarnings minver: name: Check minimum versions runs-on: ubuntu-18.04 steps: - name: Checkout sources uses: actions/checkout@v2 with: persist-credentials: false - name: Install rust toolchain uses: actions-rs/toolchain@v1 with: toolchain: nightly override: true default: true - name: cargo test (debug; all features; -Z minimal-versions) run: cargo -Z minimal-versions test --all-features format: name: Format runs-on: ubuntu-latest steps: - name: Checkout sources uses: actions/checkout@v2 with: persist-credentials: false - name: Install rust toolchain uses: actions-rs/toolchain@v1 with: toolchain: 1.67.1 override: true default: true components: rustfmt - name: Check formatting uses: actions-rs/cargo@v1 with: command: fmt args: --all -- --check clippy: name: Clippy runs-on: ubuntu-latest steps: - name: Checkout sources uses: actions/checkout@v2 with: persist-credentials: false - name: Install rust toolchain uses: actions-rs/toolchain@v1 with: toolchain: 1.67.1 override: true default: true components: clippy - name: Check formatting uses: actions-rs/cargo@v1 with: command: clippy args: --workspace -- -D warnings clippy-nightly-optional: name: Clippy nightly (optional) runs-on: ubuntu-latest steps: - name: Checkout sources uses: actions/checkout@v2 with: persist-credentials: false - name: Install rust toolchain uses: actions-rs/toolchain@v1 with: toolchain: nightly override: true default: true components: clippy - name: Check formatting uses: actions-rs/cargo@v1 with: command: clippy args: --workspace -- -D warnings miri: name: Miri runs-on: ubuntu-latest steps: - name: Checkout sources uses: actions/checkout@v2 with: persist-credentials: false - name: Install nightly Rust uses: actions-rs/toolchain@v1 with: toolchain: nightly profile: minimal override: true - run: rustup override set "nightly-$(curl -s https://rust-lang.github.io/rustup-components-history/x86_64-unknown-linux-gnu/miri)" - run: rustup component add miri - run: cargo miri test