Add GitHub Actions workflow.

This commit is contained in:
Daniel Svensson 2023-12-24 15:30:17 +01:00
parent ab1e8d321a
commit 3b6cd9aac0

98
.github/workflows/main.yml vendored Normal file
View file

@ -0,0 +1,98 @@
name: main
on: [ push, pull_request, workflow_dispatch ]
jobs:
cmake:
strategy:
matrix:
os: [ ubuntu-latest ]
profile: [ "Debug", "Release" ]
runs-on: ${{ matrix.os }}
steps:
- name: Get number of CPU cores
uses: SimenB/github-actions-cpu-cores@v1
id: cpu-cores
- uses: actions/checkout@v4
- name: "Install Dependencies"
run: |
sudo apt-get -qq update
sudo apt-get -qq install --no-install-recommends \
gettext \
libasound2-dev \
libbullet-dev \
libgnutls28-dev \
libopenxr-dev \
libqscintilla2-qt5-dev \
libsdl2-dev \
libvorbis-dev \
libvulkan-dev \
libwayland-dev \
libxcursor-dev \
libxkbcommon-dev \
libxrandr-dev \
qtbase5-dev
# Disabled due to warnings that break the debug build with -Werror
# libode-dev
# libavcodec-dev libavformat-dev libavutil-dev libswscale-dev
- name: "Configure: ${{ matrix.profile }}"
run: |
cmake -B build_${{ matrix.profile }} -DCMAKE_BUILD_TYPE=${{ matrix.profile }}
- name: "Build: ${{ matrix.profile }}"
run: |
cmake --build build_${{ matrix.profile }} --parallel ${{ steps.cpu-cores.outputs.count }}
wasm:
strategy:
# Concurrent builds currently broken:
# https://github.com/mymindstorm/setup-emsdk/issues/20
matrix:
emsdk: [ "2.0.12" ] #, "3.1.8", "3.1.51" ]
profile: [ "rel" ] #, "dbg" ]
runs-on: ubuntu-latest
steps:
- name: Get number of CPU cores
uses: SimenB/github-actions-cpu-cores@v1
id: cpu-cores
- uses: actions/checkout@v4
- uses: mymindstorm/setup-emsdk@v13
with:
version: ${{ matrix.emsdk }}
actions-cache-folder: "emsdk-cache-${{ matrix.emsdk }}"
- name: Verify emscripten
run: emcc -v
- name: Build dependencies
working-directory: engine
run: |
make -j ${{ steps.cpu-cores.outputs.count }} makelibs FTE_TARGET=web
- name: Build wasm
working-directory: engine
run: |
# Currently fails to build
sed -r -i '/define Q3(CLIENT|SERVER)/d' common/config_fteqw.h
make -j ${{ steps.cpu-cores.outputs.count }} FTE_TARGET=web web-${{ matrix.profile }}
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: fteqw-web-${{ matrix.profile }}-em${{ matrix.emsdk }}
path: |
engine/*/ftewebgl.js
engine/*/ftewebgl.html
engine/*/ftewebgl.wasm
compression-level: 9