--- name: Test Ubuntu on: pull_request: workflow_dispatch: merge_group: push: branches: - master - main env: TWITCH_PUBSUB_SERVER_TAG: v1.0.11 HTTPBOX_TAG: v0.2.1 QT_QPA_PLATFORM: minimal concurrency: group: test-${{ github.ref }} cancel-in-progress: true jobs: test: name: "Test ${{ matrix.os }}, Qt ${{ matrix.qt-version }}" runs-on: ubuntu-latest container: ${{ matrix.container }} strategy: matrix: include: - os: "ubuntu-22.04" container: ghcr.io/chatterino/chatterino2-build-ubuntu-22.04:latest qt-version: 6.7.1 fail-fast: false steps: - uses: actions/checkout@v4 with: submodules: recursive - name: Create build directory (Ubuntu) run: mkdir build-test - name: Install dependencies run: | sudo apt update sudo DEBIAN_FRONTEND=noninteractive apt -y --no-install-recommends install \ libbenchmark-dev gcovr gnupg - name: Install httpbox run: | curl -L -o httpbox.tar.xz "https://github.com/Chatterino/httpbox/releases/download/${{ env.HTTPBOX_TAG }}/httpbox-x86_64-unknown-linux-gnu.tar.xz" tar -xJf httpbox.tar.xz mv ./httpbox-x86_64-unknown-linux-gnu/httpbox /usr/local/bin working-directory: /tmp - name: Build (Ubuntu) run: | cmake \ -DBUILD_TESTS=On \ -DBUILD_BENCHMARKS=On \ -DBUILD_APP=OFF \ -DCMAKE_PREFIX_PATH="$Qt6_DIR/lib/cmake" \ -DCHATTERINO_STATIC_QT_BUILD=On \ -DCHATTERINO_GENERATE_COVERAGE=On \ -DCMAKE_BUILD_TYPE=Debug \ .. cmake --build . -j $(nproc) working-directory: build-test - name: Download and extract Twitch PubSub Server Test run: | mkdir pubsub-server-test curl -L -o pubsub-server.tar.gz "https://github.com/Chatterino/twitch-pubsub-server-test/releases/download/${{ env.TWITCH_PUBSUB_SERVER_TAG }}/server-${{ env.TWITCH_PUBSUB_SERVER_TAG }}-linux-amd64.tar.gz" tar -xzf pubsub-server.tar.gz -C pubsub-server-test rm pubsub-server.tar.gz cd pubsub-server-test cd .. - name: Test timeout-minutes: 30 run: | httpbox --port 9051 & cd ../pubsub-server-test ./server 127.0.0.1:9050 127.0.0.1:9052 & cd ../build-test ctest --repeat until-pass:4 --output-on-failure working-directory: build-test - name: Run benchmark timeout-minutes: 2 run: | ./bin/chatterino-benchmark --benchmark_min_time=1x working-directory: build-test - name: Upload coverage reports to Codecov uses: codecov/codecov-action@v5.4.3 with: token: ${{ secrets.CODECOV_TOKEN }} plugins: gcov fail_ci_if_error: true verbose: true