--- name: Test on: pull_request: workflow_dispatch: merge_group: env: TWITCH_PUBSUB_SERVER_IMAGE: ghcr.io/chatterino/twitch-pubsub-server-test:v1.0.6 QT_QPA_PLATFORM: minimal concurrency: group: test-${{ github.ref }} cancel-in-progress: true jobs: test: runs-on: ${{ matrix.os }} strategy: matrix: include: - os: "ubuntu-22.04" qt-version: "5.15.2" - os: "ubuntu-22.04" qt-version: "5.12.12" - os: "ubuntu-22.04" qt-version: "6.2.4" fail-fast: false env: C2_BUILD_WITH_QT6: ${{ startsWith(matrix.qt-version, '6.') && 'ON' || 'OFF' }} QT_MODULES: ${{ startsWith(matrix.qt-version, '6.') && 'qt5compat qtimageformats' || '' }} steps: - uses: actions/checkout@v4 with: submodules: recursive - name: Install Qt uses: jurplel/install-qt-action@v3.3.0 with: cache: true cache-key-prefix: ${{ runner.os }}-QtCache-${{ matrix.qt-version }}-v2 modules: ${{ env.QT_MODULES }} version: ${{ matrix.qt-version }} - name: Apply Qt patches (Ubuntu) if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.qt-version, '5.') run: | patch "$Qt5_DIR/include/QtConcurrent/qtconcurrentthreadengine.h" .patches/qt5-on-newer-gcc.patch shell: bash # LINUX - name: Install dependencies (Ubuntu) if: startsWith(matrix.os, 'ubuntu') run: | sudo apt-get update sudo apt-get -y install \ cmake \ rapidjson-dev \ libssl-dev \ libboost-dev \ libboost-system-dev \ libboost-filesystem-dev \ libpulse-dev \ libxkbcommon-x11-0 \ libgstreamer-plugins-base1.0-0 \ build-essential \ libgl1-mesa-dev \ libxcb-icccm4 \ libxcb-image0 \ libxcb-keysyms1 \ libxcb-render-util0 \ libxcb-xinerama0 - name: Create build directory (Ubuntu) if: startsWith(matrix.os, 'ubuntu') run: | mkdir build-test shell: bash - name: Build (Ubuntu) if: startsWith(matrix.os, 'ubuntu') run: | cmake \ -DBUILD_TESTS=On \ -DBUILD_APP=OFF \ -DBUILD_WITH_QT6="$C2_BUILD_WITH_QT6" \ .. cmake --build . working-directory: build-test shell: bash - name: Test (Ubuntu) if: startsWith(matrix.os, 'ubuntu') timeout-minutes: 30 run: | docker pull kennethreitz/httpbin docker pull ${{ env.TWITCH_PUBSUB_SERVER_IMAGE }} docker run --network=host --detach ${{ env.TWITCH_PUBSUB_SERVER_IMAGE }} docker run -p 9051:80 --detach kennethreitz/httpbin ./bin/chatterino-test || ./bin/chatterino-test || ./bin/chatterino-test working-directory: build-test shell: bash