mirror of
https://github.com/scp-fs2open/fs2open.github.com.git
synced 2026-11-09 13:01:29 -10:00
219 lines
7.5 KiB
YAML
219 lines
7.5 KiB
YAML
name: Check a pull request
|
|
|
|
on: [pull_request]
|
|
|
|
env:
|
|
QT_VERSION: 5.12.9
|
|
|
|
jobs:
|
|
build_linux:
|
|
strategy:
|
|
matrix:
|
|
configuration: [Debug, Release]
|
|
compiler: [gcc-5, gcc-10, clang-9]
|
|
cmake_options: [""]
|
|
include:
|
|
# Also include configurations that check if the code compiles without the graphics backends
|
|
- configuration: Debug
|
|
compiler: gcc-10
|
|
cmake_options: -DFSO_BUILD_WITH_OPENGL=OFF -DFSO_BUILD_WITH_VULKAN=OFF
|
|
- configuration: Release
|
|
compiler: gcc-10
|
|
cmake_options: -DFSO_BUILD_WITH_OPENGL=OFF -DFSO_BUILD_WITH_VULKAN=OFF
|
|
name: Linux
|
|
runs-on: ubuntu-latest
|
|
container: ghcr.io/scp-fs2open/linux_build:sha-8a6bbbe
|
|
steps:
|
|
- name: Cache Qt
|
|
id: cache-qt-lin
|
|
uses: actions/cache@v1
|
|
with:
|
|
path: ${{ github.workspace }}/../Qt
|
|
key: ${{ runner.os }}-QtCache-${{ env.QT_VERSION }}
|
|
- name: Install Qt
|
|
uses: jurplel/install-qt-action@v2
|
|
with:
|
|
version: ${{ env.QT_VERSION }}
|
|
dir: ${{ github.workspace }}/..
|
|
cached: ${{ steps.cache-qt-lin.outputs.cache-hit }}
|
|
setup-python: 'false'
|
|
aqtversion: ==1.1.3
|
|
|
|
- uses: actions/checkout@v1
|
|
name: Checkout
|
|
with:
|
|
submodules: true
|
|
fetch-depth: 0
|
|
- name: ccache
|
|
uses: hendrikmuhs/ccache-action@v1
|
|
with:
|
|
key: ${{ runner.os }}-${{ matrix.configuration }}-${{ matrix.compiler }}
|
|
|
|
- name: Configure CMake
|
|
env:
|
|
CONFIGURATION: ${{ matrix.configuration }}
|
|
COMPILER: ${{ matrix.compiler }}
|
|
JOB_CMAKE_OPTIONS: ${{ matrix.cmake_options }}
|
|
run: $GITHUB_WORKSPACE/ci/linux/configure_cmake.sh
|
|
- name: Compile
|
|
working-directory: ./build
|
|
run: LD_LIBRARY_PATH=$Qt5_DIR/lib:$LD_LIBRARY_PATH ninja -k 20 all
|
|
- name: Run Tests
|
|
working-directory: ./build
|
|
env:
|
|
CONFIGURATION: ${{ matrix.configuration }}
|
|
XDG_RUNTIME_DIR: /root
|
|
run: $GITHUB_WORKSPACE/ci/linux/run_tests.sh
|
|
- name: Run Clang Tidy
|
|
# Clang-tidy reuses the precompiled headers so this only makes sense for the clang compilers
|
|
if: startsWith(matrix.compiler, 'clang-')
|
|
run: $GITHUB_WORKSPACE/ci/linux/clang_tidy.sh ${{ github.event.pull_request.base.sha }} ${{ github.event.pull_request.head.sha }}
|
|
- name: Process clang-tidy warnings
|
|
if: startsWith(matrix.compiler, 'clang-')
|
|
uses: asarium/clang-tidy-action@v1
|
|
with:
|
|
fixesFile: clang-fixes.yaml
|
|
|
|
build_windows:
|
|
strategy:
|
|
matrix:
|
|
configuration: [Debug, Release]
|
|
compiler: [MSVC]
|
|
arch: [Win32, x64]
|
|
name: Windows
|
|
runs-on: windows-2019
|
|
steps:
|
|
- name: Prepare Environment
|
|
run: choco install ninja
|
|
- uses: actions/checkout@v1
|
|
name: Checkout
|
|
with:
|
|
submodules: true
|
|
- name: Cache Qt
|
|
id: cache-qt-win
|
|
uses: actions/cache@v1
|
|
with:
|
|
path: ${{ github.workspace }}/../Qt
|
|
key: ${{ runner.os }}-${{ matrix.arch }}-QtCache-${{ env.QT_VERSION }}
|
|
- name: Install Qt (32 bit)
|
|
uses: jurplel/install-qt-action@v2
|
|
if: ${{ matrix.compiler == 'MSVC' && matrix.arch == 'Win32' }}
|
|
with:
|
|
version: ${{ env.QT_VERSION }}
|
|
dir: ${{ github.workspace }}/..
|
|
arch: win32_msvc2017
|
|
cached: ${{ steps.cache-qt-win.outputs.cache-hit }}
|
|
aqtversion: ==0.8
|
|
- name: Install Qt (64 bit)
|
|
uses: jurplel/install-qt-action@v2
|
|
if: ${{ matrix.compiler == 'MSVC' && matrix.arch == 'x64' }}
|
|
with:
|
|
version: ${{ env.QT_VERSION }}
|
|
dir: ${{ github.workspace }}/..
|
|
arch: win64_msvc2017_64
|
|
cached: ${{ steps.cache-qt-win.outputs.cache-hit }}
|
|
aqtversion: ==0.8
|
|
|
|
- name: Configure CMake
|
|
env:
|
|
CONFIGURATION: ${{ matrix.configuration }}
|
|
COMPILER: ${{ matrix.compiler }}
|
|
ARCHITECTURE: ${{ matrix.arch }}
|
|
shell: bash
|
|
run: |
|
|
mkdir build
|
|
cd build
|
|
|
|
if [ "$COMPILER" = "MinGW" ]; then
|
|
cmake -DFSO_USE_SPEECH="OFF" -DFSO_FATAL_WARNINGS="ON" -DFSO_USE_VOICEREC="OFF" -DFSO_BUILD_TESTS="ON" \
|
|
-DFSO_BUILD_FRED2="OFF" -DCMAKE_BUILD_TYPE=$CONFIGURATION -G "Ninja" ..
|
|
else
|
|
cmake -DFSO_USE_SPEECH="ON" -DFSO_FATAL_WARNINGS="ON" -DFSO_USE_VOICEREC="OFF" -DFSO_BUILD_TESTS="ON" \
|
|
-DMSVC_SIMD_INSTRUCTIONS=SSE2 -DFSO_BUILD_FRED2="ON" -G "Visual Studio 16 2019" \
|
|
-DFSO_BUILD_QTFRED=ON -T "v142" -A "$ARCHITECTURE" ..
|
|
fi
|
|
- name: Compile
|
|
working-directory: ./build
|
|
env:
|
|
CONFIGURATION: ${{ matrix.configuration }}
|
|
COMPILER: ${{ matrix.compiler }}
|
|
shell: bash
|
|
run: |
|
|
if [ "$COMPILER" = "MinGW" ]; then
|
|
cmake --build . --config "$CONFIGURATION"
|
|
else
|
|
cmake --build . --config "$CONFIGURATION" -- /verbosity:minimal
|
|
fi
|
|
- name: Run Tests
|
|
working-directory: ./build
|
|
env:
|
|
CONFIGURATION: ${{ matrix.configuration }}
|
|
COMPILER: ${{ matrix.compiler }}
|
|
shell: bash
|
|
run: |
|
|
if [ "$COMPILER" = "MinGW" ]; then
|
|
./bin/unittests --gtest_shuffle
|
|
else
|
|
"./bin/$CONFIGURATION/unittests" --gtest_shuffle
|
|
fi
|
|
|
|
build_mac:
|
|
strategy:
|
|
matrix:
|
|
configuration: [Debug, Release]
|
|
compiler: [clang]
|
|
arch: [x86_64]
|
|
cmake_options: [""]
|
|
name: Mac
|
|
runs-on: macos-latest
|
|
steps:
|
|
- name: Cache Qt
|
|
id: cache-qt-mac
|
|
uses: actions/cache@v1
|
|
with:
|
|
path: ${{ github.workspace }}/../Qt
|
|
key: ${{ runner.os }}-QtCache-${{ env.QT_VERSION }}
|
|
- name: Install Qt
|
|
uses: jurplel/install-qt-action@v2
|
|
with:
|
|
version: ${{ env.QT_VERSION }}
|
|
dir: ${{ github.workspace }}/..
|
|
cached: ${{ steps.cache-qt-mac.outputs.cache-hit }}
|
|
setup-python: 'false'
|
|
aqtversion: ==1.1.3
|
|
|
|
- uses: actions/checkout@v1
|
|
name: Checkout
|
|
with:
|
|
submodules: true
|
|
fetch-depth: 0
|
|
- name: ccache
|
|
uses: hendrikmuhs/ccache-action@v1
|
|
with:
|
|
key: ${{ runner.os }}-${{ matrix.configuration }}-${{ matrix.compiler }}
|
|
|
|
- name: Configure CMake
|
|
env:
|
|
CONFIGURATION: ${{ matrix.configuration }}
|
|
COMPILER: ${{ matrix.compiler }}
|
|
ARCHITECTURE: ${{ matrix.arch }}
|
|
JOB_CMAKE_OPTIONS: ${{ matrix.cmake_options }}
|
|
run: $GITHUB_WORKSPACE/ci/linux/configure_cmake.sh
|
|
- name: Compile
|
|
working-directory: ./build
|
|
run: LD_LIBRARY_PATH=$Qt5_DIR/lib:$LD_LIBRARY_PATH ninja all
|
|
- name: Run Tests
|
|
working-directory: ./build
|
|
env:
|
|
CONFIGURATION: ${{ matrix.configuration }}
|
|
XDG_RUNTIME_DIR: /root
|
|
run: $GITHUB_WORKSPACE/ci/linux/run_tests.sh
|
|
- name: Run Clang Tidy
|
|
# Clang-tidy reuses the precompiled headers so this only makes sense for the clang compilers
|
|
if: startsWith(matrix.compiler, 'clang-')
|
|
run: $GITHUB_WORKSPACE/ci/linux/clang_tidy.sh ${{ github.event.pull_request.base.sha }} ${{ github.event.pull_request.head.sha }}
|
|
- name: Process clang-tidy warnings
|
|
if: startsWith(matrix.compiler, 'clang-')
|
|
uses: asarium/clang-tidy-action@v1
|
|
with:
|
|
fixesFile: clang-fixes.yaml |