Skip to content

Heretic: Fix bug with nightmare like monster respawn was happening on… #1906

Heretic: Fix bug with nightmare like monster respawn was happening on…

Heretic: Fix bug with nightmare like monster respawn was happening on… #1906

name: Continuous Integration
on:
push:
branches: ["*"]
tags-ignore: ["*"]
pull_request:
branches: ["*"]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
Windows:
name: ${{ matrix.config.display_name }}
runs-on: ${{ matrix.config.runner }}
strategy:
fail-fast: false
matrix:
config:
-
display_name: "Windows | x64 | GCC"
runner: "windows-2025"
shell: "msys2 {0}"
msys_msystem: "UCRT64"
msys_prefix: "ucrt-x86_64"
compiler_name: "gcc"
cmake_preset: 'ci-msys2-dev'
build_suffix: "x64-gcc"
-
display_name: "Windows | x64 | Clang"
runner: "windows-2025"
shell: "msys2 {0}"
msys_msystem: "CLANG64"
msys_prefix: "clang-x86_64"
compiler_name: "clang"
cmake_preset: 'ci-msys2-dev'
build_suffix: "x64-clang"
-
display_name: "Windows | x86"
runner: "windows-2025"
shell: "bash"
msvc_triplet: "x86-windows"
msvc_triplet_path: 'cmake/triplets/x86-windows.cmake'
compiler_name: "cl"
cmake_preset: 'ci-msvc-86-dev'
build_suffix: "x86"
-
display_name: "Windows | x64"
runner: "windows-2025"
shell: "bash"
msvc_triplet: "x64-windows"
msvc_triplet_path: 'cmake/triplets/x64-windows.cmake'
compiler_name: "cl"
cmake_preset: 'ci-msvc-64-dev'
build_suffix: "x64"
permissions:
actions: write
defaults:
run:
shell: ${{ matrix.config.shell }}
env:
VCPKG_BINARY_SOURCES: "clear;files,${{ github.workspace }}/vcpkg_cache,readwrite"
steps:
- name: Setup MSYS env
if: matrix.config.compiler_name != 'cl'
timeout-minutes: 10
uses: msys2/setup-msys2@v2
with:
msystem: ${{ matrix.config.msys_msystem }}
update: true
install: >-
mingw-w64-${{ matrix.config.msys_prefix }}-pkgconf
mingw-w64-${{ matrix.config.msys_prefix }}-${{ matrix.config.compiler_name }}
mingw-w64-${{ matrix.config.msys_prefix }}-gdb
mingw-w64-${{ matrix.config.msys_prefix }}-ninja
mingw-w64-${{ matrix.config.msys_prefix }}-cmake
mingw-w64-${{ matrix.config.msys_prefix }}-SDL2
mingw-w64-${{ matrix.config.msys_prefix }}-SDL2_net
mingw-w64-${{ matrix.config.msys_prefix }}-SDL2_mixer
mingw-w64-${{ matrix.config.msys_prefix }}-libsamplerate
git
- name: Restore MSVC cache
if: matrix.config.build_suffix == 'x86'
id: msvc_cache
uses: actions/cache/restore@v4
with:
path: ${{ github.workspace }}/choco_cache
key: vs-${{ matrix.config.msvc_triplet }}
- name: Install MSVC 2019
if: matrix.config.build_suffix == 'x86'
run: |
choco config set cacheLocation "${{ github.workspace }}/choco_cache"
choco install visualstudio2019buildtools --package-parameters " \
--add Microsoft.VisualStudio.Component.VC.Tools.x86.x64 \
--add Microsoft.VisualStudio.Component.WinXP \
--add Microsoft.VisualStudio.Component.VC.v141.x86.x64"
cd "${{ github.workspace }}/choco_cache" && rm **.log **log.txt
# cp "${{ github.workspace }}/choco_cache/$(cd "${{ github.workspace }}/choco_cache" && ls | grep -E "dd_setup_[0-9]+.log" | tail -1)" "${{ github.workspace }}/vs_log.txt"
# - name: upload log
# if: matrix.config.build_suffix == 'x86'
# uses: actions/upload-artifact@v4
# with:
# name: vs_log
# path: vs_log.txt
# Delete the old cache on hit to emulate a cache update.
# The actions/cache@v4 action doesn't update cache on hit,
# and we don't have a way to add a toolset version to key before it is installed.
- name: Delete MSVC cache
if: matrix.config.build_suffix == 'x86' && steps.msvc_cache.outputs.cache-hit
continue-on-error: true
env:
GH_TOKEN: ${{ github.token }}
run: gh cache delete --repo ${{ github.repository }} ${{ steps.msvc_cache.outputs.cache-primary-key }}
- name: Save MSVC cache
if: matrix.config.build_suffix == 'x86'
uses: actions/cache/save@v4
with:
path: ${{ github.workspace }}/choco_cache
key: ${{ steps.msvc_cache.outputs.cache-primary-key }}
- name: Bootstrap VCPKG
if: matrix.config.compiler_name == 'cl'
run: |
cd $VCPKG_INSTALLATION_ROOT
echo "vcpkg revision: $(git rev-parse HEAD)"
./bootstrap-vcpkg.sh -disableMetrics
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Restore VCPKG dependencies cache
if: matrix.config.compiler_name == 'cl'
id: vcpkg_cache
uses: actions/cache/restore@v4
with:
path: ${{ github.workspace }}/vcpkg_cache
key: vcpkg-${{ matrix.config.msvc_triplet }}-${{ hashFiles('vcpkg.json', matrix.config.msvc_triplet_path) }}
restore-keys: vcpkg-${{ matrix.config.msvc_triplet }}-
- name: Configure & Build & Test
id: configure
env:
CC: ${{ matrix.config.compiler_name }}
run: |
export MAKEFLAGS=--keep-going
cmake --workflow --preset "${{ matrix.config.cmake_preset }}"
git_version=$(cmake -P ./cmake/scripts/UpdateRevision.cmake "git" 2>&1)
echo "version=$git_version" >> $GITHUB_OUTPUT
# Delete the old cache on hit to emulate a cache update.
# The actions/cache@v4 action doesn't update cache on hit,
# and we don't have a way to add package versions to key before they are installed.
- name: Delete VCPKG dependencies cache
if: matrix.config.compiler_name == 'cl' && steps.vcpkg_cache.outputs.cache-hit
continue-on-error: true
env:
GH_TOKEN: ${{ github.token }}
run: gh cache delete --repo ${{ github.repository }} ${{ steps.vcpkg_cache.outputs.cache-primary-key }}
- name: Save VCPKG dependencies cache
if: matrix.config.compiler_name == 'cl'
uses: actions/cache/save@v4
with:
path: ${{ github.workspace }}/vcpkg_cache
key: ${{ steps.vcpkg_cache.outputs.cache-primary-key }}
- name: Install
if: |
github.repository == 'Russian-Doom/russian-doom' &&
github.event_name == 'push' &&
github.ref == 'refs/heads/master'
run: |
cmake --install build --config RelWithDebInfo --prefix "./build/install"
- name: Package Zip
if: |
github.repository == 'Russian-Doom/russian-doom' &&
github.event_name == 'push' &&
github.ref == 'refs/heads/master'
uses: actions/upload-artifact@v4
with:
name: russian-doom-${{ steps.configure.outputs.version }}-windows-${{ matrix.config.build_suffix }}
path: ./build/install/
Linux:
name: Linux | ${{ matrix.distro.display_name }} | ${{ matrix.platform.arch }}
runs-on: ${{ matrix.platform.runner }}
strategy:
fail-fast: false
matrix:
distro:
-
display_name: Debian
distro: debian
package: deb
dockerfile: '.devcontainer/Debian.dockerfile'
-
display_name: Fedora
distro: fedora
package: rpm
dockerfile: '.devcontainer/Fedora.dockerfile'
platform:
-
runner: 'ubuntu-24.04'
arch: "x64"
-
runner: 'ubuntu-24.04-arm'
arch: "arm64"
defaults:
run:
shell: bash
steps:
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
with:
install: true
driver: docker
# Invalidate cache for docker toolchain images every month to update dependencies
- name: Get build month for Docker cache
id: date
run: echo "date=$(date +'%Y%m')" >> $GITHUB_OUTPUT
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Cache Docker images
uses: AndreKurait/docker-cache@0.6.0
with:
key: docker-${{ matrix.platform.arch }}-${{ hashFiles(matrix.distro.dockerfile) }}-${{ steps.date.outputs.date }}
- name: Toolchain & Configure & Build & Test & Package
id: configure
run: |
chmod 777 .
./crosscompile_linux_packages.sh ci ${{ matrix.distro.distro }}
git_version=$(cmake -P ./cmake/scripts/UpdateRevision.cmake "git" 2>&1)
echo "version=$git_version" >> $GITHUB_OUTPUT
- name: Upload package
if: |
github.repository == 'Russian-Doom/russian-doom' &&
github.event_name == 'push' &&
github.ref == 'refs/heads/master'
uses: actions/upload-artifact@v4
with:
name: russian-doom-${{ steps.configure.outputs.version }}-linux-${{ matrix.distro.package }}-${{ matrix.platform.arch }}
path: ./build/*.${{ matrix.distro.package }}