
# (C) 2023 Jack Lloyd
# (C) 2023 Fabian Albert, Rohde & Schwarz Cybersecurity
#
# Botan is released under the Simplified BSD License (see license.txt)

name: nightly

permissions:
  contents: read
  # implicitly all other scopes not listed become none

on:
  schedule:
    # runs every day at 3:23 AM UTC
    - cron:  '23 3 * * *'

jobs:
  clang_tidy:
    name: "clang-tidy"

    runs-on: ubuntu-22.04

    steps:
      - uses: actions/checkout@v3

      - name: Setup Build Agent
        uses: ./.github/actions/setup-build-agent
        with:
          target: clang-tidy
          cache-key: linux-x86_64-clang-tidy

      - name: Install Boost
        run: sudo apt-get -qq install libboost-dev

      - name: Configure Build
        run: python3 ./configure.py --cc=clang --build-targets=shared,cli,tests,examples,bogo_shim --build-fuzzers=test --with-boost --with-sqlite --with-zlib --with-lzma --with-bzip2

      - name: Run Clang Tidy
        run: python3 ./src/scripts/dev_tools/run_clang_tidy.py --verbose

  valgrind:
    name: "valgrind"

    runs-on: ubuntu-22.04

    steps:
      - uses: actions/checkout@v3

      - name: Setup Build Agent
        uses: ./.github/actions/setup-build-agent
        with:
          target: valgrind-full
          cache-key: linux-x86_64-valgrind-full

      - name: Valgrind Checks
        run: python3 ./src/scripts/ci_build.py --cc=gcc --make-tool=make valgrind-full

  tls_anvil_server_test:
    name: "TLS-Anvil (server)"

    runs-on: ubuntu-22.04

    steps:
      - name: Fetch Botan Repository
        uses: actions/checkout@v3

      - name: Setup Build Agent
        uses: ./.github/actions/setup-build-agent
        with:
          target: tlsanvil
          cache-key: linux-x86_64-tlsanvil

      - name: Build and Test Botan Server with TLS-Anvil
        run: >
          python3 ./src/scripts/ci/ci_tlsanvil_test.py
          --botan-dir .
          --test-target server
          --parallel $(nproc)

      - uses: actions/upload-artifact@v3
        with:
          name: tls-anvil-server-test-results
          path: |
            ./TestSuiteResults/
            ./logs/

      - name: Check TLS-Anvil Test Results
        run: python3 ./src/scripts/ci/ci_tlsanvil_check.py --verbose ./TestSuiteResults
