name: Linux CI

on:
  push:
    branches: ["unreal60_dev"]
  pull_request:
    branches: ["unreal60_dev"]

permissions:
  contents: read
  packages: read

env:
  NOSERVICES: 1
  RUNTESTFLAGS: "-slightlyfast"

jobs:
  build:
    runs-on: ubuntu-latest
    timeout-minutes: 30

    strategy:
      fail-fast: false
      matrix:
        compiler:
          - { c: gcc,   cpp: g++ }
          - { c: clang, cpp: clang++ }

    env:
      CC:  ${{ matrix.compiler.c }}
      CXX: ${{ matrix.compiler.cpp }}

    steps:
      - name: Checkout
        #uses: actions/checkout@v4
        #no, pin to v4.2.2 for security reasons:
        uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
        #and we don't need the credentials later..
        with:
          persist-credentials: false
          fetch-depth: 1

      - name: Install dependencies
        run: |
          sudo rm -f /var/lib/man-db/auto-update
          sudo apt-get update
          sudo apt-get install -y --no-install-recommends \
            build-essential pkg-config libssl-dev libpcre2-dev libargon2-dev \
            libsodium-dev libc-ares-dev libcurl4-openssl-dev libjansson-dev

      - name: Install python dependencies
        run: |
          python -m pip install --break-system-packages pyasyncore pyasynchat

      - name: Build
        run: extras/build-tests/nix/build

      - name: Run tests
        run: extras/build-tests/nix/run-tests
